需要将AZURE备份策略分配给文件共享的Python流程

0 投票
2 回答
39 浏览
提问于 2025-04-14 17:49

在我的Python程序中,我正在根据一些参数创建存储账户和文件共享,并且需要将一个已有的备份策略分配给这个新的文件共享。

我在AZURE网站上找到了在Powershell中执行这个操作的方法(我认为是下面这个)。

$monthlyafsPol =  Get-AzRecoveryServicesBackupProtectionPolicy -Name "monthlyafs"
$afsContainer = Get-AzRecoveryServicesBackupContainer -FriendlyName "testStorageAcct" -ContainerType AzureStorage
$afsBkpItem = Get-AzRecoveryServicesBackupItem -Container $afsContainer -WorkloadType AzureFiles -Name "testAzureFS"
Enable-AzRecoveryServicesBackupProtection -Item $afsBkpItem -Policy $monthlyafsPol

但是我还没有找到Python中对应的做法。我怀疑这个功能可能和RecoveryServicesBackupClient有关,但到目前为止还没有成功。

2 个回答

0

谢谢!我现在已经快搞定了,但在处理sourceResourceId这个参数时遇到了一些问题。错误信息是……SourceResourceId必须是源存储账户的完整ARM ID

我的值是这样拼接起来的: # - 订阅 S1 = "/subscriptions/" + sub_id # - 资源组 S2 = "/resourceGroups/" + AZURE_RG # - 提供者 S3 = "/providers/Microsoft.Storage" # - 存储账户 S4 = "/storageAccounts/" + STGACCTAPPX # - 文件服务部分 S5 = "/fileServices/default/shares/" + ShareName # SrcResID = S1 + S2 + S3 + S4 + S5

我还在使用一个没有容器的存储账户,所以把参数设置为 container_name="StorageContainer;storage;" + ResGroup +";$root"

这样听起来可以吗?

1

需要一个Python过程来给文件共享分配一个AZURE备份策略

你可以使用下面的Python代码来给文件共享分配一个Azure BackupPolicy

代码:

from azure.identity import DefaultAzureCredential
from azure.mgmt.recoveryservicesbackup import RecoveryServicesBackupClient

def main():
    client = RecoveryServicesBackupClient(
        credential=DefaultAzureCredential(),
        subscription_id="xxxxx",
    )
    response = client.protected_items.create_or_update(
        vault_name="azurefilesvault",
        resource_group_name="xxxxx",
        fabric_name="Azure",
        container_name="StorageContainer;storage;xxxxxx;venkat789",
        protected_item_name="AzureFileShare;xxxxxx",
        parameters={
            "properties": {
                "policyId": "/subscriptions/xxxx/resourceGroups/xxxx/providers/Microsoft.RecoveryServices/vaults/azurefilesvault/backupPolicies/policy2",
                "protectedItemType": "AzureFileShareProtectedItem",
                "sourceResourceId": "/subscriptions/xxxxf/resourceGroups/xxx/providers/Microsoft.Storage/storageAccounts/venkat789/fileServices/default/shares/share1",
            }
        },
    )
    print(response)

if __name__ == "__main__":
    main()

上面的代码会在Azure恢复服务库中创建或更新一个受保护的项目,这个过程是通过Azure SDK for Python来实现的。它使用了RecoveryServicesBackupClient这个类和create_or_update()这个方法,并传入一些必要的参数,比如库的名称、资源组的名称、架构名称、容器名称、受保护项目的名称,以及一个包含受保护项目参数的字典。代码执行后,create_or_update()方法的返回结果会打印到控制台上。

输出:

在这里输入图片描述

参考: 受保护的项目 - 创建或更新 - REST API (Azure恢复服务 - 备份) | Microsoft Learn

撰写回答