【Azure Developer】使用Python SDK去Azure Container Instance服务的Execute命令的疑问解释

简介: Azure 容器实例(Azure Container Instances,简称 ACI)是一个无服务器容器解决方案,允许用户在 Azure 云环境中运行 Docker 容器,而无需设置虚拟机、集群或编排器。ACI 适用于任何可以在隔离容器中操作的场景,包括事件驱动的应用程序、从容器开发管道快速部署、数据处理和生成作业。

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


当在复杂的环境中面临问题,格物之道需:浊而静之徐清,安以动之徐生。 云中,恰是如此!

目录
打赏
0
1
1
0
203
分享
相关文章
【Azure Developer】分享两段Python代码处理表格(CSV格式)数据 : 根据每列的内容生成SQL语句
本文介绍了使用Python Pandas处理数据收集任务中格式不统一的问题。针对两种情况:服务名对应多人拥有状态(1/0表示),以及服务名与人名重复列的情况,分别采用双层for循环和字典数据结构实现数据转换,最终生成Name对应的Services列表(逗号分隔)。此方法高效解决大量数据的人工处理难题,减少错误并提升效率。文中附带代码示例及执行结果截图,便于理解和实践。
探秘文件共享服务之哈希表助力 Python 算法实现
在数字化时代,文件共享服务不可或缺。哈希表(散列表)通过键值对存储数据,利用哈希函数将键映射到特定位置,极大提升文件上传、下载和搜索效率。例如,在大型文件共享平台中,文件名等信息作为键,物理地址作为值存入哈希表,用户检索时快速定位文件,减少遍历时间。此外,哈希表还用于文件一致性校验,确保传输文件未被篡改。以Python代码示例展示基于哈希表的文件索引实现,模拟文件共享服务的文件索引构建与检索功能。哈希表及其分布式变体如一致性哈希算法,保障文件均匀分布和负载均衡,持续优化文件共享服务性能。
【Azure Developer】编写Python SDK代码实现从China Azure中VM Disk中创建磁盘快照Snapshot
本文介绍如何使用Python SDK为中国区微软云(China Azure)中的虚拟机磁盘创建快照。通过Azure Python SDK的Snapshot Class,指定`location`和`creation_data`参数,使用`Copy`选项从现有磁盘创建快照。代码示例展示了如何配置Default Azure Credential,并设置特定于中国区Azure的`base_url`和`credential_scopes`。参考资料包括官方文档和相关API说明。
|
2月前
|
The Instance Class Static Magic Method in Python
So what is the difference between the Instance method, the Class method and the Static method?
33 8
Python执行Shell命令并获取结果:深入解析与实战
通过以上内容,开发者可以在实际项目中灵活应用Python执行Shell命令,实现各种自动化任务,提高开发和运维效率。
93 20
【Azure Storage Account】利用App Service作为反向代理, 并使用.NET Storage Account SDK实现上传/下载操作
本文介绍了如何在Azure上使用App Service作为反向代理,以自定义域名访问Storage Account。主要内容包括: 1. **设置反向代理**:通过配置`applicationhost.xdt`和`web.config`文件,启用IIS代理功能并设置重写规则。 2. **验证访问**:测试原生URL和自定义域名的访问效果,确保两者均可正常访问Storage Account。 3. **.NET SDK连接**:使用共享访问签名(SAS URL)初始化BlobServiceClient对象,实现通过自定义域名访问存储服务。
使用Python执行Shell命令并获取结果
在实际应用中,可以根据需要选择适当的参数和方法来执行Shell命令,并处理可能出现的各种情况。无论是系统管理、自动化任务还是数据处理,掌握这些技巧都将极大地提高工作效率。
119 12
【Azure Developer】Python代码调用Graph API将外部用户添加到组,结果无效,也无错误信息
根据Graph API文档,在单个请求中将多个成员添加到组时,Python代码示例中的`members@odata.bind`被错误写为`members@odata_bind`,导致用户未成功添加。
65 10

热门文章

最新文章