Amazon ECR でのリポジトリ作成テンプレートの作成 - Amazon ECR

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

Amazon ECR でのリポジトリ作成テンプレートの作成

リポジトリ作成テンプレートを作成して、プルスルーキャッシュまたはレプリケーションのアクションで Amazon ECR がユーザーに代わって作成したリポジトリに使用する設定を定義できます。リポジトリ作成テンプレートが作成されると、作成されたすべての新しいリポジトリにその設定が適用されます。これは以前に作成されたリポジトリには影響しません。

テンプレートを使用してリポジトリを設定する際に、KMS キーとリソースタグを指定するオプションがあります。1 つ以上のテンプレートで 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. Amazon ECR コンソール (https://console.aws.amazon.com/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. [イメージタグのミュータビリティ] で、このリポジトリのタグの変更可能性の設定を選択します。詳細については、「Amazon ECR でのイメージタグの上書きの防止」を参照してください。

      • ミュータブル – イメージタグを上書きする場合は、このオプションを選択します。Amazon ECR がキャッシュされたイメージを更新できるように、プルスルーキャッシュアクションを使用するリポジトリに推奨されます。さらに、いくつかの変更可能なタグのタグ更新を無効にするには、タグ名を入力するか、ワイルドカード (*) を使用して、変更可能なタグ除外テキストボックスの複数の類似タグに一致します。

      • イミュータブル – イメージタグが上書きされるのを防ぎ、既存のタグでイメージをプッシュするときにリポジトリ内のすべてのタグと除外に適用される場合は、このオプションを選択します。既存のタグを持つイメージをプッシュ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 サンプルを 1 つ選択できます。詳細については、「Amazon ECR でのプライベートリポジトリポリシー」を参照してください。

    4. [リポジトリライフサイクルポリシー] では、このテンプレートを使用して作成されたリポジトリに適用するリポジトリライフサイクルポリシーを指定します。オプションで、ドロップダウンを使用して、最も一般的なユースケース用の JSON サンプルを 1 つ選択できます。詳細については、「Amazon ECR でのライフサイクルポリシーを使用したイメージのクリーンアップの自動化」を参照してください。

    5. リポジトリ AWS タグでは、メタデータをキーと値のペアの形式で指定して、このテンプレートを使用して作成されたリポジトリに関連付け、次を選択します。詳細については、「Amazon ECR でのプライベートリポジトリのタグ付け」を参照してください。

    6. [リポジトリ作成ロール] では、テンプレートでリポジトリタグまたは KMS を使用する場合にリポジトリ作成テンプレートに使用するカスタム IAM ロールをドロップダウンメニューから選択します (詳細については「リポジトリ作成テンプレート用の IAM ロールの作成」を参照)。その後、[次へ] を選択します。

  9. [ステップ 3: 確認と作成] ページで、リポジトリ作成テンプレートに指定した設定を確認します。[編集] を選択して、変更を加えます。完了したら、[作成] を選択します。

AWS CLI

create-repository-creation-template AWS CLI コマンドは、プライベートレジストリのリポジトリ作成テンプレートを作成するために使用されます。

リポジトリ作成テンプレートを作成するには (AWS CLI)
  1. を使用して、create-repository-creation-template コマンドのスケルトン AWS CLI を生成します。

    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 という名前のファイルを作成します。このテンプレートは、 で作成されたリポジトリの KMS 暗号化キーを、将来のリポジトリへのイメージのプッシュとプルを可能にするリポジトリポリシーprod/*で設定し、2 週間以上経過したイメージを期限切れにするライフサイクルポリシーを設定し、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