在 Outposts 上创建复制规则 - Amazon Simple Storage Service
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

在 Outposts 上创建复制规则

Outposts 上的 S3 复制是跨相同或不同 Amazon Outposts 中的桶自动、异步复制对象。复制操作会将源 Outposts 桶中新创建的对象和对象更新复制到目标 Outposts 桶。有关更多信息,请参阅复制 S3 on Outposts 的对象

注意

将不会复制在设置复制规则之前存在于源 Outposts 桶中的对象。换句话说,S3 on Outposts 不以回溯方式复制对象。要复制在复制配置之前创建的对象,您可以使用 CopyObject API 操作将它们复制到同一个桶中。复制对象后,它们在桶中显示为“新”对象,复制配置将应用于它们。有关复制对象的详细信息,请参阅使用 Amazon SDK for Java 复制 Amazon S3 on Outposts 存储桶中的对象和《Amazon Simple Storage Service API 参考》中的 CopyObject

配置复制时,需要向源 Outposts 桶添加复制规则。复制规则定义要复制的源 Outposts 桶对象和将存储复制的对象的目标 Outposts 桶。您可以创建一条规则,以复制桶中的所有对象或具有特定键名前缀和/或一个或多个对象标签的对象子集。目标 Outposts 桶与源 Outposts 桶可以位于同一 Outpost 中,也可以位于不同的 Outpost 中。

对于 S3 on Outposts 复制规则,您必须提供源 Outposts 桶的接入点 Amazon 资源名称(ARN)和目标 Outposts 桶的接入点 ARN,而不是源和目标 Outposts 桶名称。

如果您指定要删除的对象版本 ID,S3 on Outposts 会在源 Outposts 桶中删除该对象版本。但它不会将删除操作复制到目标 Outposts 桶中。换句话说,它不会从目标 Outposts 桶中删除同一对象版本。此行为可防止恶意删除数据。

当您将复制规则添加到 Outposts 桶后,原定设置情况下将启用复制规则,使该规则在您保存它后立即开始发挥作用。

在此示例中,您为位于不同的 Outposts 上且由同一 Amazon Web Services 账户拥有的源和目标 Outposts 桶设置复制。提供了使用 Amazon S3 控制台、Amazon Command Line Interface (Amazon CLI) 以及 Amazon SDK for Java 和 Amazon SDK for .NET 的示例。有关跨账户 Outposts 上的 S3 复制权限的信息,请参阅在源和目标 Outposts 桶由不同的 Amazon Web Services 账户拥有时授予权限

有关设置 S3 on Outposts 复制规则的先决条件,请参阅创建复制规则的先决条件

当目标 Amazon S3 on Outposts 桶位于与源 Outposts 桶不同的 Outpost 中时,请按照以下步骤配置复制规则。

如果目标 Outposts 桶与源 Outposts 桶位于不同的账户中,您必须向目标 Outposts 桶添加桶策略,以便向源 Outposts 桶账户的拥有者授予向目标 Outposts 桶复制对象的权限。有关更多信息,请参阅在源存储桶和目标存储桶由不同的 Amazon Web Services 账户 拥有时授予权限

