

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

# アップストリームレジストリと Amazon ECR プライベートレジストリの同期
<a name="pull-through-cache"></a>

プルスルーキャッシュルールを使用すると、アップストリームレジストリのコンテンツを Amazon ECR プライベートレジストリと同期できます。

Amazon ECR は現在、次のアップストリームレジストリのプルスルーキャッシュルールの作成をサポートしています。
+ Amazon ECR パブリック、Kubernetes コンテナイメージレジストリ、Quay (認証は不要)
+ Docker Hub、Microsoft Azure Container Registry、GitHub Container Registry、GitLab Container Registry、Chainguard Registry (シークレットによる AWS Secrets Manager 認証が必要)
+ Amazon ECR (IAM AWS ロールによる認証が必要)

GitLab コンテナレジストリの場合、Amazon ECR は GitLab の Software as a Service (SaaS) オファリングでのみプルスルーキャッシュをサポートします。GitLab の SaaS オファリングの使用の詳細については、[GitLab.com](https://docs.gitlab.com/17.5/subscriptions/choosing_subscription/)を参照してください。

シークレット (Docker Hub など) による認証を必要とするアップストリームレジストリの場合、認証情報を AWS Secrets Manager シークレットに保存する必要があります。Amazon ECR コンソールを使用して、認証されたアップストリームレジストリごとに Secrets Manager シークレットを作成できます。Secrets Manager コンソールを使用して Secrets Manager シークレットを作成する方法の詳細については、「[シー AWS Secrets Manager クレットへのアップストリームリポジトリ認証情報の保存](pull-through-cache-creating-secret.md)」を参照してください。

Amazon ECR の場合、アップストリームとダウンストリームの Amazon ECR レジストリが異なる AWS アカウントに属している場合、IAM ロールを作成する必要があります。IAM ロールの作成の詳細については 「[クロスアカウント ECR から ECR へのプルスルーキャッシュに必要な IAM ポリシー](pull-through-cache-private.md#pull-through-cache-private-permissions)」 をご参照ください。

アップストリームレジストリのプルスルーキャッシュルールを作成したら、Amazon ECR プライベートレジストリ URI を使用して、そのアップストリームレジストリからイメージをプルします。次に Amazon ECR はリポジトリを作成し、そのイメージをプライベートレジストリにキャッシュします。特定のタグのあるキャッシュされたイメージの後続のプルリクエストでは、Amazon ECR はアップストリームレジストリをチェックして、その特定のタグを持つイメージの新しいバージョンがあるかどうかを確認し、プライベートレジストリ内のイメージの更新を少なくとも 24 時間に 1 回試みます。

## リポジトリ作成テンプレート
<a name="pull-through-cache-respository-creation-template"></a>

Amazon ECR でリポジトリ作成テンプレートのサポートが追加されました。これにより、Amazon ECR がプルスルーキャッシュルールを使用してユーザーの代わりに作成する新しいリポジトリの初期設定を、指定できるようになります。各テンプレートには、新しいリポジトリを特定のテンプレートと一致させるために使用されるリポジトリ名前空間プレフィックスが含まれています。テンプレートでは、リソースベースのアクセスポリシー、タグのイミュータビリティ、暗号化、ライフサイクルポリシーなど、すべてのリポジトリ設定の設定を指定できます。リポジトリ作成テンプレートの設定はリポジトリの作成時にのみ適用され、既存のリポジトリや他の方法で作成されたリポジトリには影響しません。詳細については、「[プルスルーキャッシュ、プッシュ時作成、またはレプリケーションアクション中に作成されたリポジトリを制御するテンプレート](repository-creation-templates.md)」を参照してください。

## プルスルーキャッシュルールを使用するための考慮事項
<a name="pull-through-cache-considerations"></a>

Amazon ECR のプルスルーキャッシュルールを使用する際には、以下の点について考慮する必要があります。
+ 次のリージョンでは、プルスルーキャッシュルールの作成はサポートされていません。
  + 中国 (北京) (`cn-north-1`)
  + 中国 (寧夏) (`cn-northwest-1`)
  + AWS GovCloud (米国東部) (`us-gov-east-1`)
  + AWS GovCloud (米国西部) (`us-gov-west-1`)
+ AWS Lambda は、プルスルーキャッシュルールを使用した Amazon ECR からのコンテナイメージのプルをサポートしていません。
+ プルスルーキャッシュを使用してイメージをプルする場合、イメージを最初にプルするときに Amazon ECR FIPS サービスエンドポイントはサポートされません。ただし、Amazon ECR FIPS サービスエンドポイントは、その後のプルでも使用できます。
+ 認証を必要とするアップストリームリポジトリの場合、イメージが Amazon ECR プライベートレジストリ URI を初めてプルするか、キャッシュを更新すると、イメージのプルはプルスルーキャッシュルールで設定された認証情報に関連付けられたユーザーによって開始されます。それ以降のプルは、顧客のプライベートレジストリのキャッシュから直接イメージを返します。
+ 認証を必要としないアップストリームリポジトリの場合、イメージが Amazon ECR プライベートレジストリ URI を介してプルされると、イメージのプルは AWS IP アドレスによって開始されます。
+ キャッシュされたイメージが Amazon ECR プライベートレジストリ URI を介してプルされると、Amazon ECR はアップストリームリポジトリを少なくとも 24 時間に 1 回チェックして、キャッシュされたイメージが最新バージョンであるかどうかを確認します。アップストリームレジストリに新しいイメージがある場合、Amazon ECR はキャッシュされたイメージの更新を試みます。このタイマーは、キャッシュされたイメージの最後のプルに基づいています。
+ Amazon ECR が何らかの理由でアップストリームレジストリからイメージを更新できず、イメージがプルされた場合でも、最後にキャッシュされたイメージがプルされます。
+ アップストリームのレジストリ認証情報を含む Secrets Manager シークレットを作成する場合、シークレット名には `ecr-pullthroughcache/` プレフィックスを使用する必要があります。シークレットは、プルスルーキャッシュルールが作成されたのと同じアカウントとリージョンにある必要もあります。
+ プルスルーキャッシュルールを使用してマルチアーキテクチャイメージをプルすると、マニフェストリストとマニフェストリストで参照されている各イメージが Amazon ECR リポジトリにプルされます。特定のアーキテクチャのみをプルする場合は、マニフェストリストに関連付けられたタグではなく、アーキテクチャに関連付けられたイメージダイジェストまたはタグを使用してイメージをプルできます。
+ Amazon ECR は、サービスにリンクされた IAM ロールを使用します。このロールは、Amazon ECR がユーザーに代わってキャッシュされたイメージのリポジトリを作成し、認証のために Secret Manager シークレット値を取得し、キャッシュされたイメージをプッシュするために必要なアクセス許可を提供します。プルスルーキャッシュルールを作成すると、サービスにリンクされた IAM ロールが自動的に作成されます。詳細については、「[プルスルーキャッシュの Amazon ECR サービスにリンクされたロール](slr-pullthroughcache.md)」を参照してください。
+ デフォルトで、キャッシュされたイメージをプルする IAM プリンシパルには、IAM ポリシーによってアクセス許可が付与されています。Amazon ECR プライベートレジストリアクセス許可ポリシーを使用して、IAM エンティティのアクセス許可のスコープをさらに設定できます。詳細については、「[レジストリ許可の使用](pull-through-cache-iam.md#pull-through-cache-registry-permissions)」を参照してください。
+ プルスルーキャッシュワークフローを使用して作成された Amazon ECR リポジトリは、他の Amazon ECR リポジトリと同様に処理されます。レプリケーションやイメージスキャンなど、すべてのリポジトリ機能がサポートされています。
+ Amazon ECR がプルスルーキャッシュアクションを使用してユーザーに代わって新しいリポジトリを作成すると、一致するリポジトリ作成テンプレートがない限り、次のデフォルト設定がリポジトリに適用されます。リポジトリ作成テンプレートを使用して、Amazon ECR がユーザーに代わって作成したリポジトリに適用される設定を定義できます。詳細については、「[プルスルーキャッシュ、プッシュ時作成、またはレプリケーションアクション中に作成されたリポジトリを制御するテンプレート](repository-creation-templates.md)」を参照してください。
  + タグのイミュータビリティ – タグのイミュータビリティは、イメージタグを上書きできるかどうかを指定します。デフォルトでは、イメージタグはミュータブル (上書き可能) です。タグの動作を変更するには、**[ミュータブル]** が選択されている場合は **[ミュータブルタグ除外]** テキストボックスでタグ除外フィルターを設定し、**[イミュータブル]** が選択されている場合は **[イミュータブルタグ除外]** テキストボックスでタグ除外フィルターを設定します。
  + 暗号化 – デフォルトの `AES256` 暗号化が使用されます。
  + リポジトリ権限 – 省略。リポジトリ権限ポリシーは適用されません。
  + ライフサイクルポリシー – 省略。ライフサイクルポリシーは適用されません。
  + リソースタグ – 省略。リソースタグは適用されません。
+ プルスルーキャッシュルールを使用してリポジトリのイメージタグのイミュータビリティを有効にすると、Amazon ECR が同じタグを使用してイメージを更新できなくなります。
+ プルスルーキャッシュルールを使用して初めてイメージをプルする場合、インターネットへのルートが必要になる場合があります。特定の状況ではインターネットへのルートが必要になるため、障害を回避するためにルートを設定することをお勧めします。したがって、 を使用してインターフェイス VPC エンドポイントを使用するように Amazon ECR を設定している場合は AWS PrivateLink 、最初のプルにインターネットへのルートがあることを確認する必要があります。これを行う方法の 1 つは、同じ VPC にインターネットゲートウェイを持つパブリックサブネットを作成し、プライベートサブネットからインターネットへのすべてのアウトバウンドトラフィックをパブリックサブネットにルーティングすることです。プルスルーキャッシュルールを使用した後続のイメージプルでは、これは必要ありません。詳細については、Amazon Virtual Private Cloud ユーザーガイドの「[ルーティングオプションの例](https://docs.aws.amazon.com/vpc/latest/userguide/route-table-options.html)」を参照してください。

# アップストリームレジストリと Amazon ECR プライベートレジストリを同期するために必要な IAM アクセス許可
<a name="pull-through-cache-iam"></a>

プルスルーキャッシュルールを効果的に使用するためには、プライベートレジストリへの認証とイメージのプッシュとプルに必要となる Amazon ECR API のアクセス許可に加えて、次のアクセス許可も更に必要となります。
+ `ecr:CreatePullThroughCacheRule` – プルスルーキャッシュルールを作成するアクセス許可を付与します。このアクセス許可は、アイデンティティに基づく IAM ポリシーを介して付与する必要があります。
+ `ecr:BatchImportUpstreamImage` – 外部イメージを取得し、プライベートレジストリにインポートするアクセス許可を付与します。このアクセス許可は、プライベートレジストリアクセス許可ポリシー、ID に基づく IAM ポリシー、またはリソースに基づくリポジトリアクセス許可ポリシーを使用して付与できます。レポジトリアクセス許可の使用に関する詳細については、「[Amazon ECR でのプライベートリポジトリポリシー](repository-policies.md)」を参照してください。
+ `ecr:CreateRepository` – プライベートレジストリにリポジトリを作成するアクセス許可を付与します。キャッシュされたイメージを格納するリポジトリがまだ存在しない場合には、この許可が必要となります。このアクセス許可は、アイデンティティに基づく IAM ポリシーまたはプライベートレジストリアクセス許可のいずれかによって付与できます。

## レジストリ許可の使用
<a name="pull-through-cache-registry-permissions"></a>

Amazon ECR プライベートレジストリ許可は、プルスルーキャッシュを使用する個々の IAM エンティティのアクセス許可のスコープ設定に使用できます。レジストリ許可ポリシーによって付与されるアクセス許可よりも多くのアクセス許可が IAM ポリシーによって IAM エンティティに付与される場合、IAM ポリシーが優先されます。例えば、 ユーザーに `ecr:*` 許可が付与されている場合には、レジストリレベルで更に許可する必要はありません。

### プライベートレジストリの許可ポリシーを作成するには (AWS マネジメントコンソール)
<a name="pull-through-cache-registry-permissions-console"></a>

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

1. ナビゲーションバーから、プライベートレジストリ許可ステートメントを設定するリージョンを選択します。

1. ナビゲーションペインで、**[Private registry]** (プライベートレジストリ)、**[Registry permissions]** (レジストリー許可) の順に選択します。

1. **[Registry permissions]** (レジストリー許可) ページで **[Generate statement]** (ステートメントを生成) を選択します。

1. 作成するプルスルーキャッシュ許可ポリシーステートメントごとに、次の操作を行います。

   1. **[ポリシータイプ]** で、**[プルスルーキャッシュポリシー]** を選択します。

   1. **[ステートメント ID]** で、プルスルーキャッシュステートメントポリシーの名前を指定します。

   1. **[IAM entities]** (IAM エンティティ) で、ポリシーに含めるユーザー、グループ、またはロールを指定します。

   1. **[リポジトリ名前空間]** で、ポリシーを関連付けるプルスルーキャッシュルールを選択します。

   1. **[リポジトリ名]** で、ルールを適用するリポジトリベース名を指定します。たとえば、Amazon ECR パブリックで Amazon Linux リポジトリを指定する場合、リポジトリ名は `amazonlinux` になります。

### プライベートレジストリの許可ポリシーを作成するには (AWS CLI)
<a name="pull-through-cache-registry-permissions-cli"></a>

を使用してプライベートレジストリのアクセス許可を指定するには、次の AWS CLI コマンドを使用します AWS CLI。

1. レジストリポリシーのコンテンツが含まれる `ptc-registry-policy.json` という名のローカルファイルを作成します。次の例では、リポジトリを作成し、以前に作成したプルスルーキャッシュルールに関連付けられたアップストリームソースである Amazon ECR Public からイメージをプルする `ecr-pull-through-cache-user` 許可が付与されています。

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

****  

   ```
   {
     "Version":"2012-10-17",		 	 	 
     "Statement": [
       {
         "Sid": "PullThroughCacheFromReadOnlyRole",
         "Effect": "Allow",
         "Principal": {
           "AWS": "arn:aws:iam::111122223333:user/ecr-pull-through-cache-user"
         },
         "Action": [
           "ecr:CreateRepository",
           "ecr:BatchImportUpstreamImage"
         ],
         "Resource": "arn:aws:ecr:us-east-1:111122223333:repository/ecr-public/*"
       }
     ]
   }
   ```

------
**重要**  
`ecr-CreateRepository` 許可は、キャッシュされたイメージを格納するリポジトリがまだ存在しない場合にのみ必要となります。たとえば、リポジトリ作成アクションとイメージをプルするアクションが、管理者や開発者などの別の IAM プリンシパルによって実行されている場合などです。

1. レジストリポリシーを設定するには、[put-registry-policy](https://docs.aws.amazon.com/cli/latest/reference/ecr/put-registry-policy.html) コマンドを使用します。

   ```
   aws ecr put-registry-policy \
        --policy-text file://ptc-registry.policy.json
   ```

## 次の手順
<a name="pull-through-cache-next-steps"></a>

プルスルーキャッシュルールを使用する準備ができたら、次のステップは以下のとおりです。
+ プルスルーキャッシュルールを作成します。詳細については、「[Amazon ECR でのプルスルーキャッシュルールの作成](pull-through-cache-creating-rule.md)」を参照してください。
+ リポジトリ作成テンプレートを作成します。リポジトリ作成テンプレートは、プルスルーキャッシュアクションで Amazon ECR がユーザーに代わって作成した新しいリポジトリに使用する設定を定義することができます。詳細については、「[プルスルーキャッシュ、プッシュ時作成、またはレプリケーションアクション中に作成されたリポジトリを制御するテンプレート](repository-creation-templates.md)」を参照してください。

# クロスアカウント ECR から ECR PTC へのアクセス許可を設定する
<a name="pull-through-cache-private"></a>

Amazon ECR から Amazon ECR (ECR から ECR) へのプルスルーキャッシュ機能を使用すると、リージョン、 AWS アカウント、またはその両方間でイメージを自動的に同期できます。ECR to ECR PTC を使用すると、プライマリ Amazon ECR レジストリにイメージをプッシュし、ダウンストリーム Amazon ECR レジストリにイメージをキャッシュするようにプルスルーキャッシュルールを設定できます。

## クロスアカウント ECR から ECR へのプルスルーキャッシュに必要な IAM ポリシー
<a name="pull-through-cache-private-permissions"></a>

異なる AWS アカウント間で Amazon ECR レジストリ間でイメージをキャッシュするには、ダウンストリームアカウントに IAM ロールを作成し、このセクションのポリシーを設定して、次のアクセス許可を付与します。
+ Amazon ECR には、ユーザーに代わってアップストリーム Amazon ECR レジストリからイメージをプルするためのアクセス許可が必要です。これらのアクセス許可を付与するには、IAM ロールを作成し、プルスルーキャッシュルールで指定します。
+ アップストリームレジストリ所有者は、イメージをリソースポリシーにプルするために必要なアクセス許可をキャッシュレジストリ所有者に付与する必要があります。

**Topics**
+ [プルスルーキャッシュのアクセス許可を定義する IAM ロールを作成する](#ecr-policies-for-cross-account-ecr-to-ecr-pull-through-cache)
+ [IAM ロールの信頼ポリシーを作成する](#ecr-creating-a-trust-policy-for-the-iam-role)
+ [アップストリーム Amazon ECR レジストリでリソースポリシーを作成する](#ecr-creating-registry-permissions-policy-in-upstream-registry)

### プルスルーキャッシュのアクセス許可を定義する IAM ロールを作成する
<a name="ecr-policies-for-cross-account-ecr-to-ecr-pull-through-cache"></a>

次の例は、ユーザーに代わってアップストリーム Amazon ECR レジストリからイメージをプルするアクセス許可を IAM ロールに付与するアクセス許可ポリシーを示しています。Amazon ECR がこのロールを引き受ける場合、このポリシーで指定されたアクセス許可を受け取ります。

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

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Sid": "VisualEditor0",
            "Effect": "Allow",
            "Action": [
                "ecr:GetDownloadUrlForLayer",
                "ecr:GetAuthorizationToken",
                "ecr:BatchImportUpstreamImage",
                "ecr:BatchGetImage",
                "ecr:GetImageCopyStatus",
                "ecr:InitiateLayerUpload",
                "ecr:UploadLayerPart",
                "ecr:CompleteLayerUpload",
                "ecr:PutImage"
            ],
            "Resource": "*"
        }
    ]
}
```

------

### IAM ロールの信頼ポリシーを作成する
<a name="ecr-creating-a-trust-policy-for-the-iam-role"></a>

次の例は、ロールを引き受けることができる AWS サービスプリンシパルとして Amazon ECR プルスルーキャッシュを識別する信頼ポリシーを示しています。

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

****  

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

------

### アップストリーム Amazon ECR レジストリでリソースポリシーを作成する
<a name="ecr-creating-registry-permissions-policy-in-upstream-registry"></a>

アップストリーム Amazon ECR レジストリ所有者は、レジストリポリシーまたはリポジトリポリシーを追加して、ダウンストリームレジストリ所有者に次のアクションを実行するために必要なアクセス許可を付与する必要があります。

**注記**  
次のリソースポリシーは、**クロスアカウント ECR から** ECR へのプルスルーキャッシュ設定にのみ必要です。**同じアカウント、クロスリージョン**のプルスルーキャッシュの場合、前のセクションで示した IAM ロールポリシーと信頼ポリシーのみが必要です。アップストリームレジストリとダウンストリームレジストリが同じアカウントにある場合、ルート AWS アカウントプリンシパルのアクセス許可は必要ありません。

```
{
    "Effect": "Allow",
    "Principal": {
        "AWS": "arn:aws:iam::444455556666:root"
    },
    "Action": [
        "ecr:BatchGetImage",
        "ecr:GetDownloadUrlForLayer",
        "ecr:BatchImportUpstreamImage",
        "ecr:GetImageCopyStatus"
    ],
    "Resource": "arn:aws:ecr:region:111122223333:repository/*"
}
```

# Amazon ECR でのプルスルーキャッシュルールの作成
<a name="pull-through-cache-creating-rule"></a>

Amazon ECR プライベートレジストリにキャッシュするイメージを含むアップストリームレジストリごとに、プルスルーキャッシュルールを作成する必要があります。

シークレットでの認証が必要なアップストリームレジストリでは、認証情報を Secrets Manager シークレットに保存する必要があります。既存の シークレットを使用するか、新しいシークレットを作成できます。Secrets Manager シークレットは、Amazon ECR コンソールで作成することも、Secrets Manager コンソールで作成することもできます。Amazon ECR コンソールの代わりに Secrets Manager コンソールを使用して Secrets Manager シークレットを作成するには、「[シー AWS Secrets Manager クレットへのアップストリームリポジトリ認証情報の保存](pull-through-cache-creating-secret.md)」を参照してください。

## 前提条件
<a name="cache-rule-prereq"></a>
+ プルスルーキャッシュルールを作成するための適切な IAM アクセス許可を持っていることを確認します。詳細については、「[アップストリームレジストリと Amazon ECR プライベートレジストリを同期するために必要な IAM アクセス許可](pull-through-cache-iam.md)」を参照してください。
+ シークレットでの認証が必要なアップストリームレジストリの場合: 既存のシークレットを使用する場合は、Secrets Manager シークレットが以下の要件を満たしていることを確認します。
  + シークレットの名前は `ecr-pullthroughcache/` で始まります。 AWS マネジメントコンソール には、`ecr-pullthroughcache/` プレフィックスが付いた Secrets Manager シークレットのみが表示されます。
  + シークレットが存在するアカウントおよびリージョンは、プルスルーキャッシュルールが存在するアカウントおよびリージョンと一致する必要があります。

## プルスルーキャッシュルールの作成 (AWS マネジメントコンソール)
<a name="pull-through-cache-creating-rule-console"></a>

以下のステップは、Amazon ECR コンソールを使用してプルスルーキャッシュルールと Secrets Manager シークレットを作成する方法を示しています。Secrets Manager コンソールを使用してシークレットを作成するには、「[シー AWS Secrets Manager クレットへのアップストリームリポジトリ認証情報の保存](pull-through-cache-creating-secret.md)」を参照してください。

### Amazon ECR パブリック、Kubernetes コンテナレジストリ、または Quay の場合
<a name="w2aac28c27b9b7b1"></a>

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

1. ナビゲーションバーから、プライベートレジストリ設定を構成するリージョンを選択します。

1. ナビゲーションペインで、**[Private registry]** (プライベートレジストリ)、**[Pull through cache]** (プルスルーキャッシュ) の順に選択します。

1. **[Pull through cache configuration]** (プルスルーキャッシュの設定) ページで、**[Add rule]** (ルールの追加) を選択します。

1. **[ステップ 1: ソースを指定]** ページの **[レジストリ]** で、アップストリームレジストリのリストから Amazon ECR パブリック、Kubernetes、または Quay のいずれかを選択し、**[次へ]** を選択します。

1. **[ステップ 2: 宛先を指定する]** ページの **[Amazon ECR リポジトリプレフィックス]** で、ソースパブリックレジストリから取得したイメージをキャッシュするときに使用するリポジトリ名前空間プレフィックスを指定し、**[次へ]** を選択します。デフォルトでは、名前空間は設定されていますが、カスタム名前空間も指定できます。

1. **[ステップ 3: 確認と作成]** ページで、プルスルーキャッシュルールの設定を確認し、**[作成]** を選択します。

1. 作成する各プルスルーキャッシュに対して、前のステップを繰り返します。プルスルーキャッシュルールは、リージョンごとに個別に作成されます。

### Docker Hub の場合
<a name="w2aac28c27b9b7b3"></a>

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

1. ナビゲーションバーから、プライベートレジストリ設定を構成するリージョンを選択します。

1. ナビゲーションペインで、**[Private registry]** (プライベートレジストリ)、**[Pull through cache]** (プルスルーキャッシュ) の順に選択します。

1. **[Pull through cache configuration]** (プルスルーキャッシュの設定) ページで、**[Add rule]** (ルールの追加) を選択します。

1. **[ステップ 1: ソースを指定]** ページの **[レジストリ]** で **[Docker Hub]** を選択し、**[次へ]** を選択します。

1. **[ステップ 2: 認証の設定]** ページの **[アップストリームの認証情報]** では、Docker Hub の認証認証情報を AWS Secrets Manager シークレットに保存する必要があります。既存のシークレットを指定するか、Amazon ECR コンソールを使用して新しいシークレットを作成できます。

   1. 既存のシークレットを使用するには、既存のシーク** AWS レットを使用する**を選択します。**[シークレット名]** では、ドロップダウンを使用して既存のシークレットを選択し、**[次へ]** を選択します。
**注記**  
には、 `ecr-pullthroughcache/` プレフィックスを使用する名前の Secrets Manager シークレット AWS マネジメントコンソール のみが表示されます。シークレットは、プルスルーキャッシュルールが作成されたのと同じアカウントとリージョンにある必要もあります。

   1. 新しいシークレットを作成するには、**[ AWS シークレットを作成する]** を選択し、次の操作を行って、**[次へ]** を選択します。

      1. **[シークレット名]** には、シークレットのわかりやすい名前を指定します。シークレット名は 1～512 文字の Unicode 文字で構成されます。

      1. **[Docker Hub の E メール]** には、Docker Hub の E メールを指定します。

      1. **[Docker Hub のアクセストークン]**には、Docker Hub アクセストークンを指定します。Docker Hub アクセストークンの作成について詳しくは、Docker ドキュメントの「[Create and manage access tokens](https://docs.docker.com/security/for-developers/access-tokens/)」を参照してください。

1. **[ステップ 3: 宛先を指定する]** ページの **[Amazon ECR リポジトリプレフィックス]** で、ソースパブリックレジストリから取得したイメージをキャッシュするときに使用するリポジトリ名前空間を指定し、**[次へ]** を選択します。

   デフォルトでは、名前空間は設定されていますが、カスタム名前空間も指定できます。

1. **[ステップ 4: 確認と作成]** ページで、プルスルーキャッシュルールの設定を確認し、**[作成]** を選択します。

1. 作成する各プルスルーキャッシュに対して、前のステップを繰り返します。プルスルーキャッシュルールは、リージョンごとに個別に作成されます。

### GitHub コンテナレジストリの場合
<a name="w2aac28c27b9b7b5"></a>

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

1. ナビゲーションバーから、プライベートレジストリ設定を構成するリージョンを選択します。

1. ナビゲーションペインで、**[Private registry]** (プライベートレジストリ)、**[Pull through cache]** (プルスルーキャッシュ) の順に選択します。

1. **[Pull through cache configuration]** (プルスルーキャッシュの設定) ページで、**[Add rule]** (ルールの追加) を選択します。

1. **[ステップ 1: ソースを指定]** ページの **[レジストリ]** で **[GitHub コンテナレジストリ]** を選択し、**[次へ]** を選択します。

1. **[ステップ 2: 認証の設定]** ページの **[アップストリームの認証情報]** では、GitHub コンテナレジストリ の認証認証情報を AWS Secrets Manager シークレットに保存する必要があります。既存のシークレットを指定するか、Amazon ECR コンソールを使用して新しいシークレットを作成できます。

   1. 既存のシークレットを使用するには、既存のシーク** AWS レットを使用する**を選択します。**[シークレット名]** では、ドロップダウンを使用して既存のシークレットを選択し、**[次へ]** を選択します。
**注記**  
には、 `ecr-pullthroughcache/` プレフィックスを使用する名前の Secrets Manager シークレット AWS マネジメントコンソール のみが表示されます。シークレットは、プルスルーキャッシュルールが作成されたのと同じアカウントとリージョンにある必要もあります。

   1. 新しいシークレットを作成するには、**[ AWS シークレットを作成する]** を選択し、次の操作を行って、**[次へ]** を選択します。

      1. **[シークレット名]** には、シークレットのわかりやすい名前を指定します。シークレット名は 1～512 文字の Unicode 文字で構成されます。

      1. **[GitHub コンテナレジストリのユーザー名]** には、GitHub コンテナレジストリのユーザー名を指定します。

      1. **[GitHub コンテナレジストリアクストークン]** には、GitHub コンテナレジストリアクセストークンを指定します。GitHub アクセストークンの作成の詳細については、GitHub ドキュメントの「[個人用アクセストークンを管理する](https://docs.github.com/en/authentication/keeping-your-account-and-data-secure/managing-your-personal-access-tokens)」を参照してください。

1. **[ステップ 3: 宛先を指定する]** ページの **[Amazon ECR リポジトリプレフィックス]** で、ソースパブリックレジストリから取得したイメージをキャッシュするときに使用するリポジトリ名前空間を指定し、**[次へ]** を選択します。

   デフォルトでは、名前空間は設定されていますが、カスタム名前空間も指定できます。

1. **[ステップ 4: 確認と作成]** ページで、プルスルーキャッシュルールの設定を確認し、**[作成]** を選択します。

1. 作成する各プルスルーキャッシュに対して、前のステップを繰り返します。プルスルーキャッシュルールは、リージョンごとに個別に作成されます。

### Microsoft Azure コンテナレジストリの場合
<a name="w2aac28c27b9b7b7"></a>

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

1. ナビゲーションバーから、プライベートレジストリ設定を構成するリージョンを選択します。

1. ナビゲーションペインで、**[Private registry]** (プライベートレジストリ)、**[Pull through cache]** (プルスルーキャッシュ) の順に選択します。

1. **[Pull through cache configuration]** (プルスルーキャッシュの設定) ページで、**[Add rule]** (ルールの追加) を選択します。

1. **[ステップ 1:ソースの指定]** ページで、以下の操作を行います。

   1. **[レジストリ]** には、**[Microsoft Azure コンテナレジストリ]** を選択します。

   1. **[ソースレジストリ URL]** に Microsoft Azure コンテナレジストリの名前を指定し、**[次へ]** を選択します。
**重要**  
`.azurecr.io` サフィックスはユーザーに代わって入力されるため、プレフィックスを指定するだけで済みます。

1. **[ステップ 2: 認証の設定]** ページの **[アップストリームの認証情報]** では、Microsoft Azure コンテナレジストリ の認証認証情報を AWS Secrets Manager シークレットに保存する必要があります。既存のシークレットを指定するか、Amazon ECR コンソールを使用して新しいシークレットを作成できます。

   1. 既存のシークレットを使用するには、既存のシーク** AWS レットを使用する**を選択します。**[シークレット名]** では、ドロップダウンを使用して既存のシークレットを選択し、**[次へ]** を選択します。
**注記**  
には、 `ecr-pullthroughcache/` プレフィックスを使用する名前の Secrets Manager シークレット AWS マネジメントコンソール のみが表示されます。シークレットは、プルスルーキャッシュルールが作成されたのと同じアカウントとリージョンにある必要もあります。

   1. 新しいシークレットを作成するには、**[ AWS シークレットを作成する]** を選択し、次の操作を行って、**[次へ]** を選択します。

      1. **[シークレット名]** には、シークレットのわかりやすい名前を指定します。シークレット名は 1～512 文字の Unicode 文字で構成されます。

      1. **[Microsoft Azure コンテナレジストリのユーザー名]** には、Microsoft Azure コンテナーレジストリのユーザー名を指定します。

      1. **[Microsoft Azure コンテナレジストリのアクセストークン]** には、Microsoft Azure コンテナレジストリのアクセストークンを指定します。Microsoft Azure コンテナレジストリアクストークンの作成について詳しくは、Microsoft Azure ドキュメントの「[トークンを作成する - ポータル](https://learn.microsoft.com/en-us/azure/container-registry/container-registry-repository-scoped-permissions#create-token---portal)」を参照してください。

1. **[ステップ 3: 宛先を指定する]** ページの **[Amazon ECR リポジトリプレフィックス]** で、ソースパブリックレジストリから取得したイメージをキャッシュするときに使用するリポジトリ名前空間を指定し、**[次へ]** を選択します。

   デフォルトでは、名前空間は設定されていますが、カスタム名前空間も指定できます。

1. **[ステップ 4: 確認と作成]** ページで、プルスルーキャッシュルールの設定を確認し、**[作成]** を選択します。

1. 作成する各プルスルーキャッシュに対して、前のステップを繰り返します。プルスルーキャッシュルールは、リージョンごとに個別に作成されます。

### GitLab コンテナレジストリの場合
<a name="w2aac28c27b9b7b9"></a>

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

1. ナビゲーションバーから、プライベートレジストリ設定を構成するリージョンを選択します。

1. ナビゲーションペインで、**[Private registry]** (プライベートレジストリ)、**[Pull through cache]** (プルスルーキャッシュ) の順に選択します。

1. **[Pull through cache configuration]** (プルスルーキャッシュの設定) ページで、**[Add rule]** (ルールの追加) を選択します。

1. **[ステップ 1: ソースを指定]** ページの [レジストリ] で、[GitLab コンテナレジストリ] を選択し、[次へ] を選択します。

1. **[ステップ 2: 認証の設定]** ページの **[アップストリーム認証情報]** では、GitLab コンテナレジストリの認証情報を AWS Secrets Manager シークレットに保存する必要があります。既存のシークレットを指定するか、Amazon ECR コンソールを使用して新しいシークレットを作成できます。

   1. 既存のシークレットを使用するには、**既存の AWS シー**クレットを使用するを選択します。**[シークレット名]** では、ドロップダウンを使用して既存のシークレットを選択し、**[次へ]** を選択します。Secrets Manager コンソールを使用して Secrets Manager シークレットを作成する方法の詳細については、[シー AWS Secrets Manager クレットへのアップストリームリポジトリ認証情報の保存](pull-through-cache-creating-secret.md) を参照してください。
**注記**  
には、 `ecr-pullthroughcache/` プレフィックスを使用する名前の Secrets Manager シークレット AWS マネジメントコンソール のみが表示されます。シークレットは、プルスルーキャッシュルールが作成されたのと同じアカウントとリージョンにある必要もあります。

   1. 新しいシークレットを作成するには、**[ AWS シークレットを作成する]** を選択し、次の操作を行って、**[次へ]** を選択します。

      1. **[シークレット名]** には、シークレットのわかりやすい名前を指定します。シークレット名は 1～512 文字の Unicode 文字で構成されます。

      1. **[GitLab コンテナレジストリのユーザー名]** には、GitLab コンテナレジストリのユーザー名を指定します。

      1. **[GitLab コンテナレジストリのアクセストークン]** には、GitLab コンテナレジストリのアクセストークンを指定します。GitLab コンテナレジストリのアクセストークンの作成の詳細については、GitLab ドキュメントの「[Personal access tokens](https://docs.gitlab.com/ee/user/profile/personal_access_tokens.html)」、「[Group access tokens](https://docs.gitlab.com/ee/user/group/settings/group_access_tokens.html)」、または「[Project access tokens](https://docs.gitlab.com/ee/user/project/settings/project_access_tokens.html)」を参照してください。

1. **[ステップ 3: 宛先を指定する]** ページの **[Amazon ECR リポジトリプレフィックス]** で、ソースパブリックレジストリから取得したイメージをキャッシュするときに使用するリポジトリ名前空間を指定し、**[次へ]** を選択します。

   デフォルトでは、名前空間は設定されていますが、カスタム名前空間も指定できます。

1. **[ステップ 4: 確認と作成]** ページで、プルスルーキャッシュルールの設定を確認し、**[作成]** を選択します。

1. 作成する各プルスルーキャッシュに対して、前のステップを繰り返します。プルスルーキャッシュルールは、リージョンごとに個別に作成されます。

### AWS アカウント内の Amazon ECR プライベートレジストリの場合
<a name="ecr-to-pull-images-from-other-regions-within-your-account"></a>

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

1. ナビゲーションバーから、プライベートレジストリ設定を構成するリージョンを選択します。

1. ナビゲーションペインで、**[Private registry]** (プライベートレジストリ)、**[Pull through cache]** (プルスルーキャッシュ) の順に選択します。

1. **[Pull through cache configuration]** (プルスルーキャッシュの設定) ページで、**[Add rule]** (ルールの追加) を選択します。

1. **[ステップ 1: アップストリームの指定]** ページの **[レジストリ]** で、**[Amazon ECR Private] ** と **[このアカウント]** を選択します。**[リージョン] **で、アップストリーム Amazon ECR レジストリのリージョンを選択し、**[次へ]** を選択します。

1. **[ステップ 2: 名前空間の指定]** ページで、**[キャッシュ名前空間]** にプルスルーキャッシュレポジトリの作成方法 (**[特定のプレフィックス]** または**プレフィックスなし**) を選択します。**[特定のプレフィックス]** を選択した場合、アップストリームレジストリからイメージをキャッシュするための名前空間の一部として使用するプレフィックス名を指定する必要があります。

1. **[アップストリーム名前空間]** で、アップストリームレジストリに存在する **[特定のプレフィックス]** からプルするかどうかを選択します。**プレフィックスなし**を選択した場合、アップストリームレジストリ内の任意のリポジトリからプルできます。プロンプトが表示されたら、アップストリームリポジトリプレフィックスを指定し、**[次へ]** を選択します。
**注記**  
キャッシュおよびアップストリーム名前空間のカスタマイズの詳細については、「[ECR から ECR へのプルスルーキャッシュのリポジトリプレフィックスをカスタマイズする](pull-through-cache-private-wildcards.md)」を参照してください。

1. **[ステップ 3: 確認と作成]** ページで、プルスルーキャッシュルールの設定を確認し、**[作成]** を選択します。

1. 作成する各プルスルーキャッシュに対して、このステップを繰り返します。プルスルーキャッシュルールは、リージョンごとに個別に作成されます。

### 別の AWS アカウントの Amazon ECR プライベートレジストリの場合
<a name="w2aac28c27b9b7c13"></a>

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

1. ナビゲーションバーから、プライベートレジストリ設定を構成するリージョンを選択します。

1. ナビゲーションペインで、**[Private registry]** (プライベートレジストリ)、**[Pull through cache]** (プルスルーキャッシュ) の順に選択します。

1. **[Pull through cache configuration]** (プルスルーキャッシュの設定) ページで、**[Add rule]** (ルールの追加) を選択します。

1. **[ステップ 1: アップストリームの指定]** ページの **[レジストリ]** で、**[Amazon ECR Private] ** と **[クロスアカウント]** を選択します。**[リージョン]** で、アップストリーム Amazon ECR レジストリのリージョンを選択します。Account で****、アップストリーム Amazon ECR レジストリの AWS アカウント ID を指定し、**Next** を選択します。

1. **[ステップ 2: アクセス許可の指定]** ページで、**[IAM ロール]**にクロスアカウントプルスルーキャッシュアクセスに使用するロールを選択し、**[作成]** を選択します。
**注記**  
[クロスアカウント ECR から ECR へのプルスルーキャッシュに必要な IAM ポリシー](pull-through-cache-private.md#pull-through-cache-private-permissions) で作成されたアクセス許可を使用する IAM ロールを選択してください。

1. **[ステップ 3: 名前空間の指定]** ページで、**[キャッシュ名前空間]** にプルスルーキャッシュレポジトリの作成方法 (**[特定のプレフィックス]** または**プレフィックスなし**) を選択します。**[特定のプレフィックス]** を選択した場合、アップストリームレジストリからイメージをキャッシュするための名前空間の一部として使用するプレフィックス名を指定する必要があります。

1. **[アップストリーム名前空間]** で、アップストリームレジストリに存在する **[特定のプレフィックス]** からプルするかどうかを選択します。**プレフィックスなし**を選択した場合、アップストリームレジストリ内の任意のリポジトリからプルできます。プロンプトが表示されたら、アップストリームリポジトリプレフィックスを指定し、**[次へ]** を選択します。
**注記**  
キャッシュおよびアップストリーム名前空間のカスタマイズの詳細については、「[ECR から ECR へのプルスルーキャッシュのリポジトリプレフィックスをカスタマイズする](pull-through-cache-private-wildcards.md)」を参照してください。

1. **[ステップ 4: 確認と作成]** ページで、プルスルーキャッシュルールの設定を確認し、**[作成]** を選択します。

1. 作成する各プルスルーキャッシュに対して、このステップを繰り返します。プルスルーキャッシュルールは、リージョンごとに個別に作成されます。

### Chainguard レジストリの場合
<a name="w2aac28c27b9b7c15"></a>

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

1. ナビゲーションバーから、プライベートレジストリ設定を構成するリージョンを選択します。

1. ナビゲーションペインで、**[Private registry]** (プライベートレジストリ)、**[Pull through cache]** (プルスルーキャッシュ) の順に選択します。

1. **[Pull through cache configuration]** (プルスルーキャッシュの設定) ページで、**[Add rule]** (ルールの追加) を選択します。

1. **ステップ 1: ソースページを指定する**、レジストリで、Chainguard Registry, Next を選択します。

1. **ステップ 2: 認証を設定する**ページで、**アップストリーム認証情報**用に、Chainguard Registry の認証情報を AWS Secrets Manager シークレットに保存する必要があります。既存のシークレットを指定するか、Amazon ECR コンソールを使用して新しいシークレットを作成できます。

   1. 既存のシークレットを使用するには、既存のシーク** AWS レットを使用する**を選択します。**[シークレット名]** では、ドロップダウンを使用して既存のシークレットを選択し、**[次へ]** を選択します。Secrets Manager コンソールを使用して Secrets Manager シークレットを作成する方法の詳細については、[シー AWS Secrets Manager クレットへのアップストリームリポジトリ認証情報の保存](pull-through-cache-creating-secret.md) を参照してください。
**注記**  
には、 `ecr-pullthroughcache/` プレフィックスを使用する名前の Secrets Manager シークレット AWS マネジメントコンソール のみが表示されます。シークレットは、プルスルーキャッシュルールが作成されたのと同じアカウントとリージョンにある必要もあります。

   1. 新しいシークレットを作成するには、**[ AWS シークレットを作成する]** を選択し、次の操作を行って、**[次へ]** を選択します。

      1. **[シークレット名]** には、シークレットのわかりやすい名前を指定します。シークレット名は 1～512 文字の Unicode 文字で構成されます。

      1. **Chainguard Registry ユーザー名**には、Chainguard Registry ユーザー名を指定します。

      1. **Chainguard Registry プルトークン**には、Chainguard Registry プルトークンを指定します。Chainguard Registry プルトークンの作成の詳細については、Chainguard ドキュメントの[「プルトークンによる認証](https://edu.chainguard.dev/chainguard/chainguard-images/chainguard-registry/authenticating/#authenticating-with-a-pull-token)」を参照してください。

1. **ステップ 3: 送信先**ページの **Amazon ECR リポジトリプレフィックス**で、ソースレジストリからプルされたイメージをキャッシュするときに使用するリポジトリ名前空間を指定し、**次へ**を選択します。

   デフォルトでは、名前空間は設定されていますが、カスタム名前空間も指定できます。

1. **[ステップ 4: 確認と作成]** ページで、プルスルーキャッシュルールの設定を確認し、**[作成]** を選択します。

1. 作成する各プルスルーキャッシュに対して、前のステップを繰り返します。プルスルーキャッシュルールは、リージョンごとに個別に作成されます。

## プルスルーキャッシュルールを作成するには (AWS CLI)
<a name="pull-through-cache-creating-rule-cli"></a>

[create-pull-through-cache-rule](https://docs.aws.amazon.com/cli/latest/reference/ecr/create-pull-through-cache-rule.html) AWS CLI コマンドを使用して、Amazon ECR プライベートレジストリのプルスルーキャッシュルールを作成します。シークレットでの認証が必要なアップストリームレジストリでは、認証情報を Secrets Manager シークレットに保存する必要があります。Secrets Manager コンソールを使用してシークレットを作成するには、「[シー AWS Secrets Manager クレットへのアップストリームリポジトリ認証情報の保存](pull-through-cache-creating-secret.md)」を参照してください。

以下の例は、サポートされている各アップストリームレジストリについて提供されています。

### Amazon ECR Public の場合
<a name="w2aac28c27c11b7b1"></a>

次の例では、Amazon ECR パブリックレジストリのプルスルーキャッシュルールを作成します。リポジトリプレフィックス `ecr-public` を指定します。この結果、プルスルーキャッシュルールを使用して作成された各リポジトリは命名スキーム `ecr-public/upstream-repository-name` を持ちます。

```
aws ecr create-pull-through-cache-rule \
     --ecr-repository-prefix ecr-public \
     --upstream-registry-url public.ecr.aws \
     --region us-east-2
```

### Kubernetes コンテナレジストリの場合
<a name="w2aac28c27c11b7b3"></a>

次の例では、Kubernetes パブリックレジストリのプルスルーキャッシュルールを作成します。リポジトリプレフィックス `kubernetes` を指定します。この結果、プルスルーキャッシュルールを使用して作成された各リポジトリは命名スキーム `kubernetes/upstream-repository-name` を持ちます。

```
aws ecr create-pull-through-cache-rule \
     --ecr-repository-prefix kubernetes \
     --upstream-registry-url registry.k8s.io \
     --region us-east-2
```

### Quay の場合
<a name="w2aac28c27c11b7b5"></a>

次の例では、Quay パブリックレジストリのプルスルーキャッシュルールを作成します。リポジトリプレフィックス `quay` を指定します。この結果、プルスルーキャッシュルールを使用して作成された各リポジトリは命名スキーム `quay/upstream-repository-name` を持ちます。

```
aws ecr create-pull-through-cache-rule \
     --ecr-repository-prefix quay \
     --upstream-registry-url quay.io \
     --region us-east-2
```

### Docker Hub の場合
<a name="w2aac28c27c11b7b7"></a>

次の例では、Docker Hub レジストリのプルスルーキャッシュルールを作成します。リポジトリプレフィックス `docker-hub` を指定します。この結果、プルスルーキャッシュルールを使用して作成された各リポジトリは命名スキーム `docker-hub/upstream-repository-name` を持ちます。Docker Hub の認証情報が含まれているシークレットの完全な Amazon リソースネーム (ARN) を指定する必要があります。

```
aws ecr create-pull-through-cache-rule \
     --ecr-repository-prefix docker-hub \
     --upstream-registry-url registry-1.docker.io \
     --credential-arn arn:aws:secretsmanager:us-east-2:111122223333:secret:ecr-pullthroughcache/example1234 \
     --region us-east-2
```

### GitHub コンテナレジストリの場合
<a name="w2aac28c27c11b7b9"></a>

次の例では、GitHub コンテナレジストリ用のプルスルーキャッシュルールを作成します。リポジトリプレフィックス `github` を指定します。この結果、プルスルーキャッシュルールを使用して作成された各リポジトリは命名スキーム `github/upstream-repository-name` を持ちます。GitHub コンテナレジストリの認証情報が含まれているシークレットの完全な Amazon リソースネーム (ARN) を指定する必要があります。

```
aws ecr create-pull-through-cache-rule \
     --ecr-repository-prefix github \
     --upstream-registry-url ghcr.io \
     --credential-arn arn:aws:secretsmanager:us-east-2:111122223333:secret:ecr-pullthroughcache/example1234 \
     --region us-east-2
```

### Microsoft Azure コンテナレジストリの場合
<a name="w2aac28c27c11b7c11"></a>

次の例では、Microsoft Azure コンテナレジストリ用のプルスルーキャッシュルールを作成します。リポジトリプレフィックス `azure` を指定します。この結果、プルスルーキャッシュルールを使用して作成された各リポジトリは命名スキーム `azure/upstream-repository-name` を持ちます。Microsoft Azure コンテナレジストリの認証情報が含まれているシークレットの完全な Amazon リソースネーム (ARN) を指定する必要があります。

```
aws ecr create-pull-through-cache-rule \
     --ecr-repository-prefix azure \
     --upstream-registry-url myregistry.azurecr.io \
     --credential-arn arn:aws:secretsmanager:us-east-2:111122223333:secret:ecr-pullthroughcache/example1234 \
     --region us-east-2
```

### GitLab コンテナレジストリの場合
<a name="w2aac28c27c11b7c13"></a>

次の例では、GitLab コンテナレジストリ用のプルスルーキャッシュルールを作成します。リポジトリプレフィックス `gitlab` を指定します。この結果、プルスルーキャッシュルールを使用して作成された各リポジトリは命名スキーム `gitlab/upstream-repository-name` を持ちます。GitLab コンテナレジストリの認証情報が含まれているシークレットの完全な Amazon リソースネーム (ARN) を指定する必要があります。

```
aws ecr create-pull-through-cache-rule \
     --ecr-repository-prefix gitlab \
     --upstream-registry-url registry.gitlab.com \
     --credential-arn arn:aws:secretsmanager:us-east-2:111122223333:secret:ecr-pullthroughcache/example1234 \
     --region us-east-2
```

### AWS アカウント内の Amazon ECR プライベートレジストリの場合
<a name="w2aac28c27c11b7c15"></a>

次の の例では、同じ AWS アカウント内のクロスリージョンの Amazon ECR プライベートレジストリのプルスルーキャッシュルールを作成します。リポジトリプレフィックス `ecr` を指定します。この結果、プルスルーキャッシュルールを使用して作成された各リポジトリは命名スキーム `ecr/upstream-repository-name` を持ちます。

```
aws ecr create-pull-through-cache-rule \
     --ecr-repository-prefix ecr \
     --upstream-registry-url aws_account_id.dkr.ecr.region.amazonaws.com \
     --region us-east-2
```

### 別の AWS アカウントの Amazon ECR プライベートレジストリの場合
<a name="w2aac28c27c11b7c17"></a>

次の の例では、同じ AWS アカウント内のクロスリージョンの Amazon ECR プライベートレジストリのプルスルーキャッシュルールを作成します。リポジトリプレフィックス `ecr` を指定します。この結果、プルスルーキャッシュルールを使用して作成された各リポジトリは命名スキーム `ecr/upstream-repository-name` を持ちます。IAM ロールの完全な Amazon リソースネーム (ARN) と、[Amazon ECR でのプルスルーキャッシュルールの作成](#pull-through-cache-creating-rule) で作成されたアクセス許可を指定する必要があります。

```
aws ecr create-pull-through-cache-rule \
 --ecr-repository-prefix ecr \
 --upstream-registry-url aws_account_id.dkr.ecr.region.amazonaws.com \
 --custom-role-arn arn:aws:iam::aws_account_id:role/example-role \
 --region us-east-2
```

### Chainguard レジストリの場合
<a name="w2aac28c27c11b7c19"></a>

次の例では、Chainguard Registry のプルスルーキャッシュルールを作成します。リポジトリプレフィックス `chainguard` を指定します。この結果、プルスルーキャッシュルールを使用して作成された各リポジトリは命名スキーム `chainguard/upstream-repository-name` を持ちます。Chainguard Registry 認証情報を含むシークレットの完全な Amazon リソースネーム (ARN) を指定する必要があります。

```
aws ecr create-pull-through-cache-rule \
     --ecr-repository-prefix chainguard \
     --upstream-registry-url cgr.dev \
     --credential-arn arn:aws:secretsmanager:us-east-2:111122223333:secret:ecr-pullthroughcache/example1234 \
     --region us-east-2
```

## 次の手順
<a name="pull-through-cache-creating-rule-next-steps"></a>

プルスルーキャッシュルールを作成したら、次のステップは以下のとおりです。
+ リポジトリ作成テンプレートを作成します。リポジトリ作成テンプレートは、プルスルーキャッシュアクションで Amazon ECR がユーザーに代わって作成した新しいリポジトリに使用する設定を定義することができます。詳細については、「[プルスルーキャッシュ、プッシュ時作成、またはレプリケーションアクション中に作成されたリポジトリを制御するテンプレート](repository-creation-templates.md)」を参照してください。
+ プルスルーキャッシュルールを検証します。プルスルーキャッシュルールを検証する際、Amazon ECR はアップストリームレジストリとのネットワーク接続を確立し、アップストリームレジストリの認証情報を含む Secrets Manager シークレットにアクセスできること、および認証が成功したことを確認します。詳細については、「[Amazon ECR でのプルスルーキャッシュルールの検証](pull-through-cache-working-validating.md)」を参照してください。
+ プルスルーキャッシュルールの使用を開始します。詳細については、「[Amazon ECR でのプルスルーキャッシュルールを使用したイメージのプル](pull-through-cache-working-pulling.md)」を参照してください。

# Amazon ECR でのプルスルーキャッシュルールの検証
<a name="pull-through-cache-working-validating"></a>

プルスルーキャッシュルールを作成した後、認証が必要なアップストリームレジストリに対して、そのルールが適切に機能しているかどうかを検証できます。プルスルーキャッシュルールを検証する際、Amazon ECR はアップストリームレジストリとのネットワーク接続を確立し、アップストリームレジストリの認証情報を含む Secrets Manager シークレットにアクセスできること、および認証が成功したことを確認します。

プルスルーキャッシュルールの使用を開始する前に、適切な IAM アクセス許可を持っていることを確認してください。詳細については、「[アップストリームレジストリと Amazon ECR プライベートレジストリを同期するために必要な IAM アクセス許可](pull-through-cache-iam.md)」を参照してください。

## プルスルーキャッシュルールを検証するには (AWS マネジメントコンソール)
<a name="pull-through-cache-working-verifying-console"></a>

以下のステップは、Amazon ECR コンソールを使用してプルスルーキャッシュルールを検証する方法を示しています。

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

1. ナビゲーションバーから、検証するプルスルーキャッシュルールが含まれているリージョンを選択します。

1. ナビゲーションペインで、**[Private registry]** (プライベートレジストリ)、**[Pull through cache]** (プルスルーキャッシュ) の順に選択します。

1. **[プルスルーキャッシュ設定]** ページで、検証するプルスルーキャッシュルールを選択します。次に、**[アクション]** ドロップダウンメニューを使用して **[詳細を表示]** を選択します。

1. プルスルーキャッシュルールの詳細ページで、**[アクション]** ドロップダウンメニューを使用して **[認証を確認]** を選択します。Amazon ECR は結果を示すバナーを表示します。

1. 検証する各プルスルーキャッシュルールに対して、これらのステップを繰り返します。

## プルスルーキャッシュルールを検証するには (AWS CLI)
<a name="pull-through-cache-working-verifying-cli"></a>

[validate-pull-through-cache-rule](https://docs.aws.amazon.com/cli/latest/reference/ecr/validate-pull-through-cache-rule.html) AWS CLI コマンドは、Amazon ECR プライベートレジストリのプルスルーキャッシュルールを検証するために使用されます。次の例では `ecr-public` 名前空間プレフィックスを使用しています。その値を、検証するプルスルーキャッシュルールのプレフィックス値に置き換えます。

```
aws ecr validate-pull-through-cache-rule \
     --ecr-repository-prefix ecr-public \
     --region us-east-2
```

レスポンスで、`isValid` パラメータは検証が成功したかどうかを示します。`true` の場合、Amazon ECR はアップストリームレジストリにアクセスでき、認証は成功しました。`false` の場合、問題が発生し、検証が失敗しました。`failure` パラメータは原因を示します。

# Amazon ECR でのプルスルーキャッシュルールを使用したイメージのプル
<a name="pull-through-cache-working-pulling"></a>

以下の例は、プルスルーキャッシュルールを使用してイメージをプルするときに使用するコマンド構文を示しています。プルスルーキャッシュルールを使用してアップストリームイメージをプルする際にエラーが発生した場合は、[Amazon ECR でのプルスルーキャッシュに関する問題のトラブルシューティング](error-pullthroughcache.md) を参照してください。最も一般的なエラーと、それらを解決する方法が記載されています。

プルスルーキャッシュルールの使用を開始する前に、適切な IAM アクセス許可を持っていることを確認してください。詳細については、「[アップストリームレジストリと Amazon ECR プライベートレジストリを同期するために必要な IAM アクセス許可](pull-through-cache-iam.md)」を参照してください。

**注記**  
次の例では、 が AWS マネジメントコンソール 使用するデフォルトの Amazon ECR リポジトリ名前空間値を使用します。設定した Amazon ECR プライベートリポジトリ URI を使用していることを確認します。

## Amazon ECR Public の場合
<a name="w2aac28c31b9b1"></a>

```
docker pull aws_account_id.dkr.ecr.region.amazonaws.com/ecr-public/repository_name/image_name:tag
```

## Kubernetes コンテナレジストリ
<a name="w2aac28c31b9b3"></a>

```
docker pull aws_account_id.dkr.ecr.region.amazonaws.com/kubernetes/repository_name/image_name:tag
```

## Quay
<a name="w2aac28c31b9b5"></a>

```
docker pull aws_account_id.dkr.ecr.region.amazonaws.com/quay/repository_name/image_name:tag
```

## Docker Hub
<a name="w2aac28c31b9b7"></a>

Docker Hub の公式イメージの場合:

```
docker pull aws_account_id.dkr.ecr.region.amazonaws.com/docker-hub/library/image_name:tag
```

**注記**  
Docker Hub 公式イメージの場合は、`/library` プレフィックスを含める必要があります。その他すべての Docker Hub リポジトリでは、`/library` プレフィックスを省略する必要があります。

その他すべての Docker Hub イメージの場合:

```
docker pull aws_account_id.dkr.ecr.region.amazonaws.com/docker-hub/repository_name/image_name:tag
```

## GitHub コンテナレジストリ
<a name="w2aac28c31b9b9"></a>

```
docker pull aws_account_id.dkr.ecr.region.amazonaws.com/github/repository_name/image_name:tag
```

## Microsoft Azure コンテナレジストリ
<a name="w2aac28c31b9c11"></a>

```
docker pull aws_account_id.dkr.ecr.region.amazonaws.com/azure/repository_name/image_name:tag
```

## GitLab コンテナレジストリ
<a name="w2aac28c31b9c13"></a>

```
docker pull aws_account_id.dkr.ecr.region.amazonaws.com/gitlab/repository_name/image_name:tag
```

## Chainguard レジストリ
<a name="w2aac28c31b9c15"></a>

```
docker pull aws_account_id.dkr.ecr.region.amazonaws.com/chainguard/repository_name/image_name:tag
```

# シー AWS Secrets Manager クレットへのアップストリームリポジトリ認証情報の保存
<a name="pull-through-cache-creating-secret"></a>

認証を必要とするアップストリームリポジトリのプルスルーキャッシュルールを作成する場合、認証情報を Secrets Manager シークレットに保存する必要があります。Secrets Manager シークレットを使用するとコストがかかる場合があります。詳細については、[AWS Secrets Manager 料金表](https://aws.amazon.com/secrets-manager/pricing/)を参照してください。

以下の手順では、サポートされている各アップストリームリポジトリの Secrets Manager シークレットを作成する方法を示します。Secrets Manager コンソールを使用してシークレットを作成する代わりに、オプションで Amazon ECR コンソールのプルスルーキャッシュルール作成ワークフローを使用してシークレットを作成できます。詳細については、「[Amazon ECR でのプルスルーキャッシュルールの作成](pull-through-cache-creating-rule.md)」を参照してください。

------
#### [ Docker Hub ]

**Docker Hub 認証情報の Secrets Manager シークレットを作成するには (AWS マネジメントコンソール)**Secrets Manager シークレットを作成するには (AWS マネジメントコンソール)

1. [https://console.aws.amazon.com/secretsmanager/](https://console.aws.amazon.com/secretsmanager/) から Secrets Manager コンソールを開きます。

1. **[Store a new secret]** (新しいシークレットを保存する) を選択します｡

1. **[シークレットのタイプを選択]** ページで、次の操作を行います。

   1. **[Secret type] (シークレットタイプ)** で、**[Other type of secret]** (他の種類のシークレット) を選択します。

   1. **[キー/値のペア]** では、Docker Hub 認証情報用に 2 行を作成します。シークレットには最大 65536 バイトまで保存できます。

      1. 最初のキーと値のペアでは、`username` をキーとして指定し、値として Docker Hub のユーザー名を指定します。

      1. 2 番目のキーと値のペアでは、`accessToken` をキーとして指定し、値として Docker Hub のアクセストークンを指定します。Docker Hub アクセストークンの作成について詳しくは、Docker ドキュメントの「[Create and manage access tokens](https://docs.docker.com/security/for-developers/access-tokens/)」を参照してください。

   1. **[暗号化キー]** にはデフォルト **aws/secretsmanager** AWS KMS key 値を選択した状態で、**[次へ]** を選択します。このキーを使用してもコストは発生しません。詳細については、AWS Secrets Manager ユーザーガイドの「[Secrets Manager でのシークレットの暗号化と復号化](https://docs.aws.amazon.com/secretsmanager/latest/userguide/security-encryption.html)」を参照してください。
**重要**  
シークレットを暗号化するには、デフォルトの `aws/secretsmanager` 暗号化キーを使用する必要があります。Amazon ECR では、このためのカスタマーマネージドキー (CMK) の使用はサポートされていません。

1. **[シークレットを設定]** ページで、次の操作を行います。

   1. わかりやすい**シークレット名**と**説明**を入力します。シークレット名は 1～512 文字の Unicode 文字を含み、`ecr-pullthroughcache/` をプレフィックスとする必要があります。
**重要**  
Amazon ECR には、 `ecr-pullthroughcache/` プレフィックスを使用する名前の Secrets Manager シークレット AWS マネジメントコンソール のみが表示されます。

   1. (オプション) **[Tags]** (タグ) セクションで、タグをシークレットに追加します。タグ付け方法については、AWS Secrets Manager ユーザーガイドの「[Tag Secrets Manager シークレット](https://docs.aws.amazon.com/secretsmanager/latest/userguide/managing-secrets_tagging.html)」を参照してください。機密情報は暗号化されていないため、タグに保存しないでください。

   1. (オプション) **[Resource permissions]** (リソースに対するアクセス許可) でリソースポリシーをシークレットに追加するには、**[Edit permissions]** (アクセス許可の編集) をクリックします。詳細については、AWS Secrets Manager ユーザーガイドの「[アクセス許可ポリシーを Secrets Manager シークレットにアタッチする](https://docs.aws.amazon.com/secretsmanager/latest/userguide/auth-and-access_resource-policies.html)」を参照してください。

   1. (オプション) シーク**レットのレプリケート**で、シークレットを別のシークレットにレプリケートするには AWS リージョン、シー**クレットのレプリケート**を選択します。シークレットのレプリケーションは、この段階で実行することも、後に戻ってきて実行することもできます。詳細については、AWS Secrets Manager ユーザーガイドの「[シークレットを他のリージョンにレプリケートする](https://docs.aws.amazon.com/secretsmanager/latest/userguide/create-manage-multi-region-secrets.html)」を参照してください。

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

1. (オプション) [**Configure rotation**] (ローテーションを設定する) ページで、シークレットの自動ローテーションを有効にできます。ローテーションをオフにしておいて、後でオンにすることもできます。詳細については、AWS Secrets Manager ユーザーガイドの「[Secrets Manager シークレットのローテーション](https://docs.aws.amazon.com/secretsmanager/latest/userguide/rotating-secrets.html)」を参照してください。[**次へ**] を選択します。

1. **[Review]** (レビュー) ページで、シークレットの詳細を確認し、**[Store]** (保存) を選択します。

   Secrets Manager はシークレットのリストに戻ります。新しいシークレットが表示されない場合は、更新ボタンを選択します。

------
#### [ GitHub Container Registry ]

**GitHub コンテナレジストリの認証情報用の Secrets Manager シークレットを作成するには (AWS マネジメントコンソール)**Secrets Manager シークレットを作成するには (AWS マネジメントコンソール)

1. [https://console.aws.amazon.com/secretsmanager/](https://console.aws.amazon.com/secretsmanager/) から Secrets Manager コンソールを開きます。

1. **[Store a new secret]** (新しいシークレットを保存する) を選択します｡

1. **[シークレットのタイプを選択]** ページで、次の操作を行います。

   1. **[Secret type] (シークレットタイプ)** で、**[Other type of secret]** (他の種類のシークレット) を選択します。

   1. **[キー/値のペア]** では、GitHub 認証情報用に 2 行を作成します。シークレットには最大 65536 バイトまで保存できます。

      1. 最初のキーと値のペアでは、`username` をキーとして指定し、値として GitHub のユーザー名を指定します。

      1. 2 番目のキーと値のペアでは、`accessToken` をキーとして指定し、値として GitHub のアクセストークンを指定します。GitHub アクセストークンの作成の詳細については、GitHub ドキュメントの「[個人用アクセストークンを管理する](https://docs.github.com/en/authentication/keeping-your-account-and-data-secure/managing-your-personal-access-tokens)」を参照してください。

   1. **[暗号化キー]** にはデフォルト **aws/secretsmanager** AWS KMS key 値を選択した状態で、**[次へ]** を選択します。このキーを使用してもコストは発生しません。詳細については、AWS Secrets Manager ユーザーガイドの「[Secrets Manager でのシークレットの暗号化と復号化](https://docs.aws.amazon.com/secretsmanager/latest/userguide/security-encryption.html)」を参照してください。
**重要**  
シークレットを暗号化するには、デフォルトの `aws/secretsmanager` 暗号化キーを使用する必要があります。Amazon ECR では、このためのカスタマーマネージドキー (CMK) の使用はサポートされていません。

1. [**Configure secret**] (シークレットを設定する) ページで、次の操作を行います。

   1. わかりやすい**シークレット名**と**説明**を入力します。シークレット名は 1～512 文字の Unicode 文字を含み、`ecr-pullthroughcache/` をプレフィックスとする必要があります。
**重要**  
Amazon ECR には、 `ecr-pullthroughcache/` プレフィックスを使用する名前の Secrets Manager シークレット AWS マネジメントコンソール のみが表示されます。

   1. (オプション) **[Tags]** (タグ) セクションで、タグをシークレットに追加します。タグ付け方法については、AWS Secrets Manager ユーザーガイドの「[Tag Secrets Manager シークレット](https://docs.aws.amazon.com/secretsmanager/latest/userguide/managing-secrets_tagging.html)」を参照してください。機密情報は暗号化されていないため、タグに保存しないでください。

   1. (オプション) **[Resource permissions]** (リソースに対するアクセス許可) でリソースポリシーをシークレットに追加するには、**[Edit permissions]** (アクセス許可の編集) をクリックします。詳細については、AWS Secrets Manager ユーザーガイドの「[アクセス許可ポリシーを Secrets Manager シークレットにアタッチする](https://docs.aws.amazon.com/secretsmanager/latest/userguide/auth-and-access_resource-policies.html)」を参照してください。

   1. (オプション) シーク**レットのレプリケート**で、シークレットを別のシークレットにレプリケートするには AWS リージョン、シー**クレットのレプリケート**を選択します。シークレットのレプリケーションは、この段階で実行することも、後に戻ってきて実行することもできます。詳細については、AWS Secrets Manager ユーザーガイドの「[シークレットを他のリージョンにレプリケートする](https://docs.aws.amazon.com/secretsmanager/latest/userguide/create-manage-multi-region-secrets.html)」を参照してください。

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

1. (オプション) [**Configure rotation**] (ローテーションを設定する) ページで、シークレットの自動ローテーションを有効にできます。ローテーションをオフにしておいて、後でオンにすることもできます。詳細については、AWS Secrets Manager ユーザーガイドの「[Secrets Manager シークレットのローテーション](https://docs.aws.amazon.com/secretsmanager/latest/userguide/rotating-secrets.html)」を参照してください。[**次へ**] を選択します。

1. **[Review]** (レビュー) ページで、シークレットの詳細を確認し、**[Store]** (保存) を選択します。

   Secrets Manager はシークレットのリストに戻ります。新しいシークレットが表示されない場合は、更新ボタンを選択します。

------
#### [ Microsoft Azure Container Registry ]

**Microsoft Azure コンテナレジストリの認証情報用の Secrets Manager シークレットを作成するには (AWS マネジメントコンソール)**Secrets Manager シークレットを作成するには (AWS マネジメントコンソール)

1. [https://console.aws.amazon.com/secretsmanager/](https://console.aws.amazon.com/secretsmanager/) から Secrets Manager コンソールを開きます。

1. **[Store a new secret]** (新しいシークレットを保存する) を選択します｡

1. **[シークレットのタイプを選択]** ページで、次の操作を行います。

   1. **[Secret type] (シークレットタイプ)** で、**[Other type of secret]** (他の種類のシークレット) を選択します。

   1. **[キー/値のペア]** では、Microsoft Azure 認証情報用に 2 行を作成します。シークレットには最大 65536 バイトまで保存できます。

      1. 最初のキーと値のペアでは、`username` をキーとして指定し、値として Microsoft Azure コンテナレジストリのユーザー名を指定します。

      1. 2 番目のキーと値のペアでは、`accessToken` をキーとして指定し、値として Microsoft Azure コンテナレジストリのアクセストークンを指定します。Microsoft Azure アクセストークンの作成について詳しくは、Microsoft Azure ドキュメントの「[トークンを作成する - ポータル](https://learn.microsoft.com/en-us/azure/container-registry/container-registry-repository-scoped-permissions#create-token---portal)」を参照してください。

   1. **[暗号化キー]** にはデフォルト **aws/secretsmanager** AWS KMS key 値を選択した状態で、**[次へ]** を選択します。このキーを使用してもコストは発生しません。詳細については、AWS Secrets Manager ユーザーガイドの「[Secrets Manager でのシークレットの暗号化と復号化](https://docs.aws.amazon.com/secretsmanager/latest/userguide/security-encryption.html)」を参照してください。
**重要**  
シークレットを暗号化するには、デフォルトの `aws/secretsmanager` 暗号化キーを使用する必要があります。Amazon ECR では、このためのカスタマーマネージドキー (CMK) の使用はサポートされていません。

1. [**Configure secret**] (シークレットを設定する) ページで、次の操作を行います。

   1. わかりやすい**シークレット名**と**説明**を入力します。シークレット名は 1～512 文字の Unicode 文字を含み、`ecr-pullthroughcache/` をプレフィックスとする必要があります。
**重要**  
Amazon ECR には、 `ecr-pullthroughcache/` プレフィックスを使用する名前の Secrets Manager シークレット AWS マネジメントコンソール のみが表示されます。

   1. (オプション) **[Tags]** (タグ) セクションで、タグをシークレットに追加します。タグ付け方法については、AWS Secrets Manager ユーザーガイドの「[Tag Secrets Manager シークレット](https://docs.aws.amazon.com/secretsmanager/latest/userguide/managing-secrets_tagging.html)」を参照してください。機密情報は暗号化されていないため、タグに保存しないでください。

   1. (オプション) **[Resource permissions]** (リソースに対するアクセス許可) でリソースポリシーをシークレットに追加するには、**[Edit permissions]** (アクセス許可の編集) をクリックします。詳細については、AWS Secrets Manager ユーザーガイドの「[アクセス許可ポリシーを Secrets Manager シークレットにアタッチする](https://docs.aws.amazon.com/secretsmanager/latest/userguide/auth-and-access_resource-policies.html)」を参照してください。

   1. (オプション) シーク**レットのレプリケート**で、シークレットを別のシークレットにレプリケートするには AWS リージョン、シー**クレットのレプリケート**を選択します。シークレットのレプリケーションは、この段階で実行することも、後に戻ってきて実行することもできます。詳細については、AWS Secrets Manager ユーザーガイドの「[シークレットを他のリージョンにレプリケートする](https://docs.aws.amazon.com/secretsmanager/latest/userguide/create-manage-multi-region-secrets.html)」を参照してください。

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

1. (オプション) [**Configure rotation**] (ローテーションを設定する) ページで、シークレットの自動ローテーションを有効にできます。ローテーションをオフにしておいて、後でオンにすることもできます。詳細については、AWS Secrets Manager ユーザーガイドの「[Secrets Manager シークレットのローテーション](https://docs.aws.amazon.com/secretsmanager/latest/userguide/rotating-secrets.html)」を参照してください。[**次へ**] を選択します。

1. **[Review]** (レビュー) ページで、シークレットの詳細を確認し、**[Store]** (保存) を選択します。

   Secrets Manager はシークレットのリストに戻ります。新しいシークレットが表示されない場合は、更新ボタンを選択します。

------
#### [ GitLab Container Registry ]

**GitLab コンテナレジストリの認証情報用の Secrets Manager シークレットを作成する手順 (AWS マネジメントコンソール)**Secrets Manager シークレットを作成するには (AWS マネジメントコンソール)

1. [https://console.aws.amazon.com/secretsmanager/](https://console.aws.amazon.com/secretsmanager/) から Secrets Manager コンソールを開きます。

1. **[Store a new secret]** (新しいシークレットを保存する) を選択します｡

1. **[シークレットのタイプを選択]** ページで、次の操作を行います。

   1. **[Secret type] (シークレットタイプ)** で、**[Other type of secret]** (他の種類のシークレット) を選択します。

   1. **[キー/値のペア]** で、GitLab 認証情報用の 2 つの行を作成します。シークレットには最大 65536 バイトまで保存できます。

      1. 最初のキー/値のペアでは、キーとして `username` を指定し、値として GitLab コンテナレジストリのユーザー名を指定します。

      1. 2 番目のキー/値のペアでは、キーとして `accessToken` を指定し、値として GitLab コンテナレジストリのアクセストークンを指定します。GitLab コンテナレジストリのアクセストークンの作成の詳細については、GitLab ドキュメントの「[Personal access tokens](https://docs.gitlab.com/ee/user/profile/personal_access_tokens.html)」、「[Group access tokens](https://docs.gitlab.com/ee/user/group/settings/group_access_tokens.html)」、または「[Project access tokens](https://docs.gitlab.com/ee/user/project/settings/project_access_tokens.html)」を参照してください。

   1. **[暗号化キー]** にはデフォルト **aws/secretsmanager** AWS KMS key 値を選択した状態で、**[次へ]** を選択します。このキーを使用してもコストは発生しません。詳細については、AWS Secrets Manager ユーザーガイドの「[Secrets Manager でのシークレットの暗号化と復号化](https://docs.aws.amazon.com/secretsmanager/latest/userguide/security-encryption.html)」を参照してください。
**重要**  
シークレットを暗号化するには、デフォルトの `aws/secretsmanager` 暗号化キーを使用する必要があります。Amazon ECR では、このためのカスタマーマネージドキー (CMK) の使用はサポートされていません。

1. [**Configure secret**] (シークレットを設定する) ページで、次の操作を行います。

   1. わかりやすい**シークレット名**と**説明**を入力します。シークレット名は 1～512 文字の Unicode 文字を含み、`ecr-pullthroughcache/` をプレフィックスとする必要があります。
**重要**  
Amazon ECR には、 `ecr-pullthroughcache/` プレフィックスを使用する名前の Secrets Manager シークレット AWS マネジメントコンソール のみが表示されます。

   1. (オプション) **[Tags]** (タグ) セクションで、タグをシークレットに追加します。タグ付け方法については、AWS Secrets Manager ユーザーガイドの「[Tag Secrets Manager シークレット](https://docs.aws.amazon.com/secretsmanager/latest/userguide/managing-secrets_tagging.html)」を参照してください。機密情報は暗号化されていないため、タグに保存しないでください。

   1. (オプション) **[Resource permissions]** (リソースに対するアクセス許可) でリソースポリシーをシークレットに追加するには、**[Edit permissions]** (アクセス許可の編集) をクリックします。詳細については、AWS Secrets Manager ユーザーガイドの「[アクセス許可ポリシーを Secrets Manager シークレットにアタッチする](https://docs.aws.amazon.com/secretsmanager/latest/userguide/auth-and-access_resource-policies.html)」を参照してください。

   1. (オプション) シーク**レットのレプリケート**で、シークレットを別のシークレットにレプリケートするには AWS リージョン、シー**クレットのレプリケート**を選択します。シークレットのレプリケーションは、この段階で実行することも、後に戻ってきて実行することもできます。詳細については、AWS Secrets Manager ユーザーガイドの「[シークレットを他のリージョンにレプリケートする](https://docs.aws.amazon.com/secretsmanager/latest/userguide/create-manage-multi-region-secrets.html)」を参照してください。

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

1. (オプション) [**Configure rotation**] (ローテーションを設定する) ページで、シークレットの自動ローテーションを有効にできます。ローテーションをオフにしておいて、後でオンにすることもできます。詳細については、AWS Secrets Manager ユーザーガイドの「[Secrets Manager シークレットのローテーション](https://docs.aws.amazon.com/secretsmanager/latest/userguide/rotating-secrets.html)」を参照してください。[**次へ**] を選択します。

1. **[Review]** (レビュー) ページで、シークレットの詳細を確認し、**[Store]** (保存) を選択します。

   Secrets Manager はシークレットのリストに戻ります。新しいシークレットが表示されない場合は、更新ボタンを選択します。

------
#### [ Chainguard Registry ]

**Chainguard 認証情報の Secrets Manager シークレットを作成するには (AWS マネジメントコンソール)**Secrets Manager シークレットを作成するには (AWS マネジメントコンソール)

1. [https://console.aws.amazon.com/secretsmanager/](https://console.aws.amazon.com/secretsmanager/) から Secrets Manager コンソールを開きます。

1. **[Store a new secret]** (新しいシークレットを保存する) を選択します｡

1. **[シークレットのタイプを選択]** ページで、次の操作を行います。

   1. **[Secret type] (シークレットタイプ)** で、**[Other type of secret]** (他の種類のシークレット) を選択します。

   1. **キーと値のペア**で、Chainguard 認証情報の 2 行を作成します。シークレットには最大 65536 バイトまで保存できます。

      1. 最初のキーと値のペアでは、キー`username`として を指定し、値として Chainguard Registry ユーザー名を指定します。

      1. 2 番目のキーと値のペアでは、キー`accessToken`として を指定し、値として Chainguard Registry アクセストークンを指定します。Chainguard Registry プルトークンの作成の詳細については、Chainguard ドキュメント[の「プルトークンによる認証](https://edu.chainguard.dev/chainguard/chainguard-images/chainguard-registry/authenticating/#authenticating-with-a-pull-token)」を参照してください。

   1. **[暗号化キー]** にはデフォルト **aws/secretsmanager** AWS KMS key 値を選択した状態で、**[次へ]** を選択します。このキーを使用してもコストは発生しません。詳細については、AWS Secrets Manager ユーザーガイドの「[Secrets Manager でのシークレットの暗号化と復号化](https://docs.aws.amazon.com/secretsmanager/latest/userguide/security-encryption.html)」を参照してください。
**重要**  
シークレットを暗号化するには、デフォルトの `aws/secretsmanager` 暗号化キーを使用する必要があります。Amazon ECR では、このためのカスタマーマネージドキー (CMK) の使用はサポートされていません。

1. [**Configure secret**] (シークレットを設定する) ページで、次の操作を行います。

   1. わかりやすい**シークレット名**と**説明**を入力します。シークレット名は 1～512 文字の Unicode 文字を含み、`ecr-pullthroughcache/` をプレフィックスとする必要があります。
**重要**  
Amazon ECR には、 `ecr-pullthroughcache/` プレフィックスを使用する名前の Secrets Manager シークレット AWS マネジメントコンソール のみが表示されます。

   1. (オプション) **[Tags]** (タグ) セクションで、タグをシークレットに追加します。タグ付け方法については、AWS Secrets Manager ユーザーガイドの「[Tag Secrets Manager シークレット](https://docs.aws.amazon.com/secretsmanager/latest/userguide/managing-secrets_tagging.html)」を参照してください。機密情報は暗号化されていないため、タグに保存しないでください。

   1. (オプション) **[Resource permissions]** (リソースに対するアクセス許可) でリソースポリシーをシークレットに追加するには、**[Edit permissions]** (アクセス許可の編集) をクリックします。詳細については、AWS Secrets Manager ユーザーガイドの「[アクセス許可ポリシーを Secrets Manager シークレットにアタッチする](https://docs.aws.amazon.com/secretsmanager/latest/userguide/auth-and-access_resource-policies.html)」を参照してください。

   1. (オプション) シーク**レットのレプリケート**で、シークレットを別のシークレットにレプリケートするには AWS リージョン、シー**クレットのレプリケート**を選択します。シークレットのレプリケーションは、この段階で実行することも、後に戻ってきて実行することもできます。詳細については、AWS Secrets Manager ユーザーガイドの「[シークレットを他のリージョンにレプリケートする](https://docs.aws.amazon.com/secretsmanager/latest/userguide/create-manage-multi-region-secrets.html)」を参照してください。

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

1. (オプション) [**Configure rotation**] (ローテーションを設定する) ページで、シークレットの自動ローテーションを有効にできます。ローテーションをオフにしておいて、後でオンにすることもできます。詳細については、AWS Secrets Manager ユーザーガイドの「[Secrets Manager シークレットのローテーション](https://docs.aws.amazon.com/secretsmanager/latest/userguide/rotating-secrets.html)」を参照してください。[**次へ**] を選択します。

1. **[Review]** (レビュー) ページで、シークレットの詳細を確認し、**[Store]** (保存) を選択します。

   Secrets Manager はシークレットのリストに戻ります。新しいシークレットが表示されない場合は、更新ボタンを選択します。

------

# ECR から ECR へのプルスルーキャッシュのリポジトリプレフィックスをカスタマイズする
<a name="pull-through-cache-private-wildcards"></a>

プルスルーキャッシュルールは、**ecr リポジトリプレフィックス**と**アップストリームリポジトリプレフィックス**の両方をサポートします。**ecr リポジトリプレフィックス**は、ルールに関連付けられている Amazon ECR キャッシュレジストリのリポジトリ名前空間プレフィックスです。このプレフィックスを使用するすべてのリポジトリは、ルールで定義されたアップストリームレジストリのキャッシュ対応リポジトリをプルスルーします。例えば、`prod` というプレフィックスは、`prod/` で始まるすべてのリポジトリに適用されます。プルスルーキャッシュルールが関連付けられていないレジストリ内のすべてのリポジトリにテンプレートを適用するには、プレフィックスとして `ROOT` を使用できます。

**重要**  
プレフィックスの末尾には常に `/` が適用されると想定されます。`ecr-public` をプレフィックスとして指定すると、Amazon ECR はそれを `ecr-public/` として扱います。

**アップストリームリポジトリプレフィックス**は、アップストリームリポジトリ名と一致します。デフォルトでは、`ROOT` に設定され、アップストリームリポジトリとの照合が可能になります。**アップストリームリポジトリプレフィックス**は、Amazon ECR リポジトリプレフィックスに `ROOT` 以外の値がある場合にのみ設定できます。

次の表は、プルスルーキャッシュルールのプレフィックス設定に基づくキャッシュリポジトリ名とアップストリームリポジトリ名のマッピングを示しています。


|  キャッシュ名前空間  |  アップストリーム名前空間  |  マッピング関係 (キャッシュリポジトリ → アップストリームリポジトリ)  | 
| --- | --- | --- | 
|  ecr-public  |  ROOT (デフォルト)  |  `ecr-public/my-app/image1` → `my-app/image1` `ecr-public/my-app/image2` → `my-app/image2`  | 
|  ルート  |  ルート  |  `my-app/image1` → `my-app/image1`  | 
|  team-a  |  team-a  |  `team-a/myapp/image1` → `team-a/myapp/image1`  | 
|  my-app  |  upstream-app  |  `my-app/image1` → `upstream-app/image1`  | 

# Amazon ECR でのプルスルーキャッシュに関する問題のトラブルシューティング
<a name="error-pullthroughcache"></a>

プルスルーキャッシュルールを使用してアップストリームイメージをプルする際に、最もよく発生する可能性のある一般的なエラーは次のとおりです。

**リポジトリが存在しない**  
リポジトリが存在しないことを示すエラーは、ほとんどの場合、Amazon ECR プライベートレジストリにリポジトリが存在しないか、アップストリームイメージをプルする IAM プリンシパルに `ecr:CreateRepository` アクセス許可が付与されていないのが原因です。このエラーを解決するには、プルコマンドのリポジトリ URI が正しいこと、必要となる IAM アクセス許可がアップストリームイメージをプルする IAM プリンシパルに付与されていること、またはアップストリームのイメージをプルする前に、プッシュされるアップストリームイメージのリポジトリが Amazon ECR プライベートレジストリに作成されていることを確認します。必要となる IAM アクセス許可の詳細については、「[アップストリームレジストリと Amazon ECR プライベートレジストリを同期するために必要な IAM アクセス許可](pull-through-cache-iam.md)」を参照してください。  
このエラーの例を以下に示します。  

```
Error response from daemon: repository 111122223333.dkr.ecr.us-east-1.amazonaws.com/ecr-public/amazonlinux/amazonlinux not found: name unknown: The repository with name 'ecr-public/amazonlinux/amazonlinux' does not exist in the registry with id '111122223333'
```

**リクエストされたイメージが見つからない**  
イメージが見つからないことを示すエラーは、ほとんどの場合、アップストリームレジストリにイメージが存在しないか、アップストリームイメージをプルする IAM プリンシパルに `ecr:BatchImportUpstreamImage` アクセス許可が付与されておらず、Amazon ECR プライベートレジストリ内にレポジトリがすでに作成されているのが原因です。このエラーを解決するには、アップストリームイメージとイメージタグ名が正しく、それが存在し、アップストリームイメージをプルする IAM プリンシパルに必要な IAM アクセス許可が付与されていることを確認する必要があります。必要となる IAM アクセス許可の詳細については、「[アップストリームレジストリと Amazon ECR プライベートレジストリを同期するために必要な IAM アクセス許可](pull-through-cache-iam.md)」を参照してください。  
このエラーの例を以下に示します。  

```
Error response from daemon: manifest for 111122223333.dkr.ecr.us-east-1.amazonaws.com/ecr-public/amazonlinux/amazonlinux:latest not found: manifest unknown: Requested image not found
```

**Docker Hub リポジトリからプルするときに 403 Forbidden**  
**Docker Official Image** としてタグ付けされている Docker Hub リポジトリからプルする場合は、使用する URI に `/library/` を含める必要があります。例えば、`aws_account_id.dkr.ecr.region.amazonaws.com/docker-hub/library/image_name:tag`。Docker Hub Official イメージの `/library/` を省略した場合、プルスルーキャッシュルールを使用してイメージをプルしようとすると `403 Forbidden` エラーが返されます。詳細については、「[Amazon ECR でのプルスルーキャッシュルールを使用したイメージのプル](pull-through-cache-working-pulling.md)」を参照してください。  
このエラーの例を以下に示します。  

```
Error response from daemon: failed to resolve reference "111122223333.dkr.ecr.us-west-2.amazonaws.com/docker-hub/amazonlinux:2023": pulling from host 111122223333.dkr.ecr.us-west-2.amazonaws.com failed with status code [manifests 2023]: 403 Forbidden
```