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

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

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

相关文章
|
10月前
|
SQL 自然语言处理 数据库
【Azure Developer】分享两段Python代码处理表格(CSV格式)数据 : 根据每列的内容生成SQL语句
本文介绍了使用Python Pandas处理数据收集任务中格式不统一的问题。针对两种情况:服务名对应多人拥有状态(1/0表示),以及服务名与人名重复列的情况,分别采用双层for循环和字典数据结构实现数据转换,最终生成Name对应的Services列表(逗号分隔)。此方法高效解决大量数据的人工处理难题,减少错误并提升效率。文中附带代码示例及执行结果截图,便于理解和实践。
281 4
|
安全 网络安全 文件存储
思科设备巡检命令Python脚本大集合
【10月更文挑战第18天】
627 1
思科设备巡检命令Python脚本大集合
|
11月前
|
API 开发工具 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说明。
211 1
|
运维 Shell 数据库
Python执行Shell命令并获取结果:深入解析与实战
通过以上内容,开发者可以在实际项目中灵活应用Python执行Shell命令,实现各种自动化任务,提高开发和运维效率。
359 20
|
分布式计算 MaxCompute 对象存储
|
安全 Shell 数据处理
使用Python执行Shell命令并获取结果
在实际应用中,可以根据需要选择适当的参数和方法来执行Shell命令,并处理可能出现的各种情况。无论是系统管理、自动化任务还是数据处理,掌握这些技巧都将极大地提高工作效率。
426 12
|
JavaScript API C#
【Azure Developer】Python代码调用Graph API将外部用户添加到组,结果无效,也无错误信息
根据Graph API文档,在单个请求中将多个成员添加到组时,Python代码示例中的`members@odata.bind`被错误写为`members@odata_bind`,导致用户未成功添加。
170 10
|
API Python
【Azure Developer】分享一段Python代码调用Graph API创建用户的示例
分享一段Python代码调用Graph API创建用户的示例
173 11
|
Python
Python PDB命令介绍
【10月更文挑战第15天】 使用PDB的方式有两种,其中一种是在脚本中添加代码,不觉得这种方式比print好在哪里,所以这种方式此文不表。这里我们只学习PDB的命令行使用方式
376 4
|
机器学习/深度学习 缓存 PyTorch
pytorch学习一(扩展篇):miniconda下载、安装、配置环境变量。miniconda创建多版本python环境。整理常用命令(亲测ok)
这篇文章是关于如何下载、安装和配置Miniconda,以及如何使用Miniconda创建和管理Python环境的详细指南。
6219 0
pytorch学习一(扩展篇):miniconda下载、安装、配置环境变量。miniconda创建多版本python环境。整理常用命令(亲测ok)

推荐镜像

更多