Azure SDK for Python 是一个专为 Python 开发者设计,用于与 Azure 服务进行交互的软件开发工具包。它支持开发者在 Python 环境中构建、部署和管理 Azure 上的各类资源。本文旨在为希望深入了解或使用 Azure SDK for Python 的开发者提供全面的信息和指导。

简介

Azure SDK for Python 的 GitHub 仓库 (Azure/azure-sdk-for-python) 是其活跃开发的主阵地。对于希望使用此 SDK 的开发者,官方建议访问公开的开发者文档或带版本号的开发者文档。这些文档提供了详细的入门指南、API 参考和使用示例,帮助开发者快速上手。

开始使用

Azure SDK for Python 采用模块化设计,每个 Azure 服务都有独立的库。这意味着开发者可以根据实际需求选择性地引入所需的库,而非一个庞大的整体包。要开始使用特定的库,开发者可以查阅位于 /sdk 目录下的相应库项目文件夹中的 README.mdREADME.rst 文件。

先决条件

Azure 客户端库目前支持 Python 3.9 或更高版本。有关详细的版本支持策略,请参阅 Azure SDK for Python 的版本支持政策页面。

软件包分类

Azure SDK for Python 提供的软件包主要分为以下几类,以满足不同场景和需求的开发者:

客户端库:最新发布

这部分是 Azure SDK 的新一代发布,包括已通用可用(GA)和处于预览阶段的库。这些库主要用于与现有 Azure 资源进行交互和数据操作,例如上传 Blob 文件。它们共享一系列核心功能,如重试机制、日志记录、传输协议和身份验证协议等,这些功能统一由 azure-core 库提供。这些新库严格遵循 Azure SDK Python 设计指南,确保了一致的开发体验。

请注意,若需确保代码在生产环境中稳定运行,建议使用稳定版而非预览版库。最新的软件包列表可在官方发布页面查看。

客户端库:历史版本

这些是此前发布的稳定版软件包,已在生产环境中广泛应用。它们同样提供与 Azure 资源交互的功能,但可能未完全实现最新的设计指南或包含新版本的所有功能。不过,这些历史版本通常能覆盖更广泛的 Azure 服务。

管理库:最新发布

新一代的 Azure 管理库同样遵循 Azure SDK Python 设计指南。这些库提供了一系列核心功能,包括直观的 Azure Identity 库、带有自定义策略的 HTTP 管道、统一的错误处理、分布式追踪等。这些库的文档和代码示例丰富,并提供了从旧版本库迁移的详细指南,尤其是在升级后遇到身份验证问题时,迁移指南能提供正确的指导。

最新的管理软件包列表可在官方发布页面查看。同样,对于生产环境应用,推荐使用稳定版管理库。

管理库:历史版本

这部分包含用于配置和管理 Azure 资源的完整管理库列表。这些库可能不具备最新版本的所有功能集,但它们通常提供更广泛的服务覆盖。管理库通常以 azure-mgmt- 开头的命名空间标识,例如 azure-mgmt-compute

获取帮助

在开发过程中遇到问题时,可以通过以下途径获取帮助:

  • 详细文档:访问 Azure SDK for Python 官方文档。
  • GitHub Issues:通过 GitHub 仓库提交问题。
  • StackOverflow:在 StackOverflow 上使用 azurepython 标签搜索或提出新问题。

数据收集与隐私

Azure SDK for Python 软件可能会收集有关用户及其使用情况的信息,并将其发送至 Microsoft。Microsoft 可能利用这些信息来提供服务并改进产品。用户可以根据以下说明关闭遥测数据收集。有关数据收集和使用的更多信息,请参阅帮助文档和 Microsoft 的隐私声明,以及遥测指南页面。

遥测配置

遥测数据收集默认开启。要选择退出,可以在客户端构建时禁用遥测。这需要定义一个继承自 UserAgentPolicyNoUserAgentPolicy 类,并使其 on_request 方法不执行任何操作。然后在创建客户端时,将此类的实例作为 user_agent_policy=NoUserAgentPolicy() 参数传入。这将禁用客户端所有方法的遥测功能。对于每个新创建的客户端,都需要重复此操作。

以下示例以 azure-storage-blob 包为例:

import os
from azure.identity import ManagedIdentityCredential
from azure.storage.blob import BlobServiceClient
from azure.core.pipeline.policies import UserAgentPolicy
mi_credential = ManagedIdentityCredential()

account_url = "https://<storageaccountname>.blob.core.windows.net"
class NoUserAgentPolicy(UserAgentPolicy):
    def on_request(self, request):
        pass
blob_service_client = BlobServiceClient(account_url, credential=mi_credential, user_agent_policy=NoUserAgentPolicy())

container_client = blob_service_client.get_container_client(container="<container_name>") 

安全问题报告

安全问题和漏洞应私下报告。请通过电子邮件发送至 Microsoft 安全响应中心(MSRC)邮箱 [email protected]。通常会在 24 小时内收到回复。如果未收到回复,请再次发送电子邮件以确保原邮件已送达。更多信息,包括 MSRC PGP 密钥,可在安全技术中心找到。

贡献指南

欢迎对本项目做出贡献和提出建议。大多数贡献要求您同意一份贡献者许可协议(CLA),声明您有权并确实授予 Microsoft 使用您贡献的权利。详情请访问 Microsoft CLA 页面。

当您提交拉取请求时,CLA-bot 会自动判断您是否需要提供 CLA,并相应地标记 PR(例如,添加标签、评论)。只需遵循机器人提供的指示即可。在所有使用 Microsoft CLA 的仓库中,您只需执行一次此操作。

本项目已采纳 Microsoft 开源行为准则。如需更多信息,请查阅行为准则 FAQ 或通过电子邮件联系 [email protected]

总结

Azure SDK for Python 致力于为开发者提供一套强大、模块化且不断更新的工具,以便高效地利用 Azure 云服务。无论您是消费现有资源,还是管理基础设施,Azure SDK for Python 都提供了全面的支持。通过查阅官方文档、利用社区资源并遵循贡献指南,开发者可以充分发挥其潜力。

查看更多详情