

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

# Amazon ECR 私有儲存庫
<a name="Repositories"></a>

Amazon ECR 私有儲存庫包含您的 Docker 映像、開放式容器計畫 (OCI) 映像和 OCI 相容成品。您可以建立、監控和刪除映像儲存庫，並設定許可，以控制誰可以使用 Amazon ECR API 操作或 Amazon ECR 主控台的**儲存庫**區段來存取這些儲存庫。Amazon ECR 也與 Docker CLI 整合，因此您可以將映像從開發環境推送和提取到儲存庫。

**Topics**
+ [私有儲存庫概念](#repository-concepts)
+ [建立 Amazon ECR 私有儲存庫以存放映像](repository-create.md)
+ [在 Amazon ECR 中檢視私有儲存庫的內容和詳細資訊](repository-info.md)
+ [在 Amazon ECR 中刪除私有儲存庫](repository-delete.md)
+ [Amazon ECR 中的私有儲存庫政策](repository-policies.md)
+ [在 Amazon ECR 中標記私有儲存庫](ecr-using-tags.md)

## 私有儲存庫概念
<a name="repository-concepts"></a>
+ 根據預設，您的帳戶在預設登錄檔中擁有讀取與寫入存取權 (`aws_account_id.dkr.ecr.region.amazonaws.com`)。然而，使用者需要許可來對 Amazon ECR API 進行呼叫，並從您的儲存庫推送或提取映像。Amazon ECR 提供數個受管政策，以控制不同層級的使用者存取。如需詳細資訊，請參閱[Amazon Elastic Container Registry 身分型政策的範例](security_iam_id-based-policy-examples.md)。
+ 儲存庫可透過 使用者存取政策及個別儲存庫政策加以控制。如需詳細資訊，請參閱[Amazon ECR 中的私有儲存庫政策](repository-policies.md)。
+ 儲存庫名稱可支援命名空間，您也可用該命名空間為相似的儲存庫分組。例如，如果有數個團隊使用相同的登錄檔，團隊 A 可使用 `team-a` 命名空間，而團隊 B 可使用 `team-b` 命名空間。如果這麼做，每個團隊都有自己的名為 `web-app` 的映像，每個映像都以團隊命名空間開頭。此組態允許在不干擾的情況下同時使用每個團隊上的這些映像。A 團隊的映像為 `team-a/web-app`，B 團隊的映像為 `team-b/web-app`。
+ 您的映像可以在您自己的登錄檔和帳戶之間複寫到其他儲存庫。您可以藉由在登錄檔設定中指定複寫組態來執行這項操作。如需詳細資訊，請參閱[Amazon ECR 中的私有登錄檔設定](registry-settings.md)。
+ 在登錄檔層級啟用 Blob 掛載時，儲存庫可以共用常見的映像層。

# 建立 Amazon ECR 私有儲存庫以存放映像
<a name="repository-create"></a>

**重要**  
使用 AWS KMS (DSSE-KMS) 的雙層伺服器端加密僅適用於 AWS GovCloud (US) 區域。

建立 Amazon ECR 私有儲存庫，然後使用儲存庫來存放容器映像。遵循以下步驟，使用 AWS 管理主控台建立私有儲存庫。

**建立儲存庫 (AWS 管理主控台)**

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

1. 從導覽列選擇您儲存庫所建立的區域。

1. 選擇**私有儲存庫**，然後選擇**建立儲存庫**。

1. 在 **Repository name** (儲存庫名稱), 中，為您的儲存庫輸入獨一無二的名稱。儲存庫名稱可以自行指定 (例如 `nginx-web-app`)。或者，可以在其前面加上命名空間，以將儲存庫分組到類別中 (例如 `project-a/nginx-web-app`)。
**注意**  
儲存庫名稱可以是最多 `256` 個字元的容器。名稱必須以字母開頭，且只能包含小寫字母、數字、連字號、底線、句號和斜線。不支援使用雙正斜線。

1. 針對**影像標籤不可變性**，選擇下列其中一個儲存庫的標籤可變性設定。
   + **可互**斥 – 如果您想要覆寫影像標籤，請選擇此選項。建議用於使用提取快取動作的儲存庫，以確保 Amazon ECR 可以更新快取映像。此外，若要停用幾個可變標籤的標籤更新，請輸入標籤名稱或使用萬用字元 (\$1) 來比對 **Mutable 標籤排除文字方塊中的多個類似標籤**。
   + **不可避免** – 如果您想要防止映像標籤遭到覆寫，且當推送具有現有標籤的映像時，它會套用至儲存庫中的所有標籤和排除項目，請選擇此選項。`ImageTagAlreadyExistsException` 如果您嘗試推送具有現有標籤的映像，Amazon ECR 會傳回 。此外，若要啟用幾個不可變標籤的標籤更新，請輸入標籤名稱或使用萬用字元 (\$1) 在**不可分割標籤排除文字方塊中比對多個類似的標籤**。
**注意**  
不支援個別標籤可變性設定。

1. 針對**加密組態**，選擇 **AES-256** 或 ** AWS KMS**。如需詳細資訊，請參閱[靜態加密](encryption-at-rest.md)。

   1.  如果選擇 AWS KMS ，請在單層加密和雙層加密之間進行選擇。使用 AWS KMS 或雙層加密需支付額外費用。如需詳細資訊，請參閱 [Amazon ECR Service 定價](https://aws.amazon.com/ecr/pricing/)。

   1. 根據預設，`aws/ecr`會選擇具有別名的 AWS 受管金鑰。當您第一次建立啟用 AWS KMS 加密的儲存庫時，會在您的帳戶中建立此金鑰。選取**客戶受管金鑰 （進階）** 以選擇您自己的 AWS KMS 金鑰。 AWS KMS 金鑰必須與叢集位於相同的區域。選取**建立 AWS KMS 金鑰**以導覽至 AWS KMS 主控台，以建立您自己的金鑰。

1. 對於**映像掃描設定**，雖然您可以在儲存庫層級指定基本掃描的掃描設定，但最佳實務是在私有登錄檔層級指定掃描組態。在私有登錄檔層級設定掃描設定可讓您在增強型掃描或基本掃描之間進行選擇，也可讓您定義篩選條件以指定應掃描的儲存庫。

1. 選擇**建立**。

**建立儲存庫 (AWS CLI)**

1. 您可以使用 AWS CLI 搭配 **aws ecr create-repository**命令來建立儲存庫。

   ```
   aws ecr create-repository \
               --repository-name hello-repository \
               --region region
   ```

1. 如果您已定義儲存庫建立範本，您可以使用熟悉的 Amazon ECR 推送命令搭配所需的儲存庫名稱來推送映像，以建立儲存庫。Amazon ECR 將使用儲存庫建立範本的預先定義設定，自動為您建立儲存庫。如果您尚未定義儲存庫建立範本，對不存在映像儲存庫的請求將會失敗。

   ```
   docker push aws_account_id.dkr.ecr.region.amazonaws.com/prefix/my-new-repository:tag
   ```

## 後續步驟
<a name="procedure_next_steps"></a>

若要檢視將映像推送到儲存庫的步驟，請選取儲存庫，然後選擇**檢視推送命令**。如需將映像推送到您的儲存庫的詳細資訊，請參閱 [將映像推送至 Amazon ECR 私有儲存庫](image-push.md)。

# 在 Amazon ECR 中檢視私有儲存庫的內容和詳細資訊
<a name="repository-info"></a>

建立私有儲存庫之後，您可以在 中檢視儲存庫的詳細資訊 AWS 管理主控台：
+ 在儲存庫中存放的是哪些映像
+ 有關存放在儲存庫中每個映像的詳細資訊，包括每個映像的大小和 SHA 摘要
+ 指定的儲存庫內容掃描頻率
+ 儲存庫是否具有與其相關聯的作用中提取快取規則
+ 儲存庫的加密設定

**注意**  
若以 Docker 1.9 版本開始，Docker 用戶端在將映像推送至 V2 Docker 登錄檔前，會先壓縮映像層。**docker images** 命令的輸出會顯示未壓縮的映像大小。因此，請記住，Docker 可能會傳回比 AWS 管理主控台中顯示的映像更大的映像。

**檢視儲存庫資訊 (AWS 管理主控台)**

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

1. 從導覽列上，選擇包含要檢視的儲存庫區域。

1. 在導覽窗格中，選擇 **Repositories** (儲存庫)。

1. 在 **Repositories** (儲存庫) 頁面上，選擇 **Private** (私有) 分頁，然後選擇要檢視的儲存庫。

1. 在儲存庫詳細資訊頁面上，主控台預設為顯示 **Images** (映像) 檢視。使用導覽選單檢視與儲存庫有關的其他資訊。
   + 選擇 **Summary** (摘要) 檢視儲存庫詳細資訊和儲存庫的提取計數資料。
   + 選擇 **Images** (映像) 檢視關於儲存庫中映像標籤的資訊。若要檢視關於映像的詳細資訊，請選取映像標籤。如需詳細資訊，請參閱[在 Amazon ECR 中檢視影像詳細資訊](image-info.md)。

     如果有您想刪除的未標記映像，您可以選擇儲存庫左方的方塊以刪除並選擇 **Delete**(刪除)。如需詳細資訊，請參閱[在 Amazon ECR 中刪除映像](delete_image.md)。
   + 選擇 **Permissions** (許可) 以檢視套用到儲存庫的儲存庫政策。如需詳細資訊，請參閱[Amazon ECR 中的私有儲存庫政策](repository-policies.md)。
   + 選擇 **Lifecycle Policy** (生命週期政策) 以檢視套用到儲存庫的生命週期政策。您也可在此檢視生命週期事件歷史。如需詳細資訊，請參閱[在 Amazon ECR 中使用生命週期政策來自動化映像的清除](LifecyclePolicies.md)。
   + 選擇 **Tags** (標籤) 以檢視套用到儲存庫的中繼資料標籤。

# 在 Amazon ECR 中刪除私有儲存庫
<a name="repository-delete"></a>

如果儲存庫已使用完畢，即可將其刪除。當您刪除 中的儲存庫時 AWS 管理主控台，儲存庫中包含的所有映像也會一併刪除；這無法復原。

**重要**  
也會刪除已刪除儲存庫中的影像。您無法復原此操作。

**若要刪除儲存庫 (AWS 管理主控台)**

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

1. 從導覽列上，選擇包含要刪除的儲存庫區域。

1. 在導覽窗格中，選擇 **Repositories** (儲存庫)。

1. 在 **Repositories** (儲存庫) 頁面上，選擇 **Private** (私有) 分頁，然後選擇要刪除的儲存庫並選擇 **Delete** (刪除)。

1. 在 **Delete *repository\$1name*** (刪除 repository\$1name) 視窗中，確認應刪除的儲存庫已被選擇，再選擇 **Delete** (刪除)。

# Amazon ECR 中的私有儲存庫政策
<a name="repository-policies"></a>

Amazon ECR 使用資源型許可來控制儲存庫的存取。資源型許可可讓您指定哪些使用者或角色可存取儲存庫，以及他們可以對儲存庫執行哪些動作。根據預設，只有建立儲存庫 AWS 的帳戶可以存取儲存庫。您可以套用儲存庫政策，以允許對儲存庫進行其他存取。

**Topics**
+ [儲存庫政策與 IAM 政策的比較](#repository-policy-vs-iam-policy)
+ [Amazon ECR 中的私有儲存庫政策範例](repository-policy-examples.md)
+ [在 Amazon ECR 中設定私有儲存庫政策陳述式](set-repository-policy.md)

## 儲存庫政策與 IAM 政策的比較
<a name="repository-policy-vs-iam-policy"></a>

Amazon ECR 儲存庫政策是 IAM 政策的子集，其範圍和專門用於控制對單個 Amazon ECR 儲存庫的存取。IAM 政策通常用於套用整個 Amazon ECR 服務的許可，但也可用於控制對特定資源的存取。

在決定特定使用者或角色可以對儲存庫執行哪些動作時，Amazon ECR 儲存庫政策和 IAM 政策都會用到。如果使用者或角色透過儲存庫政策獲准執行某個動作，但是透過 IAM 政策被拒絕許可 (反之亦然)，則該動作將被拒絕。透過儲存庫政策或 IAM 政策任何一個即可允許使用者或角色的動作許可，但不需要兩者都允許。

**重要**  
Amazon ECR 要求使用者擁有透過 IAM 政策呼叫 `ecr:GetAuthorizationToken` API 的許可，然後才能對登錄檔進行身分驗證，並從任何 Amazon ECR 儲存庫推送或提取任何映像。Amazon ECR 提供多種受管 IAM 政策，以控制不同層級的使用者存取。如需詳細資訊，請參閱[Amazon Elastic Container Registry 身分型政策的範例](security_iam_id-based-policy-examples.md)。

您可以使用這些政策類型的任何一個，來控制對您儲存庫的存取，如下列範例所示。

此範例顯示一個 Amazon ECR 儲存庫政策，允許特定使用者描述儲存庫和儲存庫中的映像。

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

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Sid": "ECRRepositoryPolicy",
            "Effect": "Allow",
            "Principal": {"AWS": "arn:aws:iam::111122223333:user/username"},
            "Action": [
                "ecr:DescribeImages",
                "ecr:DescribeRepositories"
            ],
            "Resource": "*"
        }
    ]
}
```

------

此範例顯示一個 IAM 政策，透過使用資源參數將政策的範圍限定在儲存庫 (以儲存庫的完整 ARN 指定)，可達成上述相同的目標。如需有關 Amazon 資源名稱 (ARN) 格式的詳細資訊，請參閱 [Resources](security_iam_service-with-iam.md#security_iam_service-with-iam-id-based-policies-resources)。

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

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Sid": "AllowDescribeRepoImage",
            "Effect": "Allow",
            "Action": [
                "ecr:DescribeImages",
                "ecr:DescribeRepositories"
            ],
            "Resource": ["arn:aws:ecr:us-east-1:111122223333:repository/repository-name"]
        }
    ]
}
```

