タスクのプライベートレジストリの認証 - Amazon Elastic Container Service

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

タスクのプライベートレジストリの認証

プライベートレジストリを使用して認証情報を に保存し AWS Secrets Manager、タスク定義で参照します。これにより、タスク定義で認証 AWS が必要な の外部のプライベートレジストリに存在するコンテナイメージを参照できます。この機能は、Amazon ECS Anywhere を使用して Fargate、Amazon EC2 インスタンス、および外部インスタンスでホストされるタスクでサポートされています。

重要

タスク定義で、Amazon ECR に保存されたイメージを参照している場合、このトピックは適用されません。詳細については、Amazon Elastic Container Registry ユーザーガイドの「Amazon ECS で Amazon ECR イメージを使用する」を参照してください。

Amazon EC2 インスタンスでホストされるタスクの場合は、この機能のためにコンテナエージェントのバージョン 1.19.0 以降が必要です。ただし、最新のコンテナエージェントのバージョンを使用することをお勧めします。エージェントのバージョンの確認方法と最新バージョンへの更新方法については、「Amazon ECS コンテナエージェントをアップデートする」を参照してください。

Fargate でホストされているタスクの場合、この機能にはプラットフォームバージョン 1.2.0 以降が必要です。詳細については、Fargate Linux プラットフォームのバージョン を参照してください。

コンテナの定義内で、作成したシークレットの詳細 で repositoryCredentials オブジェクトを指定します。参照するシークレットは、それを使用するタスクとは異なる AWS リージョン アカウントからでも、異なるアカウントからでもかまいません。

注記

Amazon ECS API、 AWS CLI、または AWS SDK を使用する場合、起動するタスク AWS リージョン と同じ にシークレットが存在する場合は、シークレットの完全な ARN または名前のどちらも使用できます。シークレットが別のアカウントに存在する場合は、シークレットの完全な ARN を指定する必要があります。を使用する場合 AWS Management Console、シークレットの完全な ARN を常に指定する必要があります。

必要なパラメータが含まれるタスク定義のスニペットを、以下に示します。

private-repo をプライベートリポジトリのホスト名に置き換え、private-image をイメージ名に置き換えます。

"containerDefinitions": [ { "image": "private-repo/private-image", "repositoryCredentials": { "credentialsParameter": "arn:aws:secretsmanager:region:aws_account_id:secret:secret_name" } } ]
注記

プライベートレジストリ認証を有効にするもうひとつの方法として、Amazon ECS コンテナエージェントの環境変数を使用してプライベートレジストリを認証する方法があります。このメソッドは、Amazon EC2 インスタンスでホストされるタスクでのみサポートされています。詳細については、「コンテナインスタンスのプライベートレジストリの認証」を参照してください。

プライベートレジストリを使用するには
  1. この機能を使用するには、Amazon ECS タスクの実行ロールが必要です。このロールを使用して、コンテナエージェントでコンテナイメージをプルできます。詳細については、「Amazon ECS タスク実行IAM ロール」を参照してください。

    作成したシークレットにアクセスできるようにするには、以下のアクセス許可を、インラインポリシーとしてタスクの実行ロール追加します。詳細については、「IAM ポリシーの追加と削除」を参照してください。

    • secretsmanager:GetSecretValue

    • kms:Decrypt - カスタムの KMS キーを使用するが、デフォルトのキーは使用しない場合にのみ必須。カスタムキーの Amazon リソースネーム (ARN) は、リソースとして追加する必要があります。

    次の例では、インラインポリシーによりアクセス許可を追加しています。

    { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "kms:Decrypt", "secretsmanager:GetSecretValue" ], "Resource": [ "arn:aws:secretsmanager:<region>:<aws_account_id>:secret:secret_name", "arn:aws:kms:<region>:<aws_account_id>:key/key_id" ] } ] }
  2. AWS Secrets Manager を使用して、プライベートレジストリ認証情報のシークレットを作成します。シークレットを作成する方法については、 AWS Secrets Manager ユーザーガイドの AWS Secrets Manager 「 シークレットを作成する」を参照してください。

    次の形式でプライベートレジストリの認証情報を入力します。

    { "username" : "privateRegistryUsername", "password" : "privateRegistryPassword" }
  3. タスク定義を登録する 詳細については、「コンソールを使用したタスク定義の作成」を参照してください。