为块 blob 配置对象复制

对象复制在源存储帐户和目标帐户之间异步复制块 blob。 配置对象复制时,需要创建复制策略,以指定源存储帐户和目标帐户。 复制策略包括一个或多个规则,用于指定源容器和目标容器,并指明复制源容器中的哪些块 blob。 有关对象复制的详细信息,请参阅针对块 Blob 的对象复制

本文介绍如何使用 Azure 门户、PowerShell 或 Azure CLI 配置对象复制策略。 还可以使用 Azure 存储资源提供程序客户端库之一来配置对象复制。

必备条件

在配置对象复制前,如果还没有源存储帐户和目标存储帐户,请先创建它们。 源帐户和目标帐户可以是常规用途 v2 存储帐户,也可以是高级块 Blob 帐户。 有关详细信息,请参阅创建 Azure 存储帐户

若要执行对象复制,需要同时为源帐户和目标帐户启用 blob 版本管理,并为源帐户启用 blob 更改源。 若要详细了解 blob 版本控制,请参阅 Blob 版本控制。 若要详细了解更改源,请参阅 Azure Blob 存储中的更改源支持。 请记住,启用这些功能可能会产生额外的成本。

若要为存储帐户配置对象复制策略,需要具有存储帐户级别或更高级别的 Azure 资源管理器参与者角色。 有关详细信息,请参阅 Azure 基于角色的访问控制 (Azure RBAC) 文档中的 Azure 内置角色

已启用分层命名空间的帐户尚不支持对象复制。

将对象复制配置为访问这两个存储帐户

如果同时有权访问源存储帐户和目标存储帐户,则可以在这两个帐户上均配置对象复制策略。 以下示例显示如何使用 Azure 门户、PowerShell 或 Azure CLI 配置对象复制。

在 Azure 门户中配置对象复制时,只需在源帐户上配置策略。 为源帐户配置策略后,Azure 门户会自动在目标帐户上创建策略。

若要在 Azure 门户中创建复制策略,请按照以下步骤操作:

  1. 在 Azure 门户中,转到源存储帐户。

  2. 在“数据管理”下,选择“对象复制”。

  3. 选择“创建复制规则”

  4. 选择目标订阅和存储帐户。

  5. 在“容器对详细信息”部分中,选择源帐户中的源容器,以及目标帐户中的目标容器。 Azure 门户中每个复制策略最多可以创建 10 个容器对。 若要配置 10 个以上的容器对(最多 1000 个),请参阅使用 JSON 文件配置对象复制

    下图展示了一组复制规则。

    Screenshot showing replication rules in Azure portal

  6. 如果需要,指定一个或多个筛选器,以便只复制与前缀模式匹配的 blob。 例如,如果指定前缀 b,则只会复制名称以此字母开头的 blob。 可以将虚拟目录指定为前缀的一部分。 最多可以添加五个前缀匹配项。 前缀字符串不支持通配符。

    下图展示了限制在复制规则中复制哪些 blob 的筛选器。

    Screenshot showing filters for a replication rule

  7. 默认情况下,复制范围设置为只复制新对象。 若要复制容器中的所有对象,或从自定义日期和时间开始复制对象,请选择“更改”链接,然后为容器对配置复制范围。

    下图显示了从指定的日期和时间开始复制对象的自定义复制范围。

    Screenshot showing custom copy scope for object replication

  8. 选择“保存并应用”,以创建复制策略,并开始复制数据。

配置对象复制后,Azure 门户会显示复制策略和规则,如下图所示。

Screenshot showing object replication policy in Azure portal

使用 JSON 文件配置对象复制

如果你没有访问源存储帐户的权限或者想使用 10 个以上的容器对,则可以在目标帐户上配置对象复制,并向另一个用户提供一个包含策略定义的 JSON 文件,以便在源帐户上创建相同的策略。 例如,如果源帐户与目标帐户位于不同的 Microsoft Entra 租户中,则可以使用此方法配置对象复制。

