Amazon S3 に Amazon ECS コンテナインスタンスの設定を保存する - Amazon Elastic Container Service

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 のファイルを保存するには
  1. コンテナインスタンスロール (ecsInstanceRole) に、Amazon S3 への読み取り専用アクセス権を持つためのアクセス許可を付与する必要があります。これを行うには、AmazonS3ReadOnlyAccessecsInstanceRole ロールに割り当てます。ポリシーをロールにアタッチする方法については、「AWS Identity and Access Management ユーザーガイド」の「ロールのアクセス許可ポリシーの変更 (コンソール)」を参照してください。

  2. 次の形式を使用して、有効な 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 コンテナエージェント」を参照してください。

  3. 設定ファイルを保存するには、Amazon S3 内にプライベートバケットを作成します。詳細については、Amazon Simple Storage Service ユーザーガイド「バケットの作成」を参照してください。

  4. ecs.config ファイルを S3 バケットにアップロードします。詳細については、Amazon Simple Storage Service ユーザーガイドバケットへのオブジェクトの追加を参照してください。

起動時に ecs.config ファイルを Amazon S3 からロードするには
  1. このセクションの上記の手順を完了して、読み取り専用 Amazon S3 アクセス権限をコンテナインスタンスに許可し、 ecs.config ファイルをプライベート S3 バケットに保存します。

  2. 新しいコンテナインスタンスを起動し、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