翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。
イメージリポジトリを使用した認証
このトピックでは、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 Systems Manager (SSM) パラメータストアまたは の使用 AWS Secrets Manager
デプロイ前にプライベートリポジトリで認証するように Elastic Beanstalk を設定し、コンテナイメージへのアクセスを有効にします。
このアプローチでは、2 つのコンポーネントを含む Elastic Beanstalk デプロイプロセスのビルド前フェーズを使用します。
-
リポジトリ認証情報を保存する環境変数を定義する ebextensions
-
イメージをプルdocker loginする前に実行するプラットフォームフックスクリプト
フックスクリプトは、 AWS Systems Manager Parameter Store または から入力された環境変数から認証情報を安全に取得します AWS Secrets Manager。この機能には、2025 年 3 月 26 日以降にリリースされた Elastic Beanstalk Docker および ECS マネージド Docker プラットフォームが必要です。詳細については、「環境変数の設定」を参照してください。
Parameter Store または を使用してプライベートリポジトリに対して認証するように Elastic Beanstalk AWS Systems Manager を設定するには AWS Secrets Manager
注記
続行する前に、Parameter Store または AWS Systems Manager AWS Secrets Manager で認証情報を設定し、必要な IAM アクセス許可を設定してください。詳細については、「シークレットを環境変数として設定するための前提条件」を参照してください。
-
プロジェクト用に次のディレクトリ構造を作成します。
├── .ebextensions │ └── env.config ├── .platform │ ├── confighooks │ │ └── prebuild │ │ └── 01login.sh │ └── hooks │ └── prebuild │ └── 01login.sh ├── Dockerfile
-
Parameter Store AWS Systems Manager または AWS Secrets Managerを使用して、プライベートリポジトリの認証情報を保存します。この例では、Parameter Store AWS Systems Manager と AWS Secrets Manager の両方を示していますが、これらのサービスの 1 つだけを使用することを選択できます。
aws ssm put-parameter --name USER --type SecureString --value "username" aws secretsmanager create-secret --name PASSWD --secret-string "passwd"
-
次の
env.config
ファイルを作成し、前述のディレクトリ構造に示すように、.ebextensions
ディレクトリに配置します。この設定では、 aws:elasticbeanstalk:application:environmentsecrets名前空間を使用して、USER
およびPASSWD
Elastic Beanstalk 環境変数を Systems Manager パラメータストアに保存されている値に初期化します。注記
変数名
USER
と が put-parameter コマンドと create-secret コマンドで使用されるパラメータ名PASSWD
と一致することを確認します。option_settings: aws:elasticbeanstalk:application:environmentsecrets: USER: arn:aws:ssm:us-east-1:111122223333:parameter/user PASSWD: arn:aws:secretsmanager:us-east-1:111122223333:passwd
-
次の
01login.sh
スクリプトファイルを作成し、次のディレクトリに配置します (前述のディレクトリ構造にも示されています)。-
.platform/confighooks/prebuild
-
.platform/hooks/prebuild
### example 01login.sh #!/bin/bash echo $PASSWD | docker login -u $USER --password-stdin
この
01login.sh
スクリプトは、ステップ 3 で設定された環境変数を使用し、 docker loginを介してパスワードを に安全に渡しますstdin
。Docker 認証の詳細については、Docker ドキュメントの「Docker ログイン」を参照してください。 メモ
-
フックファイルは、バイナリファイル、またはインタプリタパスを含む #! 行で始まるスクリプトファイル (#!/bin/bash など) です。
-
詳細については、「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 login
registry-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 パブリック認証を有効にするには、環境のインスタンスプロファイルに次のアクセス許可を追加します。Amazon ECR パブリック認証の詳細については、「Amazon Elastic Container Registry Public User Guide」の「Registry authentication in Amazon ECR public」を参照してください。
これらのアクセス許可がインスタンスプロファイルにアタッチされると、Elastic Beanstalk は Amazon ECR Public レジストリで自動的に認証します。Amazon ECR Public イメージは、 Dockerrun.aws.json
ファイルまたは Dockerfile の標準public.ecr.aws/
形式を使用して参照できます。registry-alias
/repository-name:tag