翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。
Amazon ECS コンテナインスタンスの IAM ロール
Amazon ECS コンテナインスタンス(Amazon EC2 と外部インスタンスの両方を含む)では、Amazon ECS コンテナエージェントを実行し、エージェントがユーザーに属していることをサービスに伝える IAM ロールが必要です。コンテナインスタンスを起動してクラスターに登録する前に、使用するコンテナインスタンス用の IAM ロールを作成する必要があります。ロールは、コンソールへのログインまたは AWS CLI コマンドの実行に使用するアカウントに作成されます。
クラスターに外部インスタンスを登録する場合、使用する IAM ロールには Systems Manager のアクセス許可も必要です。詳細については、「ECS Anywhere IAM ロール」を参照してください。
Amazon ECS では、AmazonEC2ContainerServiceforEC2Role
管理 IAM ポリシーを提供し、これには Amazon ECS の完全な機能セットを使用するために必要なアクセス権限が含まれます。この管理ポリシーは、IAM ロールにアタッチし、コンテナインスタンスに関連付けることができます。または、使用するカスタムポリシーを作成するときに、管理ポリシーをガイドとして使用することもできます。コンテナインスタンスロールは、Amazon ECS コンテナエージェントと Docker デーモンがユーザーに代わって AWS APIs を呼び出すために必要なアクセス許可を提供します。管理ポリシーの詳細については、「AmazonEC2ContainerServiceforEC2Role」を参照してください。
Amazon ECS は、サポートされている Amazon EC2 インスタンスタイプを使用して、ENI 密度が高いコンテナインスタンスの起動をサポートします。この機能を使用する場合は、コンテナインスタンスロールを 2 つ作成することをお勧めします。1 つのロールのawsvpcTrunking
アカウント設定を有効にし、そのロールを ENI トランキングが必要なタスクに使用します。awsvpcTrunking
アカウント設定の詳細については、「」を参照してくださいアカウント設定による Amazon ECS 機能へのアクセス。
コンテナインスタンスの (ecsInstanceRole
) ロールの作成
機能や機能強化が今後導入されたときに Amazon ECS がそれらに対するアクセス許可を追加できるように、手動でロールを作成し、その IAM 管理ポリシーをコンテナインスタンスにアタッチできます。必要に応じて、以下の手順を使用してマネージド IAM ポリシーをアタッチします。
- AWS Management Console
コンテナインスタンスの ecsInstanceRole
IAM ロールを作成するには
https://console.aws.amazon.com/iam/IAMコンソールを開きます。
-
ナビゲーションペインで ロール を選択してから、ロールを作成する を選択します。
-
AWS サービスロールタイプを選択し、他のサービスのユースケースで AWS Elastic Container Service を選択します。
-
[EC2 Role for Elastic Container Service] (Elastic コンテナサービス用 EC2 ロール) ユースケースを選択してから、[Next: Permissions (次の手順: 許可)] を選択します。
-
アクセス許可ポリシーセクションで、AmazonEC2ContainerServiceforEC2Role ポリシーが選択されていることを確認してから、次へを選択します。
AmazonEC2ContainerServiceforEC2Role 管理ポリシーをコンテナインスタンスの IAM ロールにアタッチする必要があります。アタッチしないと、 を使用してクラスター AWS Management Console を作成するというエラーが表示されます。
-
ロール名 には ecsInstanceRole を入力し、オプションで説明を入力できます。
-
[タグを追加 (オプション)] で、ポリシーに関連付けるカスタムタグを入力し、[次へ: レビュー] を選択します。
-
ロール情報を確認し、[Create role] (ロールの作成) を選択して終了します。
- AWS CLI
-
すべてのユーザー入力
を独自の値に置き換えます。
-
instance-role-trust-policy.json
というファイルを次の内容で作成します。
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Principal": { "Service": "ec2.amazonaws.com"},
"Action": "sts:AssumeRole"
}
]
}
-
信頼ポリシードキュメントを使用してインスタンス IAM ロールを作成するには、次のコマンドを使用します。
aws iam create-role \
--role-name ecsInstanceRole \
--assume-role-policy-document file://instance-role-trust-policy.json
-
create-instance-profile コマンドecsInstanceRole-profile
を使用して、 という名前のインスタンスプロファイルを作成します。
aws iam create-instance-profile --instance-profile-name ecsInstanceRole-profile
レスポンスの例
{
"InstanceProfile": {
"InstanceProfileId": "AIPAJTLBPJLEGREXAMPLE",
"Roles": [],
"CreateDate": "2022-04-12T23:53:34.093Z",
"InstanceProfileName": "ecsInstanceRole-profile",
"Path": "/",
"Arn": "arn:aws:iam::123456789012:instance-profile/ecsInstanceRole-profile"
}
}
-
ecsInstanceRole
インスタンスプロファイルに ecsInstanceRole-profile
ロールを追加します。
aws iam add-role-to-instance-profile \
--instance-profile-name ecsInstanceRole-profile \
--role-name ecsInstanceRole
-
次のコマンドを使用して、 AmazonEC2ContainerServiceRoleForEC2Role
管理ポリシーをロールにアタッチします。
aws iam attach-role-policy \
--policy-arn arn:aws:iam::aws:policy/service-role/AmazonEC2ContainerServiceforEC2Role \
--role-name ecsInstanceRole
Amazon S3 の読み取り専用アクセスをコンテナインスタンスの (ecsInstanceRole
) ロールに追加する
設定情報を Amazon S3 のプライベートバケットに保存し、コンテナインスタンスの IAM ロールに読み取り専用アクセス権限を付与するのが、コンテナインスタンスの起動時に設定を許可する安全で便利な方法です。ecs.config
ファイルのコピーをプライベートバケットに保存し、Amazon EC2 ユーザーデータを使用して をインストールし AWS CLI 、インスタンスの起動/etc/ecs/ecs.config
時に設定情報を にコピーできます。
ecs.config
ファイルの作成と Amazon S3 への保存、およびこの構成を使用したインスタンスの起動の詳細については、「Amazon S3 にコンテナインスタンスの設定を保存する」を参照してください。
次の 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 に送信できるようにするには、コンテナインスタンスが CloudWatch APIsを使用できるようにする IAM ポリシーを作成し、そのポリシーを にアタッチする必要がありますecsInstanceRole
。
- AWS Management Console
-
JSON ポリシーエディタでポリシーを作成するには
にサインイン AWS Management Console し、https://console.aws.amazon.com/iam/ で IAM コンソールを開きます。
-
左側のナビゲーションペインで、[ポリシー] を選択します。
初めて [ポリシー] を選択する場合には、[管理ポリシーにようこそ] ページが表示されます。[今すぐ始める] を選択します。
-
ページの上部で、[ポリシーを作成] を選択します。
-
[ポリシーエディタ] セクションで、[JSON] オプションを選択します。
-
次の JSON ポリシードキュメントを入力します。
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": [
"logs:CreateLogGroup",
"logs:CreateLogStream",
"logs:PutLogEvents",
"logs:DescribeLogStreams"
],
"Resource": ["arn:aws:logs:*:*:*"]
}
]
}
-
[次へ] をクリックします。
いつでも [Visual] と [JSON] エディタオプションを切り替えることができます。ただし、[Visual] エディタで [次] に変更または選択した場合、IAM はポリシーを再構成して visual エディタに合わせて最適化することがあります。詳細については、「IAM ユーザーガイド」の「ポリシーの再構成」を参照してください。
-
[確認と作成] ページで、作成するポリシーの [ポリシー名] と [説明] (オプション) を入力します。[このポリシーで定義されているアクセス許可] を確認して、ポリシーによって付与されたアクセス許可を確認します。
-
[ポリシーの作成] をクリックして、新しいポリシーを保存します。
ポリシーを作成したら、ポリシーをコンテナインスタンスロールにアタッチします。ポリシーをロールにアタッチする方法については、「 AWS Identity and Access Management ユーザーガイド」の「ロールのアクセス許可ポリシーの変更 (コンソール)」を参照してください。
- AWS CLI
-
-
instance-cw-logs.json
というファイルを次の内容で作成します。
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": [
"logs:CreateLogGroup",
"logs:CreateLogStream",
"logs:PutLogEvents",
"logs:DescribeLogStreams"
],
"Resource": ["arn:aws:logs:*:*:*"]
}
]
}
-
JSON ポリシードキュメントファイルを使用して IAM ポリシーを作成するには、次のコマンドを使用します。
aws iam create-policy \
--policy-name cwlogspolicy
\
--policy-document file://instance-cw-logs.json
-
次のコマンドを使用して、作成した IAM ポリシーの ARN を取得します。cwlogspolicy
を、作成したポリシーの名前に置き換えます。
aws iam list-policies --scope Local --query 'Policies[?PolicyName==`cwlogsppolicy
`].Arn'
-
次のコマンドを使用して、ポリシー ARN を使用してコンテナインスタンスの IAM ロールにポリシーをアタッチします。
aws iam attach-role-policy \
--role-name ecsInstanceRole
\
--policy-arn arn:aws:iam:111122223333:aws:policy/cwlogspolicy