在 Amazon ECR 中建立儲存庫建立範本 - Amazon ECR

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

在 Amazon ECR 中建立儲存庫建立範本

您可以建立儲存庫建立範本,以定義在提取快取或複寫動作期間,用於 Amazon ECR 代表您建立之儲存庫的設定。建立儲存庫建立範本後,所有建立的新儲存庫都會套用這些設定。這並不影響任何先前建立的儲存庫。

使用範本設定儲存庫時,您可以選擇指定 KMS 金鑰和資源標籤。如果您想要在一或多個範本中使用 KMS 金鑰、資源標籤或兩者的組合,您需要:

設定完成後,您可以將自訂角色連接至登錄檔中的特定範本。

建立儲存庫建立範本的 IAM 許可

IAM 主體需要下列許可才能管理儲存庫建立範本。必須使用身分型 IAM 政策授予此許可。

  • ecr:CreateRepositoryCreationTemplate – 准許建立儲存庫建立範本。

  • ecr:UpdateRepositoryCreationTemplate – 准許更新儲存庫建立範本。

  • ecr:DescribeRepositoryCreationTemplates – 准許列出登錄檔中的儲存庫建立範本。

  • ecr:DeleteRepositoryCreationTemplate – 准許刪除儲存庫建立範本。

  • ecr:CreateRepository – 准許建立 Amazon ECR 儲存庫。

  • ecr:PutLifecyclePolicy – 准許建立生命週期政策,並將其套用至儲存庫。僅當儲存庫建立範本包含生命週期政策時,才需要此許可。

  • ecr:SetRepositoryPolicy – 准許為儲存庫建立許可政策。僅當儲存庫建立範本包含儲存庫政策時,才需要此許可。

  • iam:PassRole – 准許允許實體將角色傳遞至服務或應用程式。需要擔任角色才能代表您執行動作的服務和應用程式需要此許可。

建立儲存庫建立範本

完成範本的必要先決條件後,您就可以繼續建立儲存庫建立範本。

AWS Management Console
若要建立儲存庫建立範本 (AWS Management Console)
  1. https://console.aws.amazon.com/ecr/ 開啟 Amazon ECR 主控台。

  2. 從導覽列選擇要在其中建立儲存庫建立範本的區域。

  3. 在導覽窗格中,選擇私有登錄檔儲存庫建立範本

  4. 儲存庫建立範本頁面上,選擇建立範本

  5. 步驟 1:定義範本頁面上,針對範本詳細資料,選擇特定字首以將範本套用至特定儲存庫命名空間字首,或選擇 ECR 登錄檔中的任何字首,將範本套用至與區域中任何其他範本不相符的所有儲存庫。

    1. 如果您選擇特定字首,請針對字首指定要套用範本的儲存庫命名空間字首。總會有一個假設 / 套用至字首的結尾。例如,prod 字首會套用至開頭為 prod/ 的所有儲存庫。同樣地,prod/team 字首會套用至開頭為 prod/team/ 的所有儲存庫。

    2. 如果您選擇 ECR 登錄檔中的任何字首字首將設定為 ROOT

  6. 對於適用於 的 ,指定此範本將套用到哪些 Amazon ECR 工作流程。選項包括 PULL_THROUGH_CACHEREPLICATION.

  7. 針對範本描述,請指定範本的選擇性描述,然後選擇下一步

  8. 步驟 2:新增儲存庫建立組態頁面中,指定要套用至使用範本建立之儲存庫的儲存庫設定組態。

    1. 針對 Image tag mutability (映像標籤可變性),選擇要使用的標籤可變性設定。如需詳細資訊,請參閱防止在 Amazon ECR 中覆寫映像標籤

      • 可互斥 – 如果您想要覆寫影像標籤,請選擇此選項。建議用於使用提取快取動作的儲存庫,以確保 Amazon ECR 可以更新快取映像。此外,若要停用幾個可變標籤的標籤更新,請輸入標籤名稱或使用萬用字元 (*) 來比對 Mutable 標籤排除文字方塊中的多個類似標籤

      • 不可變:如果您想要防止映像標籤遭到覆寫,且當推送具有現有標籤的映像時,它適用於儲存庫中的所有標籤和排除項目,請選擇此選項。ImageTagAlreadyExistsException 如果您嘗試推送具有現有標籤的映像,Amazon ECR 會傳回 。此外,若要啟用幾個不可變標籤的標籤更新,請輸入標籤名稱或使用萬用字元 (*) 在不可分割標籤排除文字方塊中比對多個類似的標籤

    2. 針對加密組態,請選擇要使用的加密設定。如需詳細資訊,請參閱靜態加密

      選取 AES-256 時,Amazon ECR 會使用伺服器端加密與 Amazon Simple Storage Service 受管加密金鑰,該加密金鑰使用行業標準的 AES-256 加密演算法對靜態資料進行加密。此服務無須額外付費。

      選取 AWS KMS 時,Amazon ECR 會使用儲存在 AWS Key Management Service (AWS KMS) 中的金鑰進行伺服器端加密。當您使用 AWS KMS 加密資料時,您可以使用由 Amazon ECR 管理的預設 AWS 受管金鑰,或指定自己的 AWS KMS 金鑰,稱為客戶受管金鑰

      注意

      一旦建立儲存庫,就無法變更儲存庫的加密設定。

    3. 針對儲存庫許可,請指定要套用至使用此範本建立之儲存庫的儲存庫許可政策。您可以選擇性地使用下拉式清單,針對最常見的使用案例選取其中一個 JSON 範例。如需詳細資訊,請參閱Amazon ECR 中的私有儲存庫政策

    4. 針對儲存庫生命週期政策,請指定要套用至使用此範本建立的儲存庫之儲存庫生命週期政策。您可以選擇性地使用下拉式清單,針對最常見的使用案例選取其中一個 JSON 範例。如需詳細資訊,請參閱在 Amazon ECR 中使用生命週期政策來自動化映像的清除

    5. 對於儲存庫 AWS 標籤,請以鍵值對的形式指定中繼資料,以與使用此範本建立的儲存庫建立關聯,然後選擇下一步。如需詳細資訊,請參閱在 Amazon ECR 中標記私有儲存庫

    6. 對於儲存庫建立角色,從下拉式功能表中選取自訂 IAM 角色,以便在範本中使用儲存庫標籤或 KMS 時用於儲存庫建立範本 (如需詳細資訊為儲存庫建立範本建立 IAM 角色,請參閱 )。然後選擇下一步

  9. 步驟 3:檢閱和建立頁面上,檢閱您為儲存庫建立範本指定的設定。選擇編輯選項來進行變更。一旦完成,請選擇建立

