翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。
イメージリポジトリを使用した認証
このトピックでは、Elastic Beanstalk を使用してオンラインイメージリポジトリを認証する方法について説明します。プライベートリポジトリの場合、Elastic Beanstalk は、イメージをプルしてデプロイする前に認証する必要があります。Amazon ECR Public の場合、認証はオプションですが、認証によってレート制限が高くなり、信頼性が向上します。
Amazon ECR リポジトリからのイメージを使用する
Amazon Elastic Container Registry (Amazon
Docker イメージを Amazon ECR に保存すると、Elastic Beanstalk は環境のインスタンスプロファイルを使用して Amazon ECR レジストリに対して自動的に認証します。したがって、Amazon ECR リポジトリ内のイメージにアクセスするためのアクセス許可をインスタンスに提供する必要があります。これを行うには、AmazonEC2ContainerRegistryReadOnly 管理ポリシーをインスタンスプロファイルにアタッチして、環境のインスタンスプロファイルにアクセス許可を追加します。これにより、アカウント内のすべての Amazon ECR リポジトリへの読み取り専用アクセスが可能になります。また、次のテンプレートを使用してカスタムポリシーを作成することで、単一のリポジトリにのみアクセスすることもできます。
上記のポリシーの Amazon リソースネーム(ARN)をリポジトリの ARN に置き換えます。
Dockerrun.aws.json ファイル内のイメージ情報を指定する必要があります。設定は、使用するプラットフォームによって異なります。
ECS マネージド Docker プラットフォームでは、次のようにコンテナ定義オブジェクト で image キーを使用します。
"containerDefinitions": [
{
"name": "my-image",
"image": "account-id.dkr.ecr.us-east-2.amazonaws.com/repository-name:latest",
Docker プラットフォームについては、URL でイメージを参照してください。次のように、URL は Dockerrun.aws.json ファイルの Image 定義に含まれます。
"Image": {
"Name": "account-id.dkr.ecr.us-east-2.amazonaws.com/repository-name:latest",
"Update": "true"
},
の使用 AWS Secrets Manager
デプロイ前にプライベートリポジトリを使用して認証するように Elastic Beanstalk を設定し、コンテナイメージへのアクセスを有効にします。
このアプローチでは、2 つのコンポーネントを含む Elastic Beanstalk デプロイプロセスのビルド前フェーズを使用します。
-
リポジトリ認証情報を保存する環境変数を定義する ebextensions
-
イメージをプルする前に docker login を実行するプラットフォームフックスクリプト
フックスクリプトは、JSON 形式の単一の AWS Secrets Manager シークレットから入力された環境変数からユーザー名とパスワードを取得します。この機能には、2026 年 1 月 13 日以降にリリースされた Elastic Beanstalk Docker および ECS マネージド Docker プラットフォームが必要です。詳細については、「 環境シークレット」を参照してください。
を使用してプライベートリポジトリを認証するように Elastic Beanstalk を設定するには AWS Secrets Manager
注記
先に進む前に、 で AWS Secrets Manager 認証情報を設定し、必要な IAM アクセス許可を設定してください。詳細については、「シークレットを環境変数として設定するための前提条件」を参照してください。
-
次のディレクトリ構造をプロジェクト用に作成します。
├── .ebextensions │ └── env.config ├── .platform │ ├── confighooks │ │ └── prebuild │ │ └── 01login.sh │ └── hooks │ └── prebuild │ └── 01login.sh ├── Dockerfile -
AWS Secrets Manager を使用して、プライベートリポジトリの認証情報を JSON 形式のシークレットとして保存します。
aws secretsmanager create-secret --name repo-credentials \ --secret-string '{"username":"myuser","password":"mypassword"}' -
次の
env.configファイルを作成し、前述のディレクトリ構造に示すように、.ebextensionsディレクトリに配置します。この設定では、JSON キー抽出で aws:elasticbeanstalk:application:environmentsecrets名前空間を使用して、シークレット内の個々のフィールドからUSERおよびPASSWDElastic Beanstalk 環境変数を初期化します。option_settings: aws:elasticbeanstalk:application:environmentsecrets: USER: arn:aws:secretsmanager:us-east-1:111122223333:secret:repo-credentials-AbCd12:username PASSWD: arn:aws:secretsmanager:us-east-1:111122223333:secret:repo-credentials-AbCd12:password -
次の
01login.shスクリプトファイルを作成し、次の場所 (前述のディレクトリ構造にも表示) に配置します。-
.platform/confighooks/prebuild/01login.sh -
.platform/hooks/prebuild/01login.sh
#!/bin/bash echo $PASSWD | docker login -u $USER --password-stdin01login.shスクリプトは、ステップ 3 で設定された環境変数を使用し、 docker loginを介してパスワードを に渡しますstdin。Docker 認証の詳細については、Docker ドキュメントの「docker ログイン」を参照してください。 注意事項
-
ECS マネージド Docker プラットフォームは、ネイティブ ECS 構文を使用してシークレットを参照します。詳細については、「Amazon Elastic Container Service デベロッパーガイド」の「Amazon ECS 環境変数を介して Secrets Manager シークレットを渡す」を参照してください。
-
プラットフォームフックの詳細については、プラットフォームフック「Elastic Beanstalk Linux プラットフォームの拡張」の「」を参照してください。
-
認証が設定されると、Elastic Beanstalk はプライベートリポジトリからイメージをプルしてデプロイできます。
Dockerrun.aws.json ファイルの使用
このセクションでは、プライベートリポジトリに対して Elastic Beanstalk を認証する別の方法について説明します。この方法では、Docker コマンドを使用して認証ファイルを生成し、認証ファイルを Amazon S3 バケットにアップロードします。また、Dockerrun.aws.json ファイルにバケット情報を含める必要もあります。
認証ファイルを生成して Elastic Beanstalk に提供するには
-
docker login コマンドを使用して認証ファイルを生成します。Docker Hub のリポジトリでは、docker login を実行します。
$docker login他のレジストリでは、レジストリサーバーの URL を入力します。
$docker loginregistry-server-url注記
Elastic Beanstalk 環境で (Amazon Linux 2 より前の) Amazon Linux AMI Docker プラットフォームバージョンを使用している場合は、「(Amazon Linux 2 より前の) Amazon Linux AMI での Docker 設定」の関連情報をお読みください。
認証ファイルの詳細については、Docker ウェブサイトのDocker ハブにイメージを保存する
およびdocker ログイン を参照してください。 -
.dockercfgという名前の認証ファイルのコピーを安全な Amazon S3 バケットにアップロードします。-
Amazon S3 バケットは、使用している環境 AWS リージョン と同じ でホストされている必要があります。Elastic Beanstalk は、他のリージョンでホストされている Amazon S3 バケットからファイルをダウンロードすることはできません。
-
インスタンスプロファイル内の IAM ロールに
s3:GetObjectオペレーションを許可します。詳細については、「」を参照してくださいElastic Beanstalk インスタンスプロファイルの管理
-
-
Amazon S3 バケット情報を、
AuthenticationファイルのDockerrun.aws.jsonパラメータに含めます。次の例は、サードパーティーレジストリでプライベートイメージを使用するように、
mydockercfgというバケットにamzn-s3-demo-bucketという認証ファイルを使用する方法を示しています。AWSEBDockerrunVersionの正しいバージョン番号については、例の後の注を参照してください。{ "AWSEBDockerrunVersion": "version-no", "Authentication": { "Bucket": "amzn-s3-demo-bucket", "Key": "mydockercfg" }, "Image": { "Name": "quay.io/johndoe/private-image", "Update": "true" }, "Ports": [ { "ContainerPort": "1234" } ], "Volumes": [ { "HostDirectory": "/var/app/mydb", "ContainerDirectory": "/etc/mysql" } ], "Logging": "/var/log/nginx" }Dockerrun.aws.json バージョン
AWSEBDockerrunVersionパラメータは、Dockerrun.aws.jsonファイルのバージョンを示します。-
Docker AL2 および AL2023 プラットフォームでは、次のバージョンのファイルを使用します。
Dockerrun.aws.json v3– Docker Compose を使用する環境。
Dockerrun.aws.json v1– Docker Compose を使用しない環境。
-
Amazon Linux 2 上で実行される ECS と AL2023 上で実行される ECS は
Dockerrun.aws.json v2ファイルを使用します。廃止されたプラットフォームである ECS - マルチコンテナ Docker Amazon Linux AMI (AL1) も同じバージョンを使用していました。
-
Elastic Beanstalk がプライベートリポジトリをホストするオンラインレジストリで認証した後、イメージをデプロイしてプルできます。
Amazon ECR Public のイメージを使用する
Amazon ECR Public は、Docker イメージをホストするパブリックコンテナレジストリです。Amazon ECR Public リポジトリはパブリックにアクセス可能ですが、認証するとデプロイに対してより高いレート制限とより良い信頼性を提供します。
注記
Amazon ECR パブリック認証は、中国リージョン (cn-*) および AWS GovCloud リージョン () ではサポートされていませんus-gov-*。これらのリージョンでは、Elastic Beanstalk は認証されていないプルを使用します。
Amazon ECR Public 認証を有効にするには、環境のインスタンスプロファイルに次のアクセス許可を追加します。Amazon ECR Public 認証の詳細については、「Amazon Elastic Container Registry Public ユーザーガイド」の「Amazon ECR Public のレジストリ認証」を参照してください。
これらのアクセス許可がインスタンスプロファイルにアタッチされると、Elastic Beanstalk は Amazon ECR Public レジストリを使用して自動的に認証されます。Amazon ECR Public イメージは、Dockerrun.aws.json ファイルまたは Dockerfile の標準 public.ecr.aws/ 形式を使用して参照できます。registry-alias/repository-name:tag