Azure Container Instance服务介绍

Azure 容器实例(Azure Container Instances,简称 ACI)是一个无服务器容器解决方案,允许用户在 Azure 云环境中运行 Docker 容器,而无需设置虚拟机、集群或编排器。

ACI 适用于任何可以在隔离容器中操作的场景,包括事件驱动的应用程序、从容器开发管道快速部署、数据处理和生成作业。

Execute 命令的目的是在运行中的容器实例中执行命令。

这在应用程序开发和故障排除期间特别有用,最常见的用途是启动交互式 shell,以便在运行中的容器中调试问题

问题描述

使用命令行 az container exec 之后,会进入这个容器里,并且有一个窗口进行交互。

命令如下:

az container exec --resource-group <container_instance_rg> --name <testcontainer-instance> --container-name <testcontainer-instance> --exec-command "/bin/bash"

结果如下:

但是,如果调用Python SDK 以及REST API去调用 Execute 执行命令,返回的内容确实一个 webSocketUri 加 password 的JSON对象。

难道这个同一个命令,两种执行方式的差异吗?为什么表现得结果如此不同呢?

问题解答

经过调查和研究 Containers - Execute Command - REST API (Azure Container Instances) | Microsoft Learn 这个文档,  az container exec 和 Python SDK一样,都是调用得REST API 执行指令. 只是执行az命令得 CMD 窗口自动解析了命令返回得 webSockerUri 和 Password。所以显示出一个交互式页面。

但是,如果使用REST API或者Python SDK,需要把请求返回得Web Socket JSON对象,通过websocket 方式与目标Container进行通信, 在浏览器的Console中执行如下JavaScript脚本:

wsUri = '<webSocketUri>';
wsPass = '<password>';
var aWebSocket = new WebSocket(wsUri);
aWebSocket.send(wsPass);

执行后的结果中,就看可以看见 root@xxxx : 内容。与 命令窗口结果一样!

所以,最终结论为:Python SDK 和 az container exec  结果完全一样,只是执行方式不一样,Python SDK返回的结果需要使用websocket的方式进行交互!

参考资料

Containers - Execute Command :https://learn.microsoft.com/en-us/rest/api/container-instances/containers/execute-command?view=rest-container-instances-2023-05-01&tabs=Python#containerexec

Web Socket Authentication :https://websockets.readthedocs.io/en/stable/topics/authentication.html