AWS CLI

create-repository-creation-template AWS CLI 命令用於為您的私有登錄檔建立儲存庫建立範本。

若要建立儲存庫建立範本 (AWS CLI)
  1. 使用 AWS CLI 為 create-repository-creation-template 命令產生骨架。

    aws ecr create-repository-creation-template \ --generate-cli-skeleton

    命令的輸出會顯示儲存庫建立範本的完整語法。

    { "appliedFor":[""], // string array, but valid are PULL_THROUGH_CACHE and REPLICATION "prefix": "string", "description": "string", "imageTagMutability": "MUTABLE"|"IMMUTABLE"|"IMMUTABLE_WITH_EXCLUSION"|"MUTABLE_WITH_EXCLUSION", "imageTagMutabilityExclusionFilters": [ "filterType": "WILDCARD", "filter": "string" ], "repositoryPolicy": "string", "lifecyclePolicy": "string" "encryptionConfiguration": { "encryptionType": "AES256"|"KMS", "kmsKey": "string" }, "resourceTags": [ { "Key": "string", "Value": "string" } ], "customRoleArn": "string", // must be a valid IAM Role ARN }
  2. 使用上一個步驟的repository-creation-template.json輸出建立名為 的檔案。此範本會使用儲存庫政策,為在 下建立的任何prod/*儲存庫設定 KMS 加密金鑰,以啟用將映像推送和提取到未來的儲存庫、設定生命週期政策,使映像過期超過兩週,並設定自訂角色,讓 ECR 存取 KMS 金鑰,並將資源標籤指派給examplekey未來的儲存庫。

    { "prefix": "prod", "description": "For repositories cached from my PTC rule and in my replication configuration that start with 'prod/'", "appliedFor": ["PULL_THROUGH_CACHE","REPLICATION"], "encryptionConfiguration": { "encryptionType": "KMS", "kmsKey": "arn:aws:kms:us-west-2:111122223333:key/a1b2c3d4-5678-90ab-cdef-example11111" }, "resourceTags": [ { "Key": "examplekey", "Value": "examplevalue" } ], "imageTagMutability": "IMMUTABLE_WITH_EXCLUSION", "imageTagMutabilityExclusionFilters": [ { "filterType": "WILDCARD", "filter": "latest" }, { "filterType": "WILDCARD", "filter": "beta*" } ] "repositoryPolicy": "{\"Version\":\"2012-10-17\",\"Statement\":[{\"Sid\":\"AllowPushPullIAMRole\",\"Effect\":\"Allow\",\"Principal\":{\"AWS\":\"arn:aws:iam::111122223333:user\/IAMusername\"},\"Action\":[\"ecr:BatchGetImage\",\"ecr:BatchCheckLayerAvailability\",\"ecr:CompleteLayerUpload\",\"ecr:GetDownloadUrlForLayer\",\"ecr:InitiateLayerUpload\",\"ecr:PutImage\",\"ecr:UploadLayerPart\"]}]}", "lifecyclePolicy": "{\"rules\":[{\"rulePriority\":1,\"description\":\"Expire images older than 14 days\",\"selection\":{\"tagStatus\":\"any\",\"countType\":\"sinceImagePushed\",\"countUnit\":\"days\",\"countNumber\":14},\"action\":{\"type\":\"expire\"}}]}", "customRoleArn": "arn:aws:iam::111122223333:role/myRole" }
  3. 使用下列命令來建立儲存庫建立範本。請確定您在repository-creation-template.json下列範例中指定在上一個步驟中建立的組態檔案名稱,以取代 。

    aws ecr create-repository-creation-template \ --cli-input-json file://repository-creation-template.json