

# 创建复制规则的先决条件
<a name="outposts-replication-prerequisites-config"></a>

**Topics**
+ [连接您的源和目标 Outpost 子网](#outposts-rep-preone)
+ [创建 IAM 角色](#outposts-rep-pretwo)

## 连接您的源和目标 Outpost 子网
<a name="outposts-rep-preone"></a>

要使复制流量通过本地网关从源 Outpost 传输到目标 Outpost，您必须添加一条新路由来设置网络。必须将接入点的无类别域间路由（CIDR）网络范围连接在一起。对于每对接入点，您只需设置一次此连接。

设置连接的某些步骤有所不同，具体取决于与接入点关联的 Outposts 端点的访问类型。端点的访问类型为**私有**（适用于 AWS Outposts 的直接虚拟私有云 [VPC] 路由）或**客户拥有的 IP**（本地网络中客户拥有的 IP 地址池 [CoIP 池]）。

### 步骤 1：查找源 Outposts 端点的 CIDR 范围
<a name="outposts-pre-step1"></a>

**查找与源接入点关联的源端点的 CIDR 范围**

1. 登录到 AWS 管理控制台，然后通过以下网址打开 Amazon S3 控制台：[https://console.aws.amazon.com/s3/](https://console.aws.amazon.com/s3/)。

1. 在左侧导航窗格中，选择 **Outposts buckets**（Outposts 桶）。

1. 在 **Outposts 桶**列表中，选择要用于复制的源桶。

1. 选择 **Outposts 接入点**选项卡，然后为您的复制规则选择源桶的 Outposts 接入点。

1. 选择 Outposts 端点。

1. 复制子网 ID 以在[步骤 5](#outposts-pre-step5) 中使用。

1. 用于查找源 Outposts 端点的 CIDR 范围的方法取决于您的端点的访问类型。

   在 **Outposts 端点概览**部分中，查看**访问类型**。
   + 如果访问类型为**私有**，请复制**无类别域间路由（CIDR）**值以在[步骤 6](#outposts-pre-step6) 中使用。
   + 如果访问类型为**客户拥有的 IP**，请执行以下操作：

     1. 复制**客户拥有的 IPv4 池**值，稍后将用作地址池的 ID。

     1. 打开 AWS Outposts 控制台 ([https://console.aws.amazon.com/outposts/](https://console.aws.amazon.com/outposts/home))。

     1. 在导航窗格中，选择**本地网关路由表**。

     1. 选择您的源 Outpost 的**本地网关路由表 ID** 值。

     1. 在详细信息窗格中，选择 **CoIP 池**选项卡。将您之前复制的 CoIP 池 ID 的值粘贴到搜索框中。

     1. 对于匹配的 CoIP 池，复制您的源 Outposts 端点的相应 **CIDR** 值，以便在[步骤 6](#outposts-pre-step6) 中使用。

### 步骤 2：查找目标 Outposts 端点的子网 ID 和 CIDR 范围
<a name="outposts-pre-step2"></a>

要查找与目标接入点关联的目标端点的子网 ID 和 CIDR 范围，请按照[步骤 1](#outposts-pre-step1) 中的相同子步骤进行操作，并在应用这些子步骤时将源 Outposts 端点更改为目标 Outposts 端点。复制目标 Outposts 端点的子网 ID 值，以便在[步骤 6](#outposts-pre-step6) 中使用。复制目标 Outposts 端点的 CIDR 值，以便在[步骤 5](#outposts-pre-step5) 中使用。

### 步骤 3：查找源 Outpost 的本地网关 ID
<a name="outposts-pre-step3"></a>

**查找源 Outpost 的本地网关 ID**

1. 打开 AWS Outposts 控制台 ([https://console.aws.amazon.com/outposts/](https://console.aws.amazon.com/outposts/home))。

1. 在左侧导航窗格中，选择**本地网关**。

1. 在**本地网关**页面上，找到要用于复制的源 Outpost 的 Outpost ID。

1. 复制源 Outpost 的本地网关 ID 值，以便在[步骤 5](#outposts-pre-step5) 中使用。

有关本地网关的更多信息，请参阅《AWS Outposts 用户指南》**中的[本地网关](https://docs.aws.amazon.com/outposts/latest/userguide/outposts-local-gateways.html)。

### 步骤 4：查找目标 Outpost 的本地网关 ID
<a name="outposts-pre-step4"></a>

要查找目标 Outpost 的本地网关 ID，请按照[步骤 3](#outposts-pre-step3) 中的相同子步骤操作，不同之处是查找目标 Outpost 的 Outpost ID。复制目标 Outpost 的本地网关 ID 值，以便在[步骤 6](#outposts-pre-step6) 中使用。

### 步骤 5：设置从源 Outpost 子网到目标 Outpost 子网的连接
<a name="outposts-pre-step5"></a>

**从源 Outpost 子网连接到目标 Outpost 子网**

1. 登录到 AWS 管理控制台并打开 VPC 控制台，网址为：[https://console.aws.amazon.com/vpc/](https://console.aws.amazon.com/vpc/)。

1. 在左侧导航窗格中，选择 **Subnets**。

1. 在搜索框中，输入您在[步骤 1](#outposts-pre-step1) 中找到的源 Outposts 端点的子网 ID。选择具有匹配的子网 ID 的子网。

1. 对于匹配的子网项目，选择该子网的**路由表**值。

1. 在包含选定路由表的页面上，选择**操作**，然后选择**编辑路由**。

1. 在**编辑路由**页面上，选择**添加路由**。

1. 在**目标**下，输入您在[步骤 2](#outposts-pre-step2) 中找到的目标 Outposts 端点的 CIDR 范围。

1. 在**目标**下，选择 **Outpost 本地网关**，然后输入您在[步骤 3](#outposts-pre-step3) 中找到的源 Outpost 的本地网关 ID。

1. 选择**保存更改**。

1. 确保路由的**状态**为**活动**。

### 步骤 6：设置从目标 Outpost 子网到源 Outpost 子网的连接
<a name="outposts-pre-step6"></a>

1. 登录到 AWS 管理控制台并打开 VPC 控制台，网址为：[https://console.aws.amazon.com/vpc/](https://console.aws.amazon.com/vpc/)。

1. 在左侧导航窗格中，选择 **Subnets**。

1. 在搜索框中，输入您在[步骤 2](#outposts-pre-step2) 中找到的目标 Outposts 端点的子网 ID。选择具有匹配的子网 ID 的子网。

1. 对于匹配的子网项目，选择该子网的**路由表**值。

1. 在包含选定路由表的页面上，选择**操作**，然后选择**编辑路由**。

1. 在**编辑路由**页面上，选择**添加路由**。

1. 在**目标**下，输入您在[步骤 1](#outposts-pre-step1) 中找到的源 Outposts 端点的 CIDR 范围。

1. 在**目标**下，选择 **Outpost 本地网关**，然后输入您在[步骤 4](#outposts-pre-step4) 中找到的目标 Outpost 的本地网关 ID。

1. 选择**保存更改**。

1. 确保路由的**状态**为**活动**。

 连接源接入点和目标接入点的 CIDR 网络范围后，必须创建 AWS Identity and Access Management（IAM）角色。

## 创建 IAM 角色
<a name="outposts-rep-pretwo"></a>

原定设置情况下，所有 S3 on Outposts 资源（桶、对象和相关子资源）都是私有的，只有资源拥有者可以访问相应的资源。S3 on Outposts 需要权限才能从源 Outposts 桶读取和复制对象。您通过创建一个 IAM *服务角色*，然后在复制配置中指定该角色，授予这些权限。

此部分介绍信任策略及所需的最低权限策略。示例演练提供创建 IAM 角色的分步说明。有关更多信息，请参阅 [在 Outposts 上创建复制规则](replication-between-outposts.md)。有关 IAM 角色的更多信息，请参阅《IAM 用户指南》**中的 [IAM 角色](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles.html)。
+ 以下示例显示了一个*信任策略*，您在其中将 S3 on Outposts 标识为可代入此角色的服务主体。

------
#### [ JSON ]

****  

  ```
  {
     "Version":"2012-10-17",		 	 	 
     "Statement":[
        {
           "Effect":"Allow",
           "Principal":{
              "Service":"s3-outposts.amazonaws.com"
           },
           "Action":"sts:AssumeRole"
        }
     ]
  }
  ```

------
+ 以下示例显示了一个*访问策略*，您在其中向角色授予代表您执行复制任务的权限。当 S3 on Outposts 代入此角色时，它将具有您在此策略中指定的权限。要使用这一策略，请将 `user input placeholders` 替换为您自己的信息。确保将它们替换为源和目标 Outpost 的 Outpost ID 以及源和目标 Outposts 桶的桶名称和接入点名称。

------
#### [ JSON ]

****  

  ```
  {
      "Version":"2012-10-17",		 	 	 
      "Statement": [
          {
              "Effect": "Allow",
              "Action": [
                  "s3-outposts:GetObjectVersionForReplication",
                  "s3-outposts:GetObjectVersionTagging"
              ],
              "Resource": [
                  "arn:aws:s3-outposts:us-east-1:123456789012:outpost/SOURCE-OUTPOST-ID/bucket/SOURCE-OUTPOSTS-BUCKET/object/*",
                  "arn:aws:s3-outposts:us-east-1: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:us-east-1:123456789012:outpost/DESTINATION-OUTPOST-ID/bucket/DESTINATION-OUTPOSTS-BUCKET/object/*",
                  "arn:aws:s3-outposts:us-east-1:123456789012:outpost/DESTINATION-OUTPOST-ID/accesspoint/DESTINATION-OUTPOSTS-BUCKET-ACCESS-POINT/object/*"
              ]
          }
      ]
  }
  ```

------

  访问策略授予以下操作的权限：
  + `s3-outposts:GetObjectVersionForReplication` – 授予对所有对象执行此操作的权限，以允许 S3 on Outposts 获取与每个对象关联的特定对象版本。

    
  + `s3-outposts:GetObjectVersionTagging` – 针对 *`SOURCE-OUTPOSTS-BUCKET`* 桶（源桶）中的对象执行此操作的权限允许 S3 on Outposts 读取对象标签以进行复制。有关更多信息，请参阅 [为 S3 on Outposts 存储桶添加标签](S3OutpostsBucketTags.md)。如果 S3 on Outposts 没有此权限，它将复制对象而不是对象标签。
  + `s3-outposts:ReplicateObject` 和 `s3-outposts:ReplicateDelete` – 针对 *`DESTINATION-OUTPOSTS-BUCKET`* 桶（目标桶）中的所有对象执行这些操作的权限允许 S3 on Outposts 将对象或删除标记复制到目标 Outposts 桶。有关删除标记的信息，请参阅 [删除操作对复制操作有何影响](S3OutpostsReplication.md#outposts-replication-delete-op)。
**注意**  
对 *`DESTINATION-OUTPOSTS-BUCKET`* 桶（目标桶）执行 `s3-outposts:ReplicateObject` 操作的权限还允许复制对象标签。因此，您无需显式授予执行 `s3-outposts:ReplicateTags` 操作的权限。
对于跨账户复制，目标 Outposts 桶的拥有者必须更新其桶策略，以授予对 *`DESTINATION-OUTPOSTS-BUCKET`* 执行 `s3-outposts:ReplicateObject` 操作的权限。`s3-outposts:ReplicateObject` 操作允许 S3 on Outposts 将对象和对象标签复制到目标 Otposts 桶。

  有关 S3 on Outposts 操作的列表，请参阅 [S3 on Outposts 定义的操作](https://docs.aws.amazon.com/service-authorization/latest/reference/list_amazons3onoutposts.html#amazons3onoutposts-actions-as-permissions)。
**重要**  
拥有 IAM 角色的 AWS 账户 必须拥有其向 IAM 角色授予的操作的权限。  
例如，假定源 Outposts 桶包含由另一个 AWS 账户拥有的对象。对象的拥有者必须通过桶策略和接入点策略，向拥有 IAM 角色的 AWS 账户显式授予必要的权限。否则，S3 on Outposts 无法访问这些对象，因而这些对象的复制将失败。  
此处介绍的权限与最低复制配置相关。如果您选择添加可选复制配置，则必须向 S3 on Outposts 授予其他权限。

### 在源和目标 Outposts 桶由不同的 AWS 账户拥有时授予权限
<a name="outposts-rep-prethree"></a>

当源和目标 Outposts 桶由不同的账户拥有时，目标 Outposts 桶的拥有者必须针对目标桶更新桶策略和接入点策略。这些策略必须向源 Outposts 桶的拥有者和 IAM 服务角色授予执行复制操作的权限，如以下策略示例所示，否则复制将失败。在以下策略示例中，*`DESTINATION-OUTPOSTS-BUCKET`* 是目标桶。要使用这些策略示例，请将 `user input placeholders` 替换为您自己的信息。

如果您手动创建 IAM 服务角色，请将角色路径设置为 `role/service-role/`，如以下策略示例所示。有关更多信息，请参阅 *IAM 用户指南*中的 [IAM ARN](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_identifiers.html#identifiers-arns)。

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Id": "PolicyForDestinationBucket",
    "Statement": [
        {
            "Sid": "Permissions on objects",
            "Effect": "Allow",
            "Principal": {
                "AWS": "arn:aws:iam::111122223333:role/service-role/source-account-IAM-role"
            },
            "Action": [
                "s3-outposts:ReplicateDelete",
                "s3-outposts:ReplicateObject"
            ],
            "Resource": [
                "arn:aws:s3-outposts:us-east-1:444455556666:outpost/DESTINATION-OUTPOST-ID/bucket/DESTINATION-OUTPOSTS-BUCKET/object/*"
            ]
        }
    ]
}
```

------

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Id": "PolicyForDestinationAccessPoint",
    "Statement": [
        {
            "Sid": "Permissions on objects",
            "Effect": "Allow",
            "Principal": {
                "AWS": "arn:aws:iam::111122223333:role/service-role/source-account-IAM-role"
            },
            "Action": [
                "s3-outposts:ReplicateDelete",
                "s3-outposts:ReplicateObject"
            ],
            "Resource": [
                "arn:aws:s3-outposts:us-east-1:111122223333:outpost/DESTINATION-OUTPOST-ID/accesspoint/DESTINATION-OUTPOSTS-BUCKET-ACCESS-POINT/object/*"
            ]
        }
    ]
}
```

------

**注意**  
如果源 Outposts 桶中的对象带有标签，请注意以下事项：  
如果源 Outposts 桶拥有者向 S3 on Outposts 授予执行 `s3-outposts:GetObjectVersionTagging` 和 `s3-outposts:ReplicateTags` 操作的权限来复制对象标签（通过 IAM 角色），则 Amazon S3 将复制标签以及对象。有关 IAM 角色的信息，请参阅 [创建 IAM 角色](#outposts-rep-pretwo)。