

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

# Amazon ECR でのリポジトリ作成テンプレートの作成
<a name="repository-creation-templates-create"></a>

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

テンプレートを使用してリポジトリを設定する際に、KMS キーとリソースタグを指定するオプションがあります。1 つ以上のテンプレートで KMS キー、リソースタグ、またはその両方の組み合わせを使用する場合は、以下を行う必要があります。
+ [リポジトリ作成テンプレートのカスタムポリシーの作成](repository-creation-templates-custom.md).
+ [リポジトリ作成テンプレート用の IAM ロールの作成](repository-creation-templates-create-iam.md).

設定が完了したら、カスタムロールをレジストリ内の特定のテンプレートにアタッチできます。



## リポジトリ作成テンプレートを作成するための IAM アクセス許可
<a name="repository-creation-templates-iam"></a>

IAM プリンシパルがリポジトリ作成テンプレートを管理するには、以下のアクセス許可が必要です。これらのアクセス許可は、アイデンティティに基づく IAM ポリシーを使用して付与する必要があります。
+ `ecr:CreateRepositoryCreationTemplate` — リポジトリ作成テンプレートを作成するアクセス許可を付与します。
+ `ecr:UpdateRepositoryCreationTemplate` — リポジトリ作成テンプレートを更新するためのアクセス許可を付与します。
+ `ecr:DescribeRepositoryCreationTemplates` – レジストリ内のリポジトリ作成テンプレートをリストするためのアクセス許可を付与します。
+ `ecr:DeleteRepositoryCreationTemplate` — リポジトリ作成テンプレートを削除するアクセス許可を付与します。
+ `ecr:CreateRepository` – Amazon ECR リポジトリを作成するためのアクセス許可を付与します。
+ `ecr:PutLifecyclePolicy` — ライフサイクルポリシーを作成し、それをリポジトリに適用するアクセス許可を付与します。このアクセス許可は、リポジトリ作成テンプレートにライフサイクルポリシーが含まれている場合にのみ必要です。
+ `ecr:SetRepositoryPolicy` — リポジトリのアクセス許可ポリシーを作成するアクセス許可を付与します。このアクセス許可は、リポジトリ作成テンプレートにリポジトリポリシーが含まれている場合にのみ必要です。
+ `iam:PassRole` – エンティティがサービスまたはアプリケーションにロールを渡すことを許可するためのアクセス許可を付与します。このアクセス許可は、ユーザーに代わってアクションを実行するロールを引き受ける必要があるサービスやアプリケーションに必要です。

# リポジトリ作成テンプレートのカスタムポリシーの作成
<a name="repository-creation-templates-custom"></a>

を使用して、後で IAM ロールに関連付けられるポリシー AWS マネジメントコンソール を定義できます。その後、この IAM ロールは、リポジトリ作成テンプレートを設定するときにリポジトリ作成ロールとして使用できます。

------
#### [ AWS マネジメントコンソール ]

**JSON ポリシーエディタを使用してリポジトリ作成テンプレートのカスタムポリシーを作成するには、次の手順を実行します。**