若要了解如何创作包含策略定义的 JSON 文件,请参阅策略定义文件

注意

默认情况下,允许对存储帐户进行跨租户对象复制。 为防止跨租户复制,可以设置 AllowCrossTenantReplication 属性,禁止对存储帐户进行跨租户对象复制。 有关详细信息,请参阅防止跨 Microsoft Entra 租户进行对象复制

本部分中的示例演示如何在目标帐户上配置对象复制策略,然后获取该策略的 JSON 文件,其他用户可以使用该文件在源帐户上配置策略。

若要使用 Azure 门户中的 JSON 文件在目标帐户上配置对象复制,请执行以下步骤:

  1. 创建一个本地 JSON 文件,用于在目标帐户上定义复制策略。 将 policyId 字段设置为“默认”,以便 Azure 存储区可以定义策略 ID 。

    若要创建定义复制策略的 JSON 文件,一种简单的方法是先在 Azure 门户中创建两个存储帐户之间的测试复制策略。 然后,可以下载复制规则并根据需要修改 JSON 文件。

  2. 在 Azure 门户中导航到目标帐户的“对象复制”设置。

  3. 选择“上传复制规则”。

  4. 上传 JSON 文件。 Azure 门户会显示将创建的策略和规则,如下图所示。

    Screenshot showing how to upload a JSON file to define a replication policy

  5. 选择“上传”,在目标帐户上创建复制策略。

然后,可以下载包含策略定义的 JSON 文件,可以将该文件提供给其他用户用于配置源帐户。 若要下载此 JSON 文件,请执行以下步骤:

  1. 在 Azure 门户中导航到目标帐户的“对象复制”设置。

  2. 选择要下载的策略旁边的“更多”按钮,然后选择“下载规则”,如下图所示 。

    Screenshot showing how to download replication rules to a JSON file

  3. 将 JSON 文件保存到本地计算机,以便与其他用户共享以在源帐户上配置策略。

下载的 JSON 文件包含“Azure 存储”为目标帐户上的策略创建的策略 ID。 必须使用相同的策略 ID 在源帐户上配置对象复制。

请记住,如果通过 Azure 门户上传 JSON 文件来为目标帐户创建复制策略,不会在源帐户中自动创建相同的策略。 在 Azure 存储开始复制对象之前,另一个用户必须在源帐户上创建策略。

检查 blob 的复制状态

可以使用 Azure 门户、PowerShell 或 Azure CLI 检查源帐户中 blob 的复制状态。 在复制完成或失败之前,不会填充对象复制属性。

若要在 Azure 门户中检查源帐户中 blob 的复制状态,请执行以下步骤:

  1. 在 Azure 门户中,导航到源帐户。
  2. 找到包含源 blob 的容器。
  3. 选择要显示其属性的 blob。 如果已成功复制 blob,则“对象复制”部分将显示状态设置为“完成”。 还会列出复制策略 ID 和用于管理此容器的对象复制的规则的 ID。

Screenshot showing replication status for a blob in the source account

如果源帐户中 blob 的复制状态指示失败,则请调查以下可能的原因:

  • 请确保已在目标帐户上配置对象复制策略。
  • 请验证目标容器是否仍然存在。
  • 如果在写入操作中已使用客户提供的密钥对源 blob 进行了加密,则对象复制将失败。 有关客户提供的密钥的详细信息,请参阅在对 Blob 存储的请求中提供加密密钥

删除复制策略

若要删除复制策略及其关联的规则,请使用 Azure 门户、PowerShell 或 CLI。

若要在 Azure 门户中删除复制策略,请按照以下步骤操作:

  1. 在 Azure 门户中,转到源存储帐户。
  2. 在“设置”下,选择“对象复制”。
  3. 选择策略名称旁边的“更多”按钮。
  4. 选择“删除规则”。

后续步骤