【问题标题】:Is there anyway you can check what API calls is the Azure CLI doing under the hood?无论如何,您是否可以检查 Azure CLI 在后台执行哪些 API 调用?
【发布时间】:2020-08-04 07:36:54
【问题描述】:

我正在使用适用于 Azure 的 Python SDK,但我可以看到文档缺少适当的信息和示例。我知道 Azure CLI 构建在 Azure 的 Python SDK 之上,因此我想知道是否有任何方法可以知道 Python 函数在执行时调用了什么,例如:"az vm show"

这样,我可以轻松地使用 Azure CLI 构建命令并将其转换为 Python 代码。

谢谢!

【问题讨论】:

    标签: python-3.x azure azure-cli


    【解决方案1】:

    您可以看到 Python 进程发出的底层 API。

    为此,您可以使用 fiddler 或任何可以捕获流量的客户端应用程序。

    对于 Fiddler,您可以从 here 下载和安装

    您将启用解密 HTTPS 流量,因为通过 CLI 到 Azure 的所有流量都是通过 HTTPS 完成的。更多信息请参考this

    正在运行的 Fiddler 现在将充当代理并捕获所有网络流量。

    但是,您将能够在 Fiddler 就位(代理)的情况下直接运行 Azure CLI。您必须将 Fiddler 的证书添加到 CLI 的证书中。

    提琴手证书可以在 http://localhost:8888 找到。您必须导出证书并将其转换为 PEM 格式。导出的格式为 .CRT

    您可以像提到的here 那样在本地执行此操作,也可以使用在线工具执行此示例:https://www.sslshopper.com/ssl-converter.html

    获得 PEM 证书后 - 将其内容附加到 CLI 使用的证书文件中:

    C:\Program Files (x86)\Microsoft SDKs\Azure\CLI2\Lib\site-packages\certifi\cacert.pem

    <Original cacert.pem>
    
    -----BEGIN CERTIFICATE-----
    <Your proxy's certificate here>
    -----END CERTIFICATE-----
    

    现在您将能够拦截从 python 进程发出的流量。

    更多信息记录在here

    【讨论】:

    • @drycon43 - Python 进程发出带有必要标头和请求正文的 API 请求。 API 端点将成为核心,并将成为增值。以上方法将帮助您获取API。
    【解决方案2】:

    这是我的解决方法:

    from azure.common.credentials import ServicePrincipalCredentials
    from azure.mgmt.compute import ComputeManagementClient
    
    Subscription_Id = "xxxxxxx"
    Tenant_Id = "xxxxxxx"
    Client_Id = "xxxxxxx"
    Secret = "xxxxxxx"
    
    credential = ServicePrincipalCredentials(
            client_id=Client_Id,
            secret=Secret,
            tenant=Tenant_Id
            )
    
    client = ComputeManagementClient(credential, Subscription_Id)
    vmDetails = client.virtual_machines.get(resource_group_name='xxxxxxx', vm_name='xxxxxxx')
    print(vmDetails)
    

    【讨论】:

    • 嗨帕梅拉,谢谢你的回答,但它并没有为我的问题提供真正的答案。
    • @drycon43 没有直接将 CLI 转换为 Python 的方法。你需要找到 Python 的 azure 函数,这个link 显示了 Azure 虚拟机库。如需更多参考,请参阅here
    猜你喜欢
    • 2023-03-27
    • 1970-01-01
    • 2021-05-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-11-16
    • 2018-12-11
    相关资源
    最近更新 更多