如何通过AZ CLI创建多个Azure存储对象复制策略
Azure 对象复制多策略创建解决方案
问题根因
你重复执行az storage account or-policy create未生成新策略,是因为未显式指定--policy-id参数时,AZ CLI会自动匹配当前已存在的同源+同目标存储账户的已有策略,直接执行更新操作,而非新建。
前置配额说明
Azure 对象复制功能有固定配额限制:
- 同一对源/目标存储账户最多可创建5个复制策略
- 每个复制策略最多可添加10条容器复制规则
刚好可以覆盖你50+容器的复制需求。
解决方法
创建新策略时显式指定唯一的自定义--policy-id即可,示例如下:
手动创建第二个策略示例
# 取第11个容器作为第二个策略的首个规则绑定容器 second_policy_first_container=$(sed -n '11p' container_list.txt) az storage account or-policy create \ --account-name $DESTINATION_STORAGE_ACCOUNT \ --resource-group $DESTINATION_RESOURCE_GROUP \ --source-account $SOURCE_STORAGE_ACCOUNT \ --destination-account $DESTINATION_STORAGE_ACCOUNT \ --source-container $second_policy_first_container \ --destination-container $second_policy_first_container \ --min-creation-time '2010-09-01T00:00:00Z' \ --policy-id 'or-policy-02' # 此处指定新的唯一策略ID,即可创建全新策略
自动批量创建多策略脚本
你可以直接使用以下脚本按每10个容器一组自动批量创建策略,无需手动拆分:
# 按10个容器为一组拆分,分组创建复制策略 group_size=10 containers=($(cat container_list.txt)) total_container=${#containers[@]} policy_seq=1 for ((i=0; i<$total_container; i+=$group_size)); do # 取当前分组的第一个容器初始化策略 first_container_of_group=${containers[$i]} current_policy_id="or-policy-$(printf "%02d" $policy_seq)" # 创建新的复制策略 az storage account or-policy create \ --account-name $DESTINATION_STORAGE_ACCOUNT \ --resource-group $DESTINATION_RESOURCE_GROUP \ --source-account $SOURCE_STORAGE_ACCOUNT \ --destination-account $DESTINATION_STORAGE_ACCOUNT \ --source-container $first_container_of_group \ --destination-container $first_container_of_group \ --min-creation-time '2010-09-01T00:00:00Z' \ --policy-id $current_policy_id # 为当前分组剩余的容器添加复制规则 for ((j=i+1; j<$(($i+$group_size)) && j<$total_container; j++)); do current_container=${containers[$j]} az storage account or-policy rule add \ --account-name $DESTINATION_STORAGE_ACCOUNT \ --resource-group $SOURCE_RESOURCE_GROUP \ --source-container $current_container \ --destination-container $current_container \ --policy-id $current_policy_id done policy_seq=$(($policy_seq+1)) done
注意事项
- 自定义的
policy-id在同一个目标存储账户下必须唯一,不可重复 - 所有策略的最小创建时间可根据实际需求调整,无需和第一个策略保持一致
- 操作前需确认源、目标存储账户都已开启Blob版本控制功能,对象复制依赖该能力运行
内容的提问来源于stack exchange,提问作者Hound
相关产品推荐
相关产品推荐