------

# Amazon ECR 中的私有儲存庫政策範例
<a name="repository-policy-examples"></a>

**重要**  
此頁面上的儲存庫政策範例旨在套用至 Amazon ECR 私有儲存庫。如果直接與 IAM 主體搭配使用，除非為了將 Amazon ECR 儲存庫指定為資源而進行修改，否則它們將無法正常運作。如需有關設定儲存庫政策的詳細資訊，請參閱 [在 Amazon ECR 中設定私有儲存庫政策陳述式](set-repository-policy.md)。

Amazon ECR 儲存庫政策是 IAM 政策的子集，其範圍和專門用於控制對單個 Amazon ECR 儲存庫的存取。IAM 政策通常用於套用整個 Amazon ECR 服務的許可，但也可用於控制對特定資源的存取。如需詳細資訊，請參閱[儲存庫政策與 IAM 政策的比較](repository-policies.md#repository-policy-vs-iam-policy)。

以下儲存庫政策範例顯示您可以用來控制 Amazon ECR 私有儲存庫存取的許可陳述式。

**重要**  
Amazon ECR 要求使用者擁有透過 IAM 政策呼叫 `ecr:GetAuthorizationToken` API 的許可，然後才能對登錄檔進行身分驗證，並從任何 Amazon ECR 儲存庫推送或提取任何映像。Amazon ECR 提供多種受管 IAM 政策，以控制不同層級的使用者存取。如需詳細資訊，請參閱[Amazon Elastic Container Registry 身分型政策的範例](security_iam_id-based-policy-examples.md)。

## 範例：允許一或多個 使用者
<a name="IAM_within_account"></a>

以下儲存庫政策允許一個或多個 使用者向儲存庫推送和從儲存庫提取映像。

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

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Sid": "AllowPushPull",
            "Effect": "Allow",
            "Principal": {
                "AWS": [
                    "arn:aws:iam::111122223333:user/push-pull-user-1",
                    "arn:aws:iam::111122223333:user/push-pull-user-2"
                ]
            },
            "Action": [
                "ecr:BatchGetImage",
                "ecr:BatchCheckLayerAvailability",
                "ecr:CompleteLayerUpload",
                "ecr:GetDownloadUrlForLayer",
                "ecr:InitiateLayerUpload",
                "ecr:PutImage",
                "ecr:UploadLayerPart"
            ],
            "Resource": "*"
        }
    ]
}
```

------

## 範例：允許其他帳戶
<a name="IAM_allow_other_accounts"></a>

下列儲存庫政策允許特定帳戶推入映像。

**重要**  
您授予許可的帳戶必須啟用您正在建立儲存庫政策的區域，否則會發生錯誤。

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

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Sid": "AllowCrossAccountPush",
            "Effect": "Allow",
            "Principal": {
                "AWS": "arn:aws:iam::111122223333:root"
            },
            "Action": [
                "ecr:BatchCheckLayerAvailability",
                "ecr:CompleteLayerUpload",
                "ecr:InitiateLayerUpload",
                "ecr:PutImage",
                "ecr:UploadLayerPart"
            ],
            "Resource": "*"
        }
    ]
}
```

