ジョブのプライベートレジストリ認証 - AWS Batch

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

ジョブのプライベートレジストリ認証

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

重要

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

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

Fargate でホストされているジョブの場合、この機能にはプラットフォームバージョン 1.2.0 以降が必要です。詳細については、「Amazon Elastic Container Service デベロッパーガイド」のAWS 「Fargate Linux プラットフォームのバージョン」を参照してください。

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

注記

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

以下は、必要なパラメータを示すジョブ定義のスニペットです。

"containerProperties": [ { "image": "private-repo/private-image", "repositoryCredentials": { "credentialsParameter": "arn:aws:secretsmanager:region:123456789012:secret:secret_name" } } ]

プライベートレジストリの認証で必須の IAM アクセス許可

この機能を使用するには、実行ロールが必要です。このロールを使用して、コンテナエージェントでコンテナイメージをプルできます。詳細については、「AWS Batch 実行 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:123456789012:secret:secret_name", "arn:aws:kms:region:123456789012:key/key_id" ] } ] }

プライベートレジストリの認証の使用

基本的なシークレットを作成するには

AWS Secrets Manager を使用して、プライベートレジストリ認証情報のシークレットを作成します。

  1. https://console.aws.amazon.com/secretsmanager/ で AWS Secrets Manager コンソールを開きます。

  2. [Store a new secret] (新しいシークレットの保存) を選択します。

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

  4. [プレーンテキスト] を選択し、次の形式でプライベートレジストリ認証情報を入力します。

    { "username" : "privateRegistryUsername", "password" : "privateRegistryPassword" }
  5. [次へ] を選択します。

  6. [Secret name] (シークレット名) に、オプションのパスと名前 (例: production/MyAwesomeAppSecret または development/TestSecret) を入力し、[Next] (次へ) を選択します。オプションで説明を追加することもできます。後でこのシークレットを思い出すのに役立ちます。

    シークレット名に使用できるのは、ASCII 文字、数字、または以下の記号のみです: /_+=.@-

  7. (オプション) この時点で、シークレットのローテーションを設定することができます。この手順では、[Disable automatic rotation] (自動ローテーションを無効化) は無効のままにし、[] を選択します。

    新規または既存のシークレットでローテーションを設定する方法については、「シーAWS Secrets Manager クレットのローテーション」を参照してください。

  8. 設定を確認した上で、[Store secret] (シークレットの保存) を選択し、入力した全内容を Secrets Manager の新しいシークレットとして保存します。

ジョブ定義を登録し、プライベートレジストリ プライベートレジストリ認証 を有効にします。その後、[Secrets Manager ARN または名前] で、シークレットの Amazon リソースネーム (ARN) を入力します。詳細については、「プライベートレジストリの認証で必須の IAM アクセス許可」を参照してください。