Amazon ECS コンテナインスタンスの IAM ロール - Amazon Elastic Container Service

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

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) ロールの作成

重要

クラスターに外部インスタンスを登録する場合は、ECS Anywhere IAM ロール を参照してください。

機能や機能強化が今後導入されたときに Amazon ECS がそれらに対するアクセス許可を追加できるように、手動でロールを作成し、その IAM 管理ポリシーをコンテナインスタンスにアタッチできます。必要に応じて、以下の手順を使用してマネージド IAM ポリシーをアタッチします。

AWS Management Console
コンテナインスタンスの ecsInstanceRole IAM ロールを作成するには
  1. https://console.aws.amazon.com/iam/IAMコンソールを開きます。

  2. ナビゲーションペインで ロール を選択してから、ロールを作成する を選択します。

  3. AWS サービスロールタイプを選択し、他のサービスのユースケースで AWS Elastic Container Service を選択します。

  4. [EC2 Role for Elastic Container Service] (Elastic コンテナサービス用 EC2 ロール) ユースケースを選択してから、[Next: Permissions (次の手順: 許可)] を選択します。

  5. アクセス許可ポリシーセクションで、AmazonEC2ContainerServiceforEC2Role ポリシーが選択されていることを確認してから、次へを選択します

    重要

    AmazonEC2ContainerServiceforEC2Role 管理ポリシーをコンテナインスタンスの IAM ロールにアタッチする必要があります。アタッチしないと、 を使用してクラスター AWS Management Console を作成するというエラーが表示されます。

  6. ロール名 には ecsInstanceRole を入力し、オプションで説明を入力できます。

  7. [タグを追加 (オプション)] で、ポリシーに関連付けるカスタムタグを入力し、[次へ: レビュー] を選択します。

  8. ロール情報を確認し、[Create role] (ロールの作成) を選択して終了します。

AWS CLI

すべてのユーザー入力を独自の値に置き換えます。

  1. instance-role-trust-policy.json というファイルを次の内容で作成します。

    { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Service": "ec2.amazonaws.com"}, "Action": "sts:AssumeRole" } ] }
  2. 信頼ポリシードキュメントを使用してインスタンス IAM ロールを作成するには、次のコマンドを使用します。

    aws iam create-role \ --role-name ecsInstanceRole \ --assume-role-policy-document file://instance-role-trust-policy.json
  3. 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" } }
  4. ecsInstanceRole インスタンスプロファイルに ecsInstanceRole-profile ロールを追加します。

    aws iam add-role-to-instance-profile \ --instance-profile-name ecsInstanceRole-profile \ --role-name ecsInstanceRole
  5. 次のコマンドを使用して、 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 ポリシーエディタでポリシーを作成するには
  1. にサインイン AWS Management Console し、https://console.aws.amazon.com/iam/ で IAM コンソールを開きます。

  2. 左側のナビゲーションペインで、[ポリシー] を選択します。

    初めて [ポリシー] を選択する場合には、[管理ポリシーにようこそ] ページが表示されます。[今すぐ始める] を選択します。

  3. ページの上部で、[ポリシーを作成] を選択します。

  4. [ポリシーエディタ] セクションで、[JSON] オプションを選択します。

  5. 次の JSON ポリシードキュメントを入力します。

    { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "logs:CreateLogGroup", "logs:CreateLogStream", "logs:PutLogEvents", "logs:DescribeLogStreams" ], "Resource": ["arn:aws:logs:*:*:*"] } ] }
  6. [次へ] をクリックします。

    注記

    いつでも [Visual] と [JSON] エディタオプションを切り替えることができます。ただし、[Visual] エディタで [] に変更または選択した場合、IAM はポリシーを再構成して visual エディタに合わせて最適化することがあります。詳細については、「IAM ユーザーガイド」の「ポリシーの再構成」を参照してください。

  7. [確認と作成] ページで、作成するポリシーの [ポリシー名][説明] (オプション) を入力します。[このポリシーで定義されているアクセス許可] を確認して、ポリシーによって付与されたアクセス許可を確認します。

  8. [ポリシーの作成] をクリックして、新しいポリシーを保存します。

ポリシーを作成したら、ポリシーをコンテナインスタンスロールにアタッチします。ポリシーをロールにアタッチする方法については、「 AWS Identity and Access Management ユーザーガイド」の「ロールのアクセス許可ポリシーの変更 (コンソール)」を参照してください。

AWS CLI
  1. instance-cw-logs.json というファイルを次の内容で作成します。

    { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "logs:CreateLogGroup", "logs:CreateLogStream", "logs:PutLogEvents", "logs:DescribeLogStreams" ], "Resource": ["arn:aws:logs:*:*:*"] } ] }
  2. JSON ポリシードキュメントファイルを使用して IAM ポリシーを作成するには、次のコマンドを使用します。

    aws iam create-policy \ --policy-name cwlogspolicy \ --policy-document file://instance-cw-logs.json
  3. 次のコマンドを使用して、作成した IAM ポリシーの ARN を取得します。cwlogspolicy を、作成したポリシーの名前に置き換えます。

    aws iam list-policies --scope Local --query 'Policies[?PolicyName==`cwlogsppolicy`].Arn'
  4. 次のコマンドを使用して、ポリシー ARN を使用してコンテナインスタンスの IAM ロールにポリシーをアタッチします。

    aws iam attach-role-policy \ --role-name ecsInstanceRole \ --policy-arn arn:aws:iam:111122223333:aws:policy/cwlogspolicy