------

下列儲存庫政策允許部分使用者提取映像 (*pull-user-1* 與 *pull-user-2*)，同時提供其他使用者 (*admin-user*) 完整存取權限。

**注意**  
如需 目前不支援的更複雜儲存庫政策 AWS 管理主控台，您可以使用 [https://docs.aws.amazon.com/cli/latest/reference/ecr/set-repository-policy.html](https://docs.aws.amazon.com/cli/latest/reference/ecr/set-repository-policy.html) AWS CLI 命令套用政策。

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

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Sid": "AllowPull",
            "Effect": "Allow",
            "Principal": {
                "AWS": [
                    "arn:aws:iam::111122223333:user/pull-user-1",
                    "arn:aws:iam::111122223333:user/pull-user-2"
                ]
            },
            "Action": [
                "ecr:BatchGetImage",
                "ecr:GetDownloadUrlForLayer"
            ],
            "Resource": "*"
        },
        {
            "Sid": "AllowAll",
            "Effect": "Allow",
            "Principal": {
                "AWS": "arn:aws:iam::111122223333:user/admin-user"
            },
            "Action": [
                "ecr:*"
            ],
            "Resource": "*"
        }
    ]
}
```

------

## 範例：拒絕全部
<a name="IAM_deny_all"></a>

下列儲存庫政策拒絕所有使用者擁有抽出映像的能力。

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

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Sid": "DenyPull",
            "Effect": "Deny",
            "Principal": "*",
            "Action": [
                "ecr:BatchGetImage",
                "ecr:GetDownloadUrlForLayer"
            ],
            "Resource": "*"
        }
    ]
}
```