1. にサインイン AWS マネジメントコンソール し、[https://console.aws.amazon.com/iam/](https://console.aws.amazon.com/iam/) で IAM コンソールを開きます。

1. 左側のナビゲーションペインで、**[ポリシー]** を選択します。

1. [**Create policy**] (ポリシーの作成) を選択します。

1. [**ポリシーエディタ**] セクションで、[**JSON**] オプションを選択します。

1. **[JSON]** フィールドに次のポリシーを入力します。

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

****  

   ```
   { 
           "Version":"2012-10-17",		 	 	  
           "Statement": [ 
               { 
                   "Effect": "Allow",
                   "Action": [ 
                       "ecr:CreateRepository", 
                       "ecr:ReplicateImage", 
                       "ecr:TagResource" 
                   ], 
                   "Resource": "*" 
               }, 
               {
                   "Effect": "Allow", 
                   "Action": [ 
                       "kms:CreateGrant", 
                       "kms:RetireGrant", 
                       "kms:DescribeKey" 
                   ], 
                   "Resource": "*" 
               } 
            ]
   }
   ```

------

1. [ポリシーの検証](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_policy-validator.html)中に生成されたセキュリティ警告、エラー、または一般警告をすべて解決してから、**[次へ]** を選択します。

1. ポリシーにアクセス権限を追加し終えたら、[**次へ**] を選択します。

1. [**確認と作成**] ページで、作成するポリシーの [**ポリシー名**] と [**説明**] (オプション) を入力します。**このポリシーで定義されているアクセス許可** を確認して、ポリシーによって付与されたアクセス許可を確認します。

1. **ポリシーを作成** をクリックして、新しいポリシーを保存します。

1. 作成テンプレート用にこのポリシーを割り当てるロールを作成します。「[リポジトリ作成テンプレート用の IAM ロールの作成](repository-creation-templates-create-iam.md)」を参照してください。

------

# リポジトリ作成テンプレート用の IAM ロールの作成
<a name="repository-creation-templates-create-iam"></a>

を使用して、テンプレートでリポジトリタグまたは KMS を使用しているリポジトリ作成テンプレートでリポジトリ作成ロールを指定するときに、Amazon ECR で使用できるロール AWS マネジメントコンソール を作成できます。

------
#### [ AWS マネジメントコンソール ]

**ロールを作成するには、次の手順を実行します。**

1. にサインイン AWS マネジメントコンソール し、[https://console.aws.amazon.com/iam/](https://console.aws.amazon.com/iam/) で IAM コンソールを開きます。

1. コンソールのナビゲーションペインで、**[ロール]**、**[ロールの作成]** の順に選択します。

1. **[カスタム信頼ポリシー]** ロールタイプを選択します。

1. **[カスタム信頼ポリシー]** セクションで、以下にリストされているカスタム信頼ポリシーを貼り付けます。

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

****  

   ```
   {
   "Version":"2012-10-17",		 	 	 
   "Statement": [
       {
           "Effect": "Allow",
           "Principal": {
               "Service": "ecr.amazonaws.com"
           },
           "Action": "sts:AssumeRole"
       }
       ]
   }
   ```

------

1. [**次へ**] を選択します。

1. **[アクセス許可の追加]** ページで、アクセス許可ポリシーのリストから、先ほど作成したカスタムポリシーの横にあるチェックボックスを選択し、**[次へ]** を選択します。

1. **ロール名** に、ロールの名前を入力します。ロール名は 内で一意である必要があります AWS アカウント。ロール名がポリシーとして、または ARN の一部として使用される場合、ロール名は大文字と小文字を区別します。サインイン処理中など、コンソールでロール名がユーザーに表示される場合、ロール名は大文字と小文字を区別しません。さまざまなエンティティがロールを参照する可能性があるため、作成後にロール名を編集することはできません。

1. (オプション) **[説明]** には、新しいロールの説明を入力します。

1. ロール情報を確認し、**ロールの作成** を選択します。

------

## リポジトリ作成テンプレートの作成
<a name="repository-creation-templates-creating"></a>

テンプレートに必要な前提条件をすべて満たしたら、リポジトリ作成テンプレートの作成に進むことができます。

------
#### [ AWS マネジメントコンソール ]

**リポジトリ作成テンプレートを作成するには (AWS マネジメントコンソール)**

1. Amazon ECR コンソール ([https://console.aws.amazon.com/ecr/](https://console.aws.amazon.com/ecr/)) を開きます。

1. ナビゲーションバーから、リポジトリ作成テンプレートを作成するリージョンを選択します。

1. ナビゲーションペインで、**[プライベートレジストリ]**、**[リポジトリ作成テンプレート]** を選択します。

1. **[リポジトリ作成テンプレート]** ページで、**[テンプレートを作成]** を選択します。

1. **[ステップ 1: テンプレートの定義]** ページの **[テンプレートの詳細]** で、**[特定のプレフィックス]** を選択してテンプレートを特定のリポジトリ名前空間のプレフィックスに適用するか、**[ECR レジストリの任意のプレフィックス]** を選択して、リージョン内の他のテンプレートと一致しないすべてのリポジトリにテンプレートを適用します。

   1. **[特定のプレフィックス]** を選択した場合は、**[プレフィックス]** にテンプレートを適用するリポジトリ名前空間プレフィックスを指定します。プレフィックスの末尾には常に `/` が適用されると想定されます。例えば、`prod` というプレフィックスは、`prod/` で始まるすべてのリポジトリに適用されます。同様に、`prod/team` というプレフィックスは、`prod/team/` で始まるすべてのリポジトリに適用されます。

   1. **[ECR レジストリの任意のプレフィックス]** を選択すると、**[プレフィックス]** は `ROOT` に設定されます。

1. **[適用対象]** では、このテンプレートを適用する Amazon ECR ワークフローを指定します。使用できるオプションは `PULL_THROUGH_CACHE`、`CREATE_ON_PUSH`、および `REPLICATION` です。

1. **[テンプレートの説明]** には、テンプレートの説明をオプションで指定し、**[次へ]** を選択します。

1. **[ステップ 2: リポジトリ作成設定の追加]** ページで、テンプレートを使用して作成されたリポジトリに適用するリポジトリ設定設定を指定します。

   1. **[イメージタグのミュータビリティ]** で、このリポジトリのタグの変更可能性の設定を選択します。詳細については、「[Amazon ECR でのイメージタグの上書きの防止](image-tag-mutability.md)」を参照してください。
      + **[ミュータブル]** – イメージタグを上書きする場合は、このオプションを選択します。Amazon ECR がキャッシュされたイメージを更新できるように、プルスルーキャッシュアクションを使用するリポジトリに推奨されます。さらに、いくつかのミュータブルタグのタグ更新を無効にするには、**[Mutable tag exclusion]** テキストボックスにタグ名を入力します。複数の類似したタグが一致するワイルドカード (\$1) を使用できます。
      + **[イミュータブル]** – イメージタグが上書きされるのを防ぎ、既存のタグを含むイメージをプッシュするときに、リポジトリ内のすべてのタグと除外に適用する場合、このオプションを選択します。Amazon ECR は、既存のタグを使用してイメージをプッシュしようとすると `ImageTagAlreadyExistsException` を返します。さらに、いくつかのイミュータブルタグのタグ更新を有効にするには、**[Immutable tag exclusion]** テキストボックスにタグ名を入力します。複数の類似したタグが一致するワイルドカード (\$1) を使用できます。

   1. **[暗号化設定]** では、使用する暗号化設定を選択します。詳細については、「[保管中の暗号化](encryption-at-rest.md)」を参照してください。

      **[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 キーを指定できます。
**注記**  
一度リポジトリを作成すると、リポジトリの暗号化設定は変更できません。

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

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

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

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

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

------
#### [ AWS CLI ]

[create-repository-creation-template](https://docs.aws.amazon.com/cli/latest/reference/ecr/create-repository-creation-template.html) AWS CLI コマンドは、プライベートレジストリのリポジトリ作成テンプレートを作成するために使用されます。

**リポジトリ作成テンプレートを作成するには (AWS CLI)**

1. を使用して、[create-repository-creation-template](https://docs.aws.amazon.com/cli/latest/reference/ecr/create-repository-creation-template.html) コマンドのスケルトン AWS CLI を生成します。

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

   コマンドの出力には、リポジトリ作成テンプレートの完全な構文が表示されます。

   ```
   {
   "appliedFor":[""], // string array, but valid are PULL_THROUGH_CACHE, CREATE_ON_PUSH, 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
   }
   ```

1. 前のステップの出力を使用して、`repository-creation-template.json` という名前のファイルを作成します。このテンプレートは、将来のリポジトリへのイメージのプッシュとプルを許可するリポジトリポリシーを使用して `prod/*` の下に作成されたリポジトリに対する KMS 暗号化キーを設定し、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", "CREATE_ON_PUSH", "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"
   }
   ```

1. 次のコマンドを使用して、リポジトリ作成テンプレートを作成します。次の例では、`repository-creation-template.json` の代わりに、前のステップで作成した設定ファイルの名前を指定することを確認してください。

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

------