プルスルーキャッシュルールの使用 - Amazon ECR

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

プルスルーキャッシュルールの使用

プルスルーキャッシュルールを使用すると、アップストリームレジストリの内容を Amazon ECR プライベートレジストリと同期できます。Amazon ECR は現在、次のアップストリームレジストリのプルスルーキャッシュルールの作成をサポートしています。

  • Docker Hub、Microsoft Azure コンテナレジストリ、 GitHub コンテナレジストリ (認証が必要)

  • Amazon ECR パブリック、Kubernetes コンテナイメージレジストリ、Quay (認証は不要)

認証が必要なアップストリームレジストリでは、認証情報を AWS Secrets Manager シークレットに保存する必要があります。Amazon ECR コンソールでは、認証された各アップストリームレジストリの Secrets Manager シークレットを簡単に作成できます。Secrets Manager コンソールを使用して Secrets Manager シークレットを作成する方法の詳細については、アップストリームリポジトリの認証情報を AWS Secrets Manager シークレットに保存する を参照してください。

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

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

プルスルーキャッシュを使用するための考慮事項

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 を介してプルされると、イメージのプルが 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 サービスにリンクされたロール」を参照してください。

  • デフォルトで、キャッシュされたイメージをプルする IAM プリンシパルには、IAM ポリシーによってアクセス許可が付与されています。Amazon ECR プライベートレジストリアクセス許可ポリシーを使用して、IAM エンティティのアクセス許可のスコープをさらに設定できます。詳細については、「レジストリ許可の使用」を参照してください。

  • プルスルーキャッシュワークフローを使用して作成された Amazon ECR リポジトリは、他の Amazon ECR リポジトリと同様に処理されます。レプリケーションやイメージスキャンなど、すべてのリポジトリ機能がサポートされています。

  • Amazon ECR がプルスルーキャッシュアクションを使用してユーザーに代わって新しいリポジトリを作成すると、一致するリポジトリ作成テンプレートがない限り、次のデフォルト設定がリポジトリに適用されます。リポジトリ作成テンプレートを使用して、Amazon ECR がユーザーに代わって作成したリポジトリに適用される設定を定義できます。詳細については、「リポジトリ作成テンプレートを管理する」を参照してください。

    • タグのイミュータビリティ — オフにすると、タグは変更可能になり上書きできます。

    • 暗号化 — デフォルトの AES256 暗号化が使用されます。

    • リポジトリ権限 — 省略。リポジトリ権限ポリシーは適用されません。

    • ライフサイクルポリシー — 省略。ライフサイクルポリシーは適用されません。

    • リソースタグ — 省略。リソースタグは適用されません。

  • プルスルーキャッシュルールを使用してリポジトリのイメージタグのイミュータビリティを有効にすると、Amazon ECR が同じタグを使用してイメージを更新できなくなります。

  • プルスルーキャッシュルールを使用してイメージを初めてプルする場合は、インターネットへのルートが必要です。したがって、 を使用してインターフェイス VPC エンドポイントを使用するように Amazon ECR を設定している場合はAWS PrivateLink、最初のプルにインターネットへのルートがあることを確認する必要があります。これを行う 1 つの方法は、インターネットゲートウェイを使用して同じ VPC にパブリックサブネットを作成し、プライベートサブネットからパブリックサブネットにすべてのアウトバウンドトラフィックをインターネットにルーティングすることです。プルスルーキャッシュルールを使用した後続のイメージプルでは、これは必要ありません。詳細については、Amazon Virtual Private Cloud ユーザーガイドの「ルートオプションの例」を参照してください。

必要な IAM 許可

プルスルーキャッシュルールを効果的に使用するためには、プライベートレジストリへの認証とイメージのプッシュとプルに必要となる Amazon ECR API のアクセス許可に加えて、次のアクセス許可も更に必要となります。

  • ecr:CreatePullThroughCacheRule – プルスルーキャッシュルールを作成するアクセス許可を付与します。このアクセス許可は、アイデンティティに基づく IAM ポリシーを介して付与する必要があります。

  • ecr:BatchImportUpstreamImage – 外部イメージを取得し、プライベートレジストリにインポートするアクセス許可を付与します。このアクセス許可は、プライベートレジストリアクセス許可ポリシー、ID に基づく IAM ポリシー、またはリソースに基づくリポジトリアクセス許可ポリシーを使用して付与できます。レポジトリアクセス許可の使用に関する詳細については、「プライベートリポジトリポリシー」を参照してください。

  • ecr:CreateRepository – プライベートレジストリにリポジトリを作成するアクセス許可を付与します。キャッシュされたイメージを格納するリポジトリがまだ存在しない場合には、この許可が必要となります。このアクセス許可は、アイデンティティに基づく IAM ポリシーまたはプライベートレジストリアクセス許可のいずれかによって付与できます。

  • ecr:TagResource – Amazon ECR リソースにメタデータタグを追加する許可を付与します。この許可が必要なのは、プルスルーキャッシュルールを使用するイメージに、リポジトリにリソースタグを追加するように設定されたリポジトリ作成テンプレートが関連付けられている場合のみです。このアクセス許可は、アイデンティティに基づく IAM ポリシーを介して付与する必要があります。

レジストリ許可の使用

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

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

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

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

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

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

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

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

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

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

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

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

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

    { "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 プリンシパルによって実行されている場合などです。

  2. put-registry-policy コマンドを使用してレジストリポリシーを設定します。

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

次のステップ

プルスルーキャッシュルールを使用する準備ができたら、次のステップは以下のとおりです。

  • プルスルーキャッシュルールを作成します。詳細については、「プルスルーキャッシュルールの作成」を参照してください。

  • リポジトリ作成テンプレートを作成します。リポジトリ作成テンプレートは、プルスルーキャッシュアクションで Amazon ECR がユーザーに代わって作成した新しいリポジトリに使用する設定を定義することができます。詳細については、「リポジトリ作成テンプレートを管理する」を参照してください。

  • プルスルーキャッシュルールの使い方を学びましょう。詳細については、「プルスルーキャッシュルールの使用」を参照してください。