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

Amazon ECS コンテナインスタンスの IAM ロール

Amazon ECS コンテナインスタンス(Amazon EC2 と外部インスタンスの両方を含む)では、Amazon ECS コンテナエージェントを実行し、エージェントがユーザーに属していることをサービスに伝える IAM ロールが必要です。コンテナインスタンスを起動してクラスターに登録する前に、使用するコンテナインスタンス用の IAM ロールを作成する必要があります。

重要

クラスターに外部インスタンスを登録する場合、使用する IAM ロールには Systems Manager のアクセス許可も必要です。詳細については、「外部インスタンスに必要な IAM アクセス許可」を参照してください。

Amazon ECS では、AmazonEC2ContainerServiceforEC2Role 管理 IAM ポリシーを提供し、これには Amazon ECS の完全な機能セットを使用するために必要なアクセス権限が含まれます。この管理ポリシーは、IAM ロールにアタッチし、コンテナインスタンスに関連付けることができます。または、使用するカスタムポリシーを作成するときに、管理ポリシーをガイドとして使用することもできます。コンテナインスタンスロールには、Amazon ECS コンテナエージェントと Docker デーモンがユーザーに変わって AWS API を呼び出すために必要な許可があります。管理ポリシーの詳細については、「AmazonEC2ContainerServiceforEC2Role」を参照してください。

Amazon ECS コンテナインスタンス IAM ロールの作成

重要

クラスターに外部インスタンスを登録する場合は、外部インスタンスに必要な IAM アクセス許可 を参照してください。

Amazon ECS インスタンスのロールは、Amazon ECS コンソールの初回実行時に自動的に作成されます。ただし、機能や機能強化が今後導入されたときに Amazon ECS がそれらに対するアクセス許可を追加できるように、手動でロールを作成し、その IAM 管理ポリシーをコンテナインスタンスにアタッチすることができます。次の手順に従って、アカウントにすでに Amazon ECS container インスタンスの IAM ロールが存在するかどうかを確認し、必要に応じて IAM 管理ポリシーをアタッチします。

IAM コンソールで ecsInstanceRole を確認するには

  1. IAM コンソール (https://console.aws.amazon.com/iam/) を開きます。

  2. ナビゲーションペインで [Roles] (ロール) を選択します。

  3. ロールのリストで ecsInstanceRole を検索します。ロールが存在しない場合は、次のセクションの手順を使用してロールを作成します。ロールが存在する場合は、そのロールを選択して、アタッチされているポリシーを表示します。

  4. [Permissions] (許可) タブを選択します。

  5. [Permissions policies (許可ポリシー)] セクションで、AmazonEC2ContainerServiceforEC2Role 管理ポリシー、または同等のカスタムポリシーがロールにアタッチされていることを確認します。ポリシーがアタッチされている場合、コンテナインスタンスのロールが適切に構成されています。そうでない場合、次のサブステップに従ってポリシーをアタッチします。

    重要

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

    1. [Attach policies] (ポリシーの添付) を選択します。

    2. [Filter policies (フィルターポリシー)] ボックスに、アタッチする利用可能なポリシーを絞り込むために [AmazonEC2ContainerServiceforEC2Role] と入力します。

    3. [AmazonEC2ContainerServiceforEC2Role] ポリシーの左側にあるチェックボックスをオンにし、[Attach Policy] を選択します。

  6. [Trust relationships] (信頼関係) タブと、[Edit trust relationship] (信頼関係の編集) を選択します。

  7. 信頼関係に以下のポリシーが含まれていることを確認します。信頼関係が以下のポリシーと一致する場合、[Cancel] (キャンセル) を選択します。信頼関係が一致しない場合、ポリシーを [Policy Document] (ポリシードキュメント) ウィンドウにコピーし、[Update Trust Policy] (信頼ポリシーの更新) を選択します。

    { "Version": "2008-10-17", "Statement": [ { "Sid": "", "Effect": "Allow", "Principal": { "Service": "ec2.amazonaws.com" }, "Action": "sts:AssumeRole" } ] }

コンテナインスタンスの ecsInstanceRole IAM ロールを作成するには

  1. IAM コンソール (https://console.aws.amazon.com/iam/) を開きます。

  2. ナビゲーションペインで [ロール] を選択した後、[ロールの作成] を選択します。

  3. [AWSサービス] ロールタイプを選択し、続いて [Elastic Container Service] を選択します。

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

  5. [アクセス権限ポリシーをアタッチする] セクションで、[AmazonEC2ContainerServiceforEC2Role] ポリシー、[Next: Review (次の手順: 確認)] の順に選択します。

    重要

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

  6. [Add tags (optional)] (タグの追加 (オプション)) で、ポリシーに関連付けるカスタムタグを指定し、[Next: Review] (次の手順: レビュー) を選択します。

  7. [Role name] に、ecsInstanceRole と入力します。必要に応じて説明を入力することもできます。

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

  9. 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" } }
  10. ecsInstanceRole インスタンスプロファイルに ecsInstanceRole-profile ロールを追加します。

    aws iam add-role-to-instance-profile \ --instance-profile-name ecsInstanceRole-profile \ --role-name ecsInstanceRole

Amazon S3 の読み取り専用アクセスをコンテナインスタンスの IAM ロールに追加する

設定情報を Amazon S3 のプライベートバケットに保存し、コンテナインスタンスの IAM ロールに読み取り専用アクセス権限を付与するのが、コンテナインスタンスの起動時に設定を許可する安全で便利な方法です。ecs.config ファイルのコピーをプライベートバケットに保存し、Amazon EC2 ユーザーデータを使用して AWS CLI をインストールします。その後、インスタンスの起動時に設定情報を /etc/ecs/ecs.config にコピーします。

ecs.config ファイルの作成と Amazon S3 への保存、およびこの構成を使用したインスタンスの起動の詳細については、「Amazon S3 にコンテナインスタンスの設定を保存する」を参照してください。

Amazon S3 の読み取り専用アクセス権限をコンテナインスタンスのロールに許可するには

  1. IAM コンソール (https://console.aws.amazon.com/iam/) を開きます。

  2. ナビゲーションペインで [Roles] (ロール) を選択します。

  3. コンテナインスタンスに対して使用する IAM ロールを選択します (このロールには多くの場合、ecsInstanceRole というタイトルが付けられます)。詳細については、「Amazon ECS コンテナインスタンスの IAM ロール」を参照してください。

  4. [Permissions] タブで [Attach policy] を選択します。

  5. [Attach policy] ページで、ポリシーの結果を絞り込むために [S3Filter: Policy type] フィールドに と入力します。

  6. [AmazonS3ReadOnlyAccess] ポリシーの左側にあるチェックボックスをオンにし、[Attach policy] をクリックします。

    注記

    このポリシーは、すべての Amazon S3 リソースへの読み取り専用アクセスを許可します。より制限があるバケットポリシーの例については、Amazon Simple Storage Service ユーザーガイドの「バケットポリシーの例」を参照してください。