------

## 範例：限制特定 IP 地址的存取
<a name="IAM_restrict_ip"></a>

在套用來自特定地址範圍的儲存庫時，下列範例拒絕任何使用者執行任何 Amazon ECR 操作的許可。

此陳述式中的條件會識別允許之網際網路通訊協定第 4 版 (IPv4) IP 地址的 `54.240.143.*` 範圍。

`Condition` 區塊使用 `NotIpAddress`條件和 `aws:SourceIp` 條件金鑰，這是 AWS全局條件金鑰。如需有關這些條件索引鍵的詳細資訊，請參閱 [AWS 全域條件內容索引鍵](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_condition-keys.html)。`aws:sourceIp` IPv4 值會使用標準 CIDR 表示法。如需詳細資訊，請參閱《IAM 使用者指南》**中的 [IP 地址條件運算子](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_elements_condition_operators.html#Conditions_IPAddress)。

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

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Id": "ECRPolicyId1",
    "Statement": [
        {
            "Sid": "IPAllow",
            "Effect": "Deny",
            "Principal": "*",
            "Action": "ecr:*",
            "Resource": "*",
            "Condition": {
                "NotIpAddress": {
                    "aws:SourceIp": "54.240.143.0/24"
                }
            }
        }
    ]
}
```

------

## 範例：允許 AWS 服務
<a name="IAM_service_linked"></a>

下列儲存庫政策允許 AWS CodeBuild 存取與該服務整合所需的 Amazon ECR API 動作。使用以下範例時，您應該使用 `aws:SourceArn` 和 `aws:SourceAccount` 條件索引鍵來調查可以承擔這些許可的資源。如需詳細資訊，請參閱《AWS CodeBuild 使用者指南》**中的 [CodeBuild 的 Amazon ECR 範例](https://docs.aws.amazon.com/codebuild/latest/userguide/sample-ecr.html)。

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

****  

```
{
   "Version":"2012-10-17",		 	 	 
   "Statement":[
      {
         "Sid":"CodeBuildAccess",
         "Effect":"Allow",
         "Principal":{
            "Service":"codebuild.amazonaws.com"
         },
         "Action":[
            "ecr:BatchGetImage",
            "ecr:GetDownloadUrlForLayer"
         ],
         "Resource": "*",
         "Condition":{
            "ArnLike":{
               "aws:SourceArn":"arn:aws:codebuild:us-east-1:123456789012:project/project-name"
            },
            "StringEquals":{
               "aws:SourceAccount":"123456789012"
            }
         }
      }
   ]
}
```

------

# 在 Amazon ECR 中設定私有儲存庫政策陳述式
<a name="set-repository-policy"></a>

您可以 AWS 管理主控台 依照下列步驟，將存取政策陳述式新增至 中的儲存庫。您可以為每個儲存庫新增多個政策陳述式。如需範例政策，請參閱 [Amazon ECR 中的私有儲存庫政策範例](repository-policy-examples.md)。

**重要**  
Amazon ECR 要求使用者擁有透過 IAM 政策呼叫 `ecr:GetAuthorizationToken` API 的許可，然後才能對登錄檔進行身分驗證，並從任何 Amazon ECR 儲存庫推送或提取任何映像。Amazon ECR 提供多種受管 IAM 政策，以控制不同層級的使用者存取。如需詳細資訊，請參閱[Amazon Elastic Container Registry 身分型政策的範例](security_iam_id-based-policy-examples.md)。

**設定儲存庫政策陳述式**

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

1. 從導覽列上，選擇其中包含要設定政策陳述式的儲存庫之區域。

1. 在導覽窗格中，選擇 **Repositories** (儲存庫)。

1. 在 **Repositories** (儲存庫)頁面上，選擇要設定政策陳述式的儲存庫來檢視儲存庫內容。

1. 從儲存庫映像清單檢視的導覽窗格中，選擇 **Permissions** (許可)、**Edit** (編輯)。
**注意**  
如果您在導覽窗格中看不到 **Permissions** (許可) 選項，請確保您位於儲存庫映像清單檢視中。

1. 在 **Edit permissions** (編輯許可) 頁面上，選擇 **Add statement** (新增陳述式)。

1. 對於 **Statement name** (陳述式名稱)，輸入陳述式的名稱。

1. 對於 **Effect** (效果)，選擇會產生允許或明確拒絕的政策陳述式。

1. 對於 **Principal (代理人)**，請選擇要套用政策陳述式的使用者範圍。如需詳細資訊，請參閱《IAM 使用者指南》**中的 [AWS IAM JSON 政策元素：條件](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_elements_principal.html)。
   + 您可以透過選取**每個人 (\$1)** 核取方塊，將陳述式套用至所有已驗證 AWS 的使用者。
   + 對於 **Service principal** (服務委託人)，指定服務委託人名稱 (例如 `ecs.amazonaws.com`) 以套用陳述式到特定的服務。
   + 針對**AWS 帳戶 IDs**，指定 AWS 帳戶號碼 （例如 `111122223333`)，將陳述式套用至特定 AWS 帳戶下的所有使用者。您可以使用逗號分隔清單來指定多個帳戶。
**重要**  
您授予許可的帳戶必須啟用您正在建立儲存庫政策的區域，否則會發生錯誤。
   + 針對 **IAM 實體**，選取要套用陳述式之 AWS 帳戶下的角色或使用者。
**注意**  
如需 目前不支援的更複雜儲存庫政策 AWS 管理主控台，您可以使用 [https://docs.aws.amazon.com/cli/latest/reference/ecr/set-repository-policy.html](https://docs.aws.amazon.com/cli/latest/reference/ecr/set-repository-policy.html) AWS CLI 命令套用政策。

1. 對於 **Actions** (動作)，請選擇政策陳述式應從個別 API 操作清單中套用的 Amazon ECR API 操作範圍。

1. 當您完成時，請選擇 **Save** (儲存) 來設定政策。

1. 為要新增之每個儲存庫政策的重複之前的步驟。

# 在 Amazon ECR 中標記私有儲存庫
<a name="ecr-using-tags"></a>

為了協助您管理 Amazon ECR 儲存庫，您可以使用 AWS 資源*標籤*，將自己的中繼資料指派給新的或現有的 Amazon ECR 儲存庫。例如，您可以為帳戶的 Amazon ECR 儲存庫定義一組標籤，協助您追蹤各個儲存庫的擁有者。

## 標籤基本概念
<a name="tag-basics"></a>

標籤對 Amazon ECR 來說不具有任何語意意義，並會嚴格解譯為字元字串。標籤不會自動指派給您的資源。您可以編輯標籤索引鍵和值，也可以隨時從資源中移除標籤。您可以將標籤的值設為空白字串，但您無法將標籤的值設為 Null。若您將與現有標籤具有相同鍵的標籤新增到該資源，則新值會覆寫舊值。如果您刪除資源，也會刪除任何該資源所使用的標籤。

您可以使用 Amazon ECR 主控台、 AWS CLI和 Amazon ECR API 來使用標籤。

使用 AWS Identity and Access Management (IAM)，您可以控制 AWS 帳戶中哪些使用者具有建立、編輯或刪除標籤的許可。如需 IAM 政策中標籤的資訊，請參閱 [使用標籤型存取控制](ecr-supported-iam-actions-tagging.md)。

## 標記您的資源以便計費
<a name="tag-resources-for-billing"></a>

您新增至 Amazon ECR 儲存庫的標籤在成本與用量報告中啟用後，有助於檢視成本分配。如需詳細資訊，請參閱[Amazon ECR 用量報告](usage-reports.md)。

若想要查看合併資源的成本，您可根據具有相同標籤金鑰值的資源來整理您的帳單資訊。例如，您可以使用特定應用程式名稱來標記數個資源，然後整理帳單資訊以查看該應用程式跨數項服務的總成本。如需有關使用標籤設定成本分配報告的詳細資訊，請參閱《AWS Billing 使用者指南》**中的[每月成本分配報告](https://docs.aws.amazon.com/awsaccountbilling/latest/aboutv2/configurecostallocreport.html)。

**注意**  
若您才剛啟用報告，目前月份的資料會在 24 小時之後提供檢視。

# 將標籤新增至 Amazon ECR 中的私有儲存庫
<a name="adding-tags-repositories"></a>

您可以將標籤新增至私有儲存庫。

如需標籤名稱和最佳實務的相關資訊，請參閱*《標記 AWS 資源使用者指南*》中的[標籤命名限制和要求](https://docs.aws.amazon.com//tag-editor/latest/userguide/tagging.html#tag-conventions)以及[最佳實務](https://docs.aws.amazon.com//tag-editor/latest/userguide/tagging.html#tag-best-practices)。

## 將標籤新增至儲存庫 (AWS 管理主控台)
<a name="tag-resources-console"></a>

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

1. 從導覽列中選取要使用的區域。

1. 在導覽窗格中，選擇 **Repositories** (儲存庫)。

1. 在**儲存庫**頁面上，選取要標記之儲存庫旁邊的核取方塊。

1. 從**動作**選單中選取**儲存庫標籤**。

1. 在**儲存庫標籤**頁面上，選取**新增標籤**、**新增標籤**。

1. 在**編輯儲存庫標籤**頁面上，指定每個標籤的索引鍵和值，然後選擇**儲存**。

## 將標籤新增至儲存庫 (AWS CLI 或 API)
<a name="tag-resources-api-sdk"></a>

您可以使用 或 AWS CLI API 新增或覆寫一或多個標籤。
+ AWS CLI - [tag-resource](https://docs.aws.amazon.com/cli/latest/reference/ecr/tag-resource.html)
+ API 動作：[TagResource](https://docs.aws.amazon.com/AmazonECR/latest/APIReference/API_TagResource.html)

下列範例示範如何使用 新增標籤 AWS CLI。

**範例 1：標記儲存庫**  
下列命令會標記儲存庫。

```
aws ecr tag-resource \
     --resource-arn arn:aws:ecr:region:account_id:repository/repository_name \
     --tags Key=stack,Value=dev
