

本文為英文版的機器翻譯版本，如內容有任何歧義或不一致之處，概以英文版為準。

# 授予 Amazon ECR 中跨帳戶複寫的登錄檔許可
<a name="registry-permissions-create-replication"></a>

跨帳戶政策類型用於將許可授予 AWS 委託人，允許將儲存庫從來源登錄檔複寫到您的登錄檔。根據預設，您可以在自己的登錄檔中設定跨區域複寫的許可。您只需要設定登錄檔政策，如果您授予另一個帳戶將內容複寫到登錄檔的許可。

登錄檔政策必須授予 `ecr:ReplicateImage` API 動作的許可。這個 API 為內部的 Amazon ECR API，可以在區域或帳戶之間複寫映像。您也可以授予 ` ecr:CreateRepository` 許可，這允許 Amazon ECR 在您的登錄檔中建立儲存庫 (如果它們尚不存在)。如果未提供 `ecr:CreateRepository` 許可，則必須在登錄檔中手動建立具有與來源儲存庫相同名稱的儲存庫。如果兩者都未完成，複寫則會失敗。任何失敗的 `CreateRepository`或 `ReplicateImage` API 動作都會顯示在 CloudTrail 中。

## 設定複寫許可政策 (AWS 管理主控台)
<a name="registry-permissions-create-console"></a>

1. 在 [https://console.aws.amazon.com/ecr/](https://console.aws.amazon.com/ecr/) 開啟 Amazon ECR 主控台。

1. 從導覽列，選擇要在其中設定登錄檔政策的區域。

1. 在導覽窗格中，選擇**私有登錄**檔，選擇**功能和設定**，然後選擇**許可**。

1. 在 **Registry permissions** (登錄檔許可) 頁面上，選擇 **Generate statement** (產生陳述式)。

1. 使用政策產生器完成下列步驟以定義您的政策陳述式。

   1. 針對**政策類型**，選擇**複寫 - 跨帳戶**。

   1. 針對**陳述式 ID**，輸入唯一的陳述式 ID。此欄位用作 `Sid` 在登錄檔政策上。

   1. 對於 **Accounts** (帳戶)，輸入您要授予許可的每個帳戶的帳戶 ID。指定多個帳戶 ID 時，以逗號分隔。

1. 選擇**儲存**。

## 設定複寫許可政策 (AWS CLI)
<a name="registry-permissions-create-cli"></a>

1. 建立名為 `registry_policy.json` 的檔案，並將其填入登錄檔政策。

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

****  

   ```
   {
       "Version":"2012-10-17",		 	 	 
       "Statement":[
           {
               "Sid":"ReplicationAccessCrossAccount",
               "Effect":"Allow",
               "Principal":{
                   "AWS":"arn:aws:iam::111122223333:root"
               },
               "Action":[
                   "ecr:CreateRepository",
                   "ecr:ReplicateImage"
               ],
               "Resource": [
                   "arn:aws:ecr:us-west-2:444455556666:repository/*"
               ]
           }
       ]
   }
   ```

------

1. 使用政策檔案建立登錄檔政策。

   ```
   aws ecr put-registry-policy \
         --policy-text file://registry_policy.json \
         --region us-west-2
   ```

1. 擷取登錄檔的政策以確認。

   ```
   aws ecr get-registry-policy \
         --region us-west-2
   ```