创建复制规则
  1. 登录到 Amazon Web Services Management Console,然后通过以下网址打开 Amazon S3 控制台:https://console.aws.amazon.com/s3/

  2. Outposts 桶列表中,选择要用作源桶的桶名称。

  3. 选择管理选项卡,向下滚动到复制规则部分,然后选择创建复制规则

  4. 复制规则名称下,输入规则的名称以帮助稍后识别规则。该名称是必填项,并且它在桶内必须是唯一的。

  5. 状态下,已启用在原定设置情况下处于选中状态。已启用的规则将在您保存它后立即开始工作。如果您想以后再启用该规则,请选择已禁用

  6. 优先级下,规则的优先级值决定了在存在重叠的规则时要应用哪条规则。当对象包含在多个复制规则的范围内时,S3 on Outposts 使用这些优先级值来避免冲突。原定设置情况下,新规则以最高优先级添加到复制配置中。数字越大,优先级越高。

    要更改规则的优先级,请在保存规则后,从复制规则列表中选择规则名称,选择操作,然后选择编辑优先级

  7. 源桶下,您可以通过以下选项设置复制源:

    • 要复制整个桶,请选择应用到桶中的所有 对象

    • 要将前缀或标签筛选应用到复制源,请选择使用一个或多个筛选条件限制此规则的范围。您可以组合前缀和标签。

      • 要复制所有具有相同前缀的对象,请在前缀下方的框中输入前缀。使用前缀筛选条件将复制限制为名称以相同字符串(例如,pictures)开头的所有对象。

        如果您输入的前缀是文件夹名称,则必须使用 /(正斜杠)作为最后一个字符(例如,pictures/)。

      • 要复制具有一个或多个相同对象标签的所有对象,请选择添加标签,然后在框中输入键值对。要添加另一个标签,请重复该过程。有关对象标签的更多信息,请参阅 为 S3 on Outposts 存储桶添加标签

  8. 要访问您的 S3 on Outposts 源桶以进行复制,请在源接入点名称下,选择一个连接到源桶的接入点。

  9. 目标下,选择您希望 S3 on Outposts 向其中复制对象的目标 Outposts 桶的接入点 ARN。目标 Outposts 桶可以与源 Outposts 桶位于相同或不同的 Amazon Web Services 账户中。

    如果目标桶与源 Outposts 桶位于不同的账户中,您必须向目标 Outposts 桶添加桶策略,以便为源 Outposts 桶账户的拥有者授予将对象复制到目标 Outposts 桶中的权限。有关更多信息,请参阅在源和目标 Outposts 桶由不同的 Amazon Web Services 账户拥有时授予权限

    注意

    如果未对目标 Outposts 桶启用版本控制,您将收到包含启用版本控制按钮的警告。选择此按钮可对桶启用版本控制。

  10. 设置 Amazon Identity and Access Management(IAM)服务角色,S3 on Outposts 可以代入该角色以代表您复制对象。

    要设置 IAM 角色,请在 IAM 角色下执行以下操作之一:

    • 要让 S3 on Outposts 为复制配置创建新的 IAM 角色,请选择从现有 IAM 角色中选择,然后选择创建新角色。当您保存该规则后,将为 IAM 角色生成一个与您选择的源和目标 Outposts 桶匹配的新策略。建议您选择创建新角色

    • 还可以选择使用现有的 IAM 角色。在这种情况下,您必须选择一个可以授予 S3 on Outposts 必要权限以进行复制的角色。如果此角色没有授予 S3 on Outposts 足够的权限来遵循您的复制规则,则复制将失败。

      要选择现有角色,请选择从现有 IAM 角色中选择,然后从下拉菜单中选择角色。您也可以选择输入 IAM 角色 ARN,然后输入 IAM 角色的 Amazon 资源名称(ARN)。

    重要

    当您将复制规则添加到 S3 on Outposts 桶时,您必须具有 iam:CreateRoleiam:PassRole 权限才能创建和传递向 S3 on Outposts 授予复制权限的 IAM 角色。有关更多信息,请参阅《IAM 用户指南》中的向用户授予将角色传递给 Amazon Web Service的权限

  11. 原定设置情况下,Outposts 桶中的所有对象均加密。有关 S3 on Outposts 加密的更多信息,请参阅S3 on Outposts 中的数据加密。只能复制使用具有 Amazon S3 托管式密钥的服务器端加密(SSE-S3)进行加密的对象。不支持复制使用具有 Amazon Key Management Service(Amazon KMS)密钥的服务器端加密(SSE-KMS)或使用客户提供的加密密钥的服务器端加密(SSE-C)进行加密的对象。

  12. 根据需要,在设置复制规则配置时启用以下附加选项:

  13. 要完成操作,请选择创建规则

当您保存规则之后,您可以编辑、启用、禁用或删除您的规则。要执行这些操作,请转到源 Outposts 桶的管理选项卡,向下滚动到复制规则部分,选择您的规则,然后选择编辑规则

要使用 Amazon CLI 在源和目标 Outposts 桶由同一 Amazon Web Services 账户拥有时设置复制,请执行以下操作:

  • 创建源和目标 Outposts 桶。

  • 对这两个桶启用版本控制。

  • 创建向 S3 on Outposts 授予复制对象的权限的 IAM 角色。

  • 将复制配置添加到源 Outposts 桶中。