【Azure Developer】使用Python SDK去Azure Container Instance服务的Execute命令的疑问解释的更多相关文章

  1. 【Azure Developer】使用 Python SDK连接Azure Storage Account, 计算Blob大小代码示例

    问题描述 在微软云环境中,使用python SDK连接存储账号(Storage Account)需要计算Blob大小?虽然Azure提供了一个专用工具Azure Storage Explorer可以统 ...

  2. 使用Python SDK管理Azure Load Balancer

    概述 下面将演示如何使用Python SDK管理中国区Azure Load balancer.关于Azure负载均衡器的详细功能介绍,请参考官方文档. Code Sample import os fr ...

  3. 【Azure Developer】Python代码通过AAD认证访问微软Azure密钥保管库(Azure Key Vault)中机密信息(Secret)

    关键字说明 什么是 Azure Active Directory?Azure Active Directory(Azure AD, AAD) 是 Microsoft 的基于云的标识和访问管理服务,可帮 ...

  4. 【Azure Developer】Python 获取Micrisoft Graph API资源的Access Token, 并调用Microsoft Graph API servicePrincipals接口获取应用ID

    问题描述 在Azure开发中,我们时常面临获取Authorization问题,需要使用代码获取到Access Token后,在调用对应的API,如servicePrincipals接口. 如果是直接调 ...

  5. 【Azure Developer】调用SDK的runPowerShellScript方法,在Azure VM中执行PowerShell脚本示例

    当需要通过代码的方式执行PowerShell脚本时,可以参考以下的示例. Azure SDK中提供了两个方法来执行PowerShell脚本 (SDK Source Code: https://gith ...

  6. 【Azure Developer】使用Postman获取Azure AD中注册应用程序的授权Token,及为Azure REST API设置Authorization

    Azure Active Directory (Azure AD) is Microsoft's cloud-based identity and access management service, ...

  7. Connect China Azure Storage Blob By Container Token In Python SDK

    简介: 基于Python SDK,使用Container Token操作container对象.关于Token的生成可以使用Storage SDK创建,也可以使用工具快速创建供测试. 示例代码: fr ...

  8. 【Azure Developer】【Python 】使用 azure.identity 和 azure.common.credentials 获取Azure AD的Access Token的两种方式

    问题描述 使用Python代码,展示如何从Azure AD 中获取目标资源的 Access Token. 如要了解如何从AAD中获取 client id,client secret,tenant id ...

  9. 【Azure Developer】解决Azure Key Vault管理Storage的示例代码在中国区Azure遇见的各种认证/授权问题 - C# Example Code

    问题描述 使用Azure密钥保管库(Key Vault)来托管存储账号(Storage Account)密钥的示例中,从Github中下载的示例代码在中国区Azure运行时候会遇见各种认证和授权问题, ...

  10. 【Azure Developer】使用Microsoft Graph API 批量创建用户,先后遇见的三个错误及解决办法

    问题描述 在先前的一篇博文中,介绍了如何使用Microsoft Graph API来创建Azure AD用户(博文参考:[Azure Developer]使用Microsoft Graph API 如 ...

随机推荐

  1. python _XMLParser.__init__()初始化失败,提示“takes 1 positional argument but 4 were given”

    问题: 在一个新的环境下,执行openpyxl相关的操作,初始化时,逐步执行,需要调到 ElementTree.py _XMLParser.__init__(self, html, target, e ...

  2. 终端读取iOS项目所有设置参数(版本号、应用名等)

    在某些场景下(比如自动化打包等),我们需要从终端来读取到iOS项目的数据,首先先上代码 xcodebuild -showBuildSettings -target 项目target 但有时候我们需要将 ...

  3. 常用 Java 组件和框架分类

    WEB 容器 Tomcat https://tomcat.apache.org/ Jetty https://www.jetty.com/ JBoss https://www.jboss.org/ R ...

  4. nginx面试题及答案

    什么是nginx? Nginx是一个高性能的HTTP和反向代理服务器,也是一个IMAP/POP3/SMTP服务器 Nginx是一款轻量级的Web服务器/反向代理服务器及电子邮件(IMAP/POP3)代 ...

  5. 转载 | ofd转pdf最好用的软件,ofd文件如何转化成pdf?

    1.背景 需要将ofd转换为pdf 2.使用方法 使用taurusxin 开发的软件Ofd2Pdf.exe即可实现,软件版权归原作者所有.这里表示感谢! 3.下载地址 官网:https://githu ...

  6. oeasy教您玩转vim - 46 - # 范围控制

    ​ 范围控制 回忆上节课内容 这次我们主要就是看命令行 首先是选择一个 [range] 这个范围 然后进行相应的操作 :11,30d :2,7y 还可以指定寄存器 :"a3,40y :&qu ...

  7. 题解:CF1984B Large Addition

    题解:CF1984B Large Addition 题意 判断 \(n\) 是否是两个位数相同的 \(large\) 数的和. 思路 有以下三种证明方法: 最高位为 \(1\),因为两个 \(larg ...

  8. ABC348

    A link 这道题就先输出整个的\(oox\),再输出剩一个两个的. 点击查看代码 #include<bits/stdc++.h> using namespace std; int n; ...

  9. UE-自带的HotUpdate【转】

    原文链接:https://baijiahao.baidu.com/s?id=1745200406976270792&wfr=spider&for=pc 这是百度可以直接搜索到的 UE4 ...

  10. mysql面试汇总

    最近一直在关注mysql方面的面试题目,并且从最近的面试情况来看,mysql在java后端的面试中,肯定是必问的题目,所以这里有必要对这块的内容进行总结,大家可以根据下面的导图进行重点复习, 引擎 1 ...