Amazon ECS コンテナインスタンスの IAM ロール
Amazon ECS コンテナインスタンス(Amazon EC2 と外部インスタンスの両方を含む)では、Amazon ECS コンテナエージェントを実行し、エージェントがユーザーに属していることをサービスに伝える IAM ロールが必要です。コンテナインスタンスを起動してクラスターに登録する前に、使用するコンテナインスタンス用の IAM ロールを作成する必要があります。ロールは、コンソールへのログインまたは AWS CLI コマンドの実行に使用するアカウントで作成されます。
重要
クラスターに外部インスタンスを登録する場合、使用する IAM ロールには Systems Manager のアクセス許可も必要です。詳細については、「Amazon ECS Anywhere IAM ロール」を参照してください。
Amazon ECS では、AmazonEC2ContainerServiceforEC2Role
管理 IAM ポリシーを提供し、これには Amazon ECS の完全な機能セットを使用するために必要なアクセス権限が含まれます。この管理ポリシーは、IAM ロールにアタッチし、コンテナインスタンスに関連付けることができます。または、使用するカスタムポリシーを作成するときに、管理ポリシーをガイドとして使用することもできます。コンテナインスタンスロールには、Amazon ECS コンテナエージェントと Docker デーモンがユーザーに変わって AWS API を呼び出すために必要な許可があります。管理ポリシーの詳細については、「AmazonEC2ContainerServiceforEC2Role」を参照してください。
コンテナインスタンスロールを作成する
重要
クラスターに外部インスタンスを登録する場合は、Amazon ECS Anywhere IAM ロール を参照してください。
機能や機能強化が今後導入されたときに Amazon ECS がそれらに対するアクセス許可を追加できるように、手動でロールを作成し、その IAM 管理ポリシーをコンテナインスタンスにアタッチできます。必要に応じて、以下の手順を使用してマネージド IAM ポリシーをアタッチします。
ロールを作成したら、次の機能のアクセス許可をロールに追加します。
機能 | 追加のアクセス許可 |
---|---|
Amazon ECR でコンテナイメージを取得する |
|
CloudWatch Logs でコンテナインスタンスをモニタリングする | |
設定ファイルを Amazon S3 バケットでホストする |
Amazon ECR のアクセス許可
コンテナインスタンスで使用する Amazon ECS コンテナインスタンスロールには、Amazon ECR に対する以下の IAM ポリシーのアクセス許可が必要です。
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "ecr:BatchCheckLayerAvailability", "ecr:BatchGetImage", "ecr:GetDownloadUrlForLayer", "ecr:GetAuthorizationToken" ], "Resource": "*" } ] }
コンテナインスタンスに AmazonEC2ContainerServiceforEC2Role
管理ポリシーを使用すると、ロールに適切なアクセス権限が付与されます。ロールが Amazon ECR をサポートすることを確認するには、Amazon Elastic Container Service デベロッパーガイドの「Amazon ECS コンテナインスタンスの IAM ロール」を参照してください。
awsvpcTrunking アカウント設定の設定に必要なアクセス許可
Amazon ECS は、サポートされている Amazon EC2 インスタンスタイプを使用して、ENI 密度が高いコンテナインスタンスの起動をサポートします。この機能を使用する場合は、2 つのコンテナインスタンスロールを作成することをお勧めします。1 つのロールで awsvpcTrunking
アカウント設定を有効にし、そのロールを ENI トランキングを必要とするタスクに使用します。awsvpcTrunking
アカウント設定については、「アカウント設定による Amazon ECS 機能へのアクセス」を参照してください。
コンテナインスタンスで使用するコンテナインスタンスロールには、アカウント設定を設定するための次の IAM ポリシーのアクセス許可が必要です
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "ecs:ListAccountSettings", "ecs:ListAttributes", "ecs:PutAccountSetting" ], "Resource": "*" } ] }
コンテナインスタンスロールを使用するには、インスタンスユーザーデータに次を追加します。
#!/bin/bash aws ecs put-account-setting --name awsvpcTrunking --value enabled --region
region
ECS_CLUSTER=MyCluster
>> /etc/ecs/ecs.config EOF
EC2 インスタンスへのユーザーデータの追加の詳細については、「Amazon EC2 ユーザーガイド」の「起動時に Linux インスタンスでコマンドを実行する」を参照してください。
Amazon S3 への読み取り専用アクセス
設定情報を Amazon S3 のプライベートバケットに保存し、コンテナインスタンスの IAM ロールに読み取り専用アクセス権限を付与するのが、コンテナインスタンスの起動時に設定を許可する安全で便利な方法です。ecs.config
ファイルのコピーをプライベートバケットに保存し、Amazon EC2 ユーザーデータを使用して AWS CLI をインストールします。その後、インスタンスの起動時に設定情報を /etc/ecs/ecs.config
にコピーします。
ecs.config
ファイルの作成と Amazon S3 への保存、およびこの構成を使用したインスタンスの起動の詳細については、「Amazon S3 に Amazon ECS コンテナインスタンスの設定を保存する」を参照してください。
次の AWS CLI コマンドを使用すると、Amazon S3 の読み取り専用アクセス許可をコンテナインスタンスのロールに許可できます。前に作成したロールの名前で ecsInstanceRole
を置き換えます。
aws iam attach-role-policy \ --role-name
ecsInstanceRole
\ --policy-arn arn:aws:iam::aws:policy/AmazonS3ReadOnlyAccess
IAM コンソールを使用して、Amazon S3 の読み取り専用アクセス許可 (AmazonS3ReadOnlyAccess
) をロールに追加することもできます。詳細については、「AWS Identity and Access Management ユーザーガイド」の「ロールに対するアクセス許可を更新する」を参照してください。
コンテナインスタンスのモニタリングに必要なアクセス許可
コンテナインスタンスが CloudWatch Logs にログデータを送信する前に、Amazon ECS エージェントがお客様のアプリケーションログを CloudWatch に書き込むことを許可する IAM ポリシーを作成する必要があります (通常は awslogs
ドライバーを介して処理されます)。作成が完了したポリシーは、ecsInstanceRole
にアタッチします。