要验证您的设置,请对其进行测试。

当源和目标 Outposts 桶由同一个 Amazon Web Services 账户拥有时设置复制
  1. 为 Amazon CLI 设置凭证配置文件。在此示例中,我们使用配置文件名称 acctA。有关设置凭证配置文件的信息,请参阅《Amazon Command Line Interface 用户指南》中的命名配置文件

    重要

    用于执行此操作的配置文件必须具有必要的权限。例如,在复制配置中,可以指定 S3 on Outposts 可代入的 IAM 服务角色。仅当您所使用的配置文件具有 iam:CreateRoleiam:PassRole 权限时,您才能执行此操作。有关更多信息,请参阅《IAM 用户指南》中的向用户授予将角色传递给 Amazon Web Service的权限。如果您使用管理员凭证创建命名配置文件,命名配置文件将具有执行所有任务的必要权限。

  2. 创建一个源存储桶,并对其启用版本控制。以下 create-bucket 命令在美国东部(弗吉尼亚州北部)(us-east-1)区域中创建一个 SOURCE-OUTPOSTS-BUCKET 桶。要使用此命令,请将 user input placeholders 替换为您自己的信息。

    aws s3control create-bucket --bucket SOURCE-OUTPOSTS-BUCKET --outpost-id SOURCE-OUTPOST-ID --profile acctA --region us-east-1

    以下 put-bucket-versioning 命令对于 SOURCE-OUTPOSTS-BUCKET 桶启用版本控制。要使用此命令,请将 user input placeholders 替换为您自己的信息。

    aws s3control put-bucket-versioning --account-id 123456789012 --bucket arn:aws:s3-outposts:region:123456789012:outpost/SOURCE-OUTPOST-ID/bucket/SOURCE-OUTPOSTS-BUCKET --versioning-configuration Status=Enabled --profile acctA
  3. 创建一个目标存储桶,并对其启用版本控制。以下 create-bucket 命令在美国西部(俄勒冈州)(us-west-2)区域中创建一个 DESTINATION-OUTPOSTS-BUCKET 桶。要使用此命令,请将 user input placeholders 替换为您自己的信息。

    注意

    要在源和目标 Outposts 桶位于同一 Amazon Web Services 账户中时设置复制配置,请使用同一命名配置文件。此示例使用 acctA。要在两个桶由不同 Amazon Web Services 账户拥有时对复制配置进行测试,您需要为每个桶指定不同的配置文件。

    aws s3control create-bucket --bucket DESTINATION-OUTPOSTS-BUCKET --create-bucket-configuration LocationConstraint=us-west-2 --outpost-id DESTINATION-OUTPOST-ID --profile acctA --region us-west-2

    以下 put-bucket-versioning 命令对于 DESTINATION-OUTPOSTS-BUCKET 桶启用版本控制。要使用此命令,请将 user input placeholders 替换为您自己的信息。

    aws s3control put-bucket-versioning --account-id 123456789012 --bucket arn:aws:s3-outposts:region:123456789012:outpost/DESTINATION-OUTPOST-ID/bucket/DESTINATION-OUTPOSTS-BUCKET --versioning-configuration Status=Enabled --profile acctA
  4. 创建 IAM 服务角色。稍后在复制配置中,将此服务角色添加到 SOURCE-OUTPOSTS-BUCKET 桶中。S3 on Outposts 代入此角色以代表您复制对象。分两个步骤创建 IAM 角色:

    1. 创建一个 IAM 角色。

      1. 复制以下信任策略,并将其保存到本地计算机上当前目录中一个名为 s3-on-outposts-role-trust-policy.json 的文件。此策略向 S3 on Outposts 服务主体授予代入该服务角色的权限。

        { "Version":"2012-10-17", "Statement":[ { "Effect":"Allow", "Principal":{ "Service":"s3-outposts.amazonaws.com" }, "Action":"sts:AssumeRole" } ] }
      2. 运行以下 命令以创建角色。将 user input placeholders 替换为您自己的信息。

        aws iam create-role --role-name replicationRole --assume-role-policy-document file://s3-on-outposts-role-trust-policy.json --profile acctA
    2. 将权限策略附加到服务角色。

      1. 复制以下权限策略,并将其保存到本地计算机上当前目录中一个名为 s3-on-outposts-role-permissions-policy.json 的文件。此策略授予对各种 S3 on Outposts 桶和对象操作的权限。要使用这一策略,请将 user input placeholders 替换为您自己的信息。

        { "Version":"2012-10-17", "Statement":[ { "Effect":"Allow", "Action":[ "s3-outposts:GetObjectVersionForReplication", "s3-outposts:GetObjectVersionTagging" ], "Resource":[ "arn:aws:s3-outposts:region:123456789012:outpost/SOURCE-OUTPOST-ID/bucket/SOURCE-OUTPOSTS-BUCKET/object/*", "arn:aws:s3-outposts:region:123456789012:outpost/SOURCE-OUTPOST-ID/accesspoint/SOURCE-OUTPOSTS-BUCKET-ACCESS-POINT/object/*" ] }, { "Effect":"Allow", "Action":[ "s3-outposts:ReplicateObject", "s3-outposts:ReplicateDelete" ], "Resource":[ "arn:aws:s3-outposts:region:123456789012:outpost/DESTINATION-OUTPOST-ID/bucket/DESTINATION-OUTPOSTS-BUCKET/object/*", "arn:aws:s3-outposts:region:123456789012:outpost/DESTINATION-OUTPOST-ID/accesspoint/DESTINATION-OUTPOSTS-BUCKET-ACCESS-POINT/object/*" ] } ] }
      2. 运行以下命令以创建策略并将其附加到角色。将 user input placeholders 替换为您自己的信息。

        aws iam put-role-policy --role-name replicationRole --policy-document file://s3-on-outposts-role-permissions-policy.json --policy-name replicationRolePolicy --profile acctA
  5. 将复制配置添加到 SOURCE-OUTPOSTS-BUCKET 桶中。

    1. 尽管 S3 on Outposts API 要求复制配置采用 XML 格式,但 Amazon CLI 要求您以 JSON 格式指定复制配置。将以下 JSON 保存到计算机上本地目录中一个名为 replication.json 文件。要使用此命令,请将 user input placeholders 替换为您自己的信息。

      { "Role": "IAM-role-ARN", "Rules": [ { "Status": "Enabled", "Priority": 1, "DeleteMarkerReplication": { "Status": "Disabled" }, "Filter" : { "Prefix": "Tax"}, "Destination": { "Bucket": "arn:aws:s3-outposts:region:123456789012:outpost/DESTINATION-OUTPOST-ID/accesspoint/DESTINATION-OUTPOSTS-BUCKET-ACCESS-POINT" } } ] }
    2. 运行以下 put-bucket-replication 命令以将复制配置添加到源 Outposts 桶中。要使用此命令,请将 user input placeholders 替换为您自己的信息。

      aws s3control put-bucket-replication --account-id 123456789012 --bucket arn:aws:s3-outposts:region:123456789012:outpost/SOURCE-OUTPOST-ID/bucket/SOURCE-OUTPOSTS-BUCKET --replication-configuration file://replication.json --profile acctA
    3. 要检索复制配置,请使用 get-bucket-replication 命令。要使用此命令,请将 user input placeholders 替换为您自己的信息。

      aws s3control get-bucket-replication --account-id 123456789012 --bucket arn:aws:s3-outposts:region:123456789012:outpost/SOURCE-OUTPOST-ID/bucket/SOURCE-OUTPOSTS-BUCKET --profile acctA
  6. 在 Amazon S3 控制台中测试该设置:

    1. 登录到 Amazon Web Services Management Console,然后通过以下网址打开 Amazon S3 控制台:https://console.aws.amazon.com/s3/

    2. SOURCE-OUTPOSTS-BUCKET 桶中,创建一个名为 Tax 的文件夹。

    3. 将示例对象添加到 SOURCE-OUTPOSTS-BUCKET 桶中的 Tax 文件夹。

    4. DESTINATION-OUTPOSTS-BUCKET 桶中,确认以下几点:

      • S3 on Outposts 复制了对象。

        注意

        S3 on Outposts 复制对象所需的时间量取决于对象大小。有关如何查看复制状态的信息,请参阅获取复制状态信息

      • 在对象的属性选项卡中,复制状态设置为副本(将其标识为副本对象)。