本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
在 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)
在 https://console.aws.amazon.com/ecr/ 開啟 Amazon ECR 主控台。
-
從導覽列選擇要在其中建立儲存庫建立範本的區域。
-
在導覽窗格中,選擇私有登錄檔,儲存庫建立範本。
-
在儲存庫建立範本頁面上,選擇建立範本。
-
在步驟 1:定義範本頁面上,針對範本詳細資料,選擇特定字首以將範本套用至特定儲存庫命名空間字首,或選擇 ECR 登錄檔中的任何字首,將範本套用至與區域中任何其他範本不相符的所有儲存庫。
-
如果您選擇特定字首,請針對字首指定要套用範本的儲存庫命名空間字首。總會有一個假設 /
套用至字首的結尾。例如,prod
字首會套用至開頭為 prod/
的所有儲存庫。同樣地,prod/team
字首會套用至開頭為 prod/team/
的所有儲存庫。
-
如果您選擇 ECR 登錄檔中的任何字首,字首將設定為 ROOT
。
-
對於適用於 的 ,指定此範本將套用到哪些 Amazon ECR 工作流程。選項包括 PULL_THROUGH_CACHE
和 REPLICATION
.
-
針對範本描述,請指定範本的選擇性描述,然後選擇下一步。
-
在步驟 2:新增儲存庫建立組態頁面中,指定要套用至使用範本建立之儲存庫的儲存庫設定組態。
-
針對 Image tag mutability (映像標籤可變性),選擇要使用的標籤可變性設定。如需詳細資訊,請參閱防止在 Amazon ECR 中覆寫映像標籤。
-
可互斥 – 如果您想要覆寫影像標籤,請選擇此選項。建議用於使用提取快取動作的儲存庫,以確保 Amazon ECR 可以更新快取映像。此外,若要停用幾個可變標籤的標籤更新,請輸入標籤名稱或使用萬用字元 (*) 來比對 Mutable 標籤排除文字方塊中的多個類似標籤。
-
不可變:如果您想要防止映像標籤遭到覆寫,且當推送具有現有標籤的映像時,它適用於儲存庫中的所有標籤和排除項目,請選擇此選項。ImageTagAlreadyExistsException
如果您嘗試推送具有現有標籤的映像,Amazon ECR 會傳回 。此外,若要啟用幾個不可變標籤的標籤更新,請輸入標籤名稱或使用萬用字元 (*) 在不可分割標籤排除文字方塊中比對多個類似的標籤。
-
針對加密組態,請選擇要使用的加密設定。如需詳細資訊,請參閱靜態加密。
選取 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 金鑰,稱為客戶受管金鑰。
-
針對儲存庫許可,請指定要套用至使用此範本建立之儲存庫的儲存庫許可政策。您可以選擇性地使用下拉式清單,針對最常見的使用案例選取其中一個 JSON 範例。如需詳細資訊,請參閱Amazon ECR 中的私有儲存庫政策。
-
針對儲存庫生命週期政策,請指定要套用至使用此範本建立的儲存庫之儲存庫生命週期政策。您可以選擇性地使用下拉式清單,針對最常見的使用案例選取其中一個 JSON 範例。如需詳細資訊,請參閱在 Amazon ECR 中使用生命週期政策來自動化映像的清除。
-
對於儲存庫 AWS 標籤,請以鍵值對的形式指定中繼資料,以與使用此範本建立的儲存庫建立關聯,然後選擇下一步。如需詳細資訊,請參閱在 Amazon ECR 中標記私有儲存庫。
-
對於儲存庫建立角色,從下拉式功能表中選取自訂 IAM 角色,以便在範本中使用儲存庫標籤或 KMS 時用於儲存庫建立範本 (如需詳細資訊為儲存庫建立範本建立 IAM 角色,請參閱 )。然後選擇下一步。
-
在步驟 3:檢閱和建立頁面上,檢閱您為儲存庫建立範本指定的設定。選擇編輯選項來進行變更。一旦完成,請選擇建立。
- AWS CLI
-
create-repository-creation-template AWS CLI 命令用於為您的私有登錄檔建立儲存庫建立範本。
若要建立儲存庫建立範本 (AWS CLI)
-
使用 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
}
-
使用上一個步驟的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"
}
-
使用下列命令來建立儲存庫建立範本。請確定您在repository-creation-template.json
下列範例中指定在上一個步驟中建立的組態檔案名稱,以取代 。
aws ecr create-repository-creation-template \
--cli-input-json file://repository-creation-template.json