```

**範例 2：使用多個標籤標記儲存庫**  
下列命令會將三個標籤新增至儲存庫。

```
aws ecr tag-resource \
     --resource-arn arn:aws:ecr:region:account_id:repository/repository_name \
     --tags Key=key1,Value=value1 Key=key2,Value=value2 Key=key3,Value=value3
```

**範例 3：列出儲存庫的標籤**  
下列命令會列出與儲存庫相關聯的標籤。

```
aws ecr list-tags-for-resource \
     --resource-arn arn:aws:ecr:region:account_id:repository/repository_name
```

**範例 4：建立儲存庫並新增標籤**  
以下命令建立名為 `test-repo` 的儲存庫，並新增索引鍵為 `team` 和值為 `devs` 的標籤。

```
aws ecr create-repository \
     --repository-name test-repo \
     --tags Key=team,Value=devs
```

# 從 Amazon ECR 中的私有儲存庫刪除標籤
<a name="deleting-tags-repositories"></a>

您可以從私有儲存庫刪除標籤。

## 從私有儲存庫刪除標籤 (AWS 管理主控台)
<a name="deleting-tags-repositories-console"></a>

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

1. 從導覽列中選取要使用的區域。

1. 在**儲存庫**頁面上，選取要移除標籤之儲存庫旁邊的核取方塊。

1. 從**動作**選單中選取**儲存庫標籤**。

1. 在**儲存庫標籤**頁面上，選取**編輯**。

1. 在**編輯儲存庫標籤**頁面上，針對您要刪除的每個標籤，選取**移除**圖示，然後選擇**儲存**。

## 從私有儲存庫刪除標籤 (AWS CLI)
<a name="deleting-tags-repositories-cli"></a>

您可以使用 或 AWS CLI API 刪除一或多個標籤。
+ AWS CLI - [untag-resource](https://docs.aws.amazon.com/cli/latest/reference/ecr/untag-resource.html)
+ API 動作 - [UntagResource](https://docs.aws.amazon.com/AmazonECR/latest/APIReference/API_UntagResource.html)

下列範例顯示如何使用 從儲存庫刪除標籤 AWS CLI。

```
aws ecr untag-resource \
     --resource-arn arn:aws:ecr:region:account_id:repository/repository_name \
     --tag-keys tag_key
```