Amazon S3 に Amazon ECS コンテナインスタンスの設定を保存する
Amazon ECS コンテナエージェントの設定は、環境変数によって制御されます。Amazon ECS に最適化されたAMIの Linux バリアントは、コンテナエージェントの起動時に /etc/ecs/ecs.config
でこれらの変数を検索し、見つかった変数に応じてエージェントを設定します。ECS_CLUSTER
など、問題のない特定の環境変数は、Amazon EC2 ユーザーデータを経由して起動時にコンテナインスタンスに渡され、そのままこのファイルに書き込まれます。ただし、AWS 認証情報や ECS_ENGINE_AUTH_DATA
変数など機密性の高い情報は、ユーザーデータでインスタンスに渡したり、.bash_history
ファイルに表示される可能性のある方法で /etc/ecs/ecs.config
に書き込んだりしないでください。
設定情報を Amazon S3 のプライベートバケットに保存し、コンテナインスタンスの IAM ロールに読み取り専用アクセス権限を付与するのが、コンテナインスタンスの起動時に設定を許可する安全で便利な方法です。ecs.config
ファイルのコピーはプライベートバケットに保存できます。その後、AWS CLI Amazon EC2 ユーザーデータを使用してをインストールし、インスタンスの起動時に設定情報を /etc/ecs/ecs.config
にコピーできます。
ecs.config
Amazon S3 のファイルを保存するには
コンテナインスタンスロール (ecsInstanceRole) に、Amazon S3 への読み取り専用アクセス権を持つためのアクセス許可を付与する必要があります。これを行うには、AmazonS3ReadOnlyAccess を
ecsInstanceRole
ロールに割り当てます。ポリシーをロールにアタッチする方法については、「AWS Identity and Access Management ユーザーガイド」の「ロールに対するアクセス許可を更新する」を参照してください。-
次の形式を使用して、有効な Amazon ECS エージェントの設定変数を含む
ecs.config
ファイルを作成します。この例では、プライベートレジストリ認証を設定しています。詳細については、「Amazon ECS での AWS 以外のコンテナイメージの使用」を参照してください。ECS_ENGINE_AUTH_TYPE=dockercfg ECS_ENGINE_AUTH_DATA={"https://index.docker.io/v1/":{"auth":"
zq212MzEXAMPLE7o6T25Dk0i
","email":"email@example.com
"}}注記
利用可能な Amazon ECS エージェントの設定変数の完全なリストについては、GitHub の「Amazon ECS コンテナエージェント
」を参照してください。 -
設定ファイルを保存するには、Amazon S3 内にプライベートバケットを作成します。詳細については、「Amazon Simple Storage Service ユーザーガイド」の「バケットの作成」を参照してください。
-
ecs.config
ファイルを S3 バケットにアップロードします。詳細については、Amazon Simple Storage Service 開発者ガイドの「オブジェクトのアップロード」を参照してください。
起動時に ecs.config
ファイルを Amazon S3 からロードするには
-
このセクションの上記の手順を完了して、読み取り専用 Amazon S3 アクセス権限をコンテナインスタンスに許可し、
ecs.config
ファイルをプライベート S3 バケットに保存します。 -
新しいコンテナインスタンスを起動し、EC2 ユーザーデータで次のサンプルスクリプトを使用します。このスクリプトは AWS CLI をインストールし、設定ファイルを
/etc/ecs/ecs.config
にコピーします。詳細については、「Amazon ECS Linux コンテナインスタンスの起動」を参照してください。#!/bin/bash yum install -y aws-cli aws s3 cp s3://
your_bucket_name
/ecs.config /etc/ecs/ecs.config