【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说明。

问题描述

需要为中国区微软云(China Azure)中的虚拟机磁盘(VM Disk)创建快照, 官方文档中只有az cli(az snapshot create)脚本,并没有介绍使用Python SDK的办法,需要编写代码来实现快照的创建。

 

问题解答

Azure Python SDK 的 Snapshot Class文档提供了参数说明,如 location 为创建Snapshot资源的位置(必须填写,如China North 3, China East 2等)。另外,最主要的参数是 creation_data,包含Disk的详细信息。

  • create_option :列举了创建磁盘的可能来源。必填。已知值为:“Empty”、“Attach”、“FromImage”、“Import”、“Copy”、“Restore”、“Upload”、“CopyStart”、“ImportSecure”、“UploadPreparedSecure”和“Import”。本文示例是要从已有的Disk中创建快照用于复制还原,所以选择 Copy 。
  • source_resource_id:此处为源VM Disk的资源ID,如:'/subscriptions/x-x-x-x/resourceGroups/xxxxx/providers/Microsoft.Compute/disks/xxxxxxx'

 

根据以上内容,示例的Python代码如下:


from azure.identity import DefaultAzureCredential
from azure.mgmt.compute import ComputeManagementClient

# Set your subscription ID and resource group name
subscription_id = ' '
resource_group_name = 'xxx-RG'
snapshot_name = 'xxxx'
source_disk_id = '/subscriptions/x-x-x-x/resourceGroups/xxxxx/providers/Microsoft.Compute/disks/xxxxxxx'

# Create a ComputeManagementClient object
credential = DefaultAzureCredential()

compute_client = ComputeManagementClient(credential, subscription_id,base_url="https://management.chinacloudapi.cn/", credential_scopes=["https://management.chinacloudapi.cn/.default"])


# Define the snapshot parameters
snapshot_params = {
    'location': 'China North 3',
    'creation_data': {
        'create_option': 'Copy',
        'source_resource_id': source_disk_id
    }
}

# Create the snapshot
snapshot = compute_client.snapshots.begin_create_or_update(
    resource_group_name,
    snapshot_name,
    snapshot_params
).result()

print(snapshot)

注释

1:使用Default Azure Credential,在执行代码的环境中配置环境变量:AZURE_TENANT_ID, AZURE_CLIENT_ID 和 AZURE_CLIENT_SECRET

2:在中国区Azure中,需要指定 ComputeManagementClient 对象的 base_url 和 credential_scopes, 它们的值是固定的。如需要在Global Azure中使用,可以不用这两个参数值。

  • base_url="https://management.chinacloudapi.cn/"
  • credential_scopes=["https://management.chinacloudapi.cn/.default"]

 

代码执行效果图:

 

参考资料

DefaultAzureCredential (EnvironmentCredential) Class : https://learn.microsoft.com/en-us/dotnet/api/azure.identity.environmentcredential?view=azure-dotnet

创建虚拟硬盘的快照 : https://docs.azure.cn/zh-cn/virtual-machines/snapshot-copy-managed-disk?tabs=cli

Snapshot Class : https://learn.microsoft.com/zh-cn/python/api/azure-mgmt-compute/azure.mgmt.compute.v2022_03_02.models.snapshot?view=azure-python

CreationData Class : https://learn.microsoft.com/zh-cn/python/api/azure-mgmt-compute/azure.mgmt.compute.v2022_03_02.models.creationdata?view=azure-python

 

 

 


 

 

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

相关文章
|
搜索推荐 API 开发工具
百宝箱开放平台 ✖️ Python SDK
百宝箱提供Python SDK,支持开发者集成其开放能力。需先发布应用,安装Python 3.6+环境后,通过pip安装tboxsdk,即可调用对话型、生成型智能体及文件上传等功能。
1182 87
百宝箱开放平台 ✖️  Python SDK
|
SQL 自然语言处理 数据库
【Azure Developer】分享两段Python代码处理表格(CSV格式)数据 : 根据每列的内容生成SQL语句
本文介绍了使用Python Pandas处理数据收集任务中格式不统一的问题。针对两种情况:服务名对应多人拥有状态(1/0表示),以及服务名与人名重复列的情况,分别采用双层for循环和字典数据结构实现数据转换,最终生成Name对应的Services列表(逗号分隔)。此方法高效解决大量数据的人工处理难题,减少错误并提升效率。文中附带代码示例及执行结果截图,便于理解和实践。
499 5
|
API 开发工具 网络架构
【Azure Service Bus】使用Python SDK创建Service Bus Namespace资源(中国区)
本文介绍了如何使用Python SDK创建Azure Service Bus Namespace资源。首先,通过Microsoft Entra ID注册应用获取Client ID、Client Secret和Tenant ID,完成中国区Azure认证。接着,初始化ServiceBusManagementClient对象,并调用`begin_create_or_update`方法创建资源。
394 30
|
Java 开发工具 Spring
【Azure Application Insights】为Spring Boot应用集成Application Insight SDK
本文以Java Spring Boot项目为例,详细说明如何集成Azure Application Insights SDK以收集和展示日志。内容包括三步配置:1) 在`pom.xml`中添加依赖项`applicationinsights-runtime-attach`和`applicationinsights-core`;2) 在main函数中调用`ApplicationInsights.attach()`;3) 配置`applicationinsights.json`文件。同时提供问题排查建议及自定义日志方法示例,帮助用户顺利集成并使用Application Insights服务。
525 8
|
API 开发工具 Python
|
人工智能 API 开发工具
【AI大模型】使用Python调用DeepSeek的API,原来SDK是调用这个,绝对的一分钟上手和使用
本文详细介绍了如何使用Python调用DeepSeek的API,从申请API-Key到实现代码层对话,手把手教你快速上手。DeepSeek作为领先的AI大模型,提供免费体验机会,帮助开发者探索其语言生成能力。通过简单示例代码与自定义界面开发,展示了API的实际应用,让对接过程在一分钟内轻松完成,为项目开发带来更多可能。
|
存储 XML 开发工具
【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对象,实现通过自定义域名访问存储服务。
358 0
|
数据采集 机器学习/深度学习 人工智能
Python:现代编程的首选语言
Python:现代编程的首选语言
1915 102
|
数据采集 机器学习/深度学习 算法框架/工具
Python:现代编程的瑞士军刀
Python:现代编程的瑞士军刀
635 104
|
人工智能 自然语言处理 算法框架/工具
Python:现代编程的首选语言
Python:现代编程的首选语言
512 103

推荐镜像

更多