Amazon ECS CodeDeploy IAM ロール - Amazon Elastic Container Service

Amazon ECS CodeDeploy IAM ロール

Amazon ECS で CodeDeploy ブルー/グリーンデプロイタイプを使用するには、ユーザーの代わりに Amazon ECS サービスを更新するためのアクセス許可を事前に CodeDeploy サービスに付与しておく必要があります。これらのアクセス権限は、CodeDeploy IAM ロール (ecsCodeDeployRole) によって付与されます。

注記

ユーザーには CodeDeploy を使用するアクセス許可も必要です。これらの権限については、「必要な IAM 許可」で説明しています。

2 つの管理ポリシーが用意されています。詳細については、「AWS マネージドポリシーリファレンスガイド」で、次のいずれかを参照してください。

  • AWSCodeDeployRoleForECS - 関連付けられたアクションを使用して、リソースを更新するためのアクセス許可を CodeDeploy に付与します。

  • AWSCodeDeployRoleForECSLimited - より制限されたアクセス許可を CodeDeploy に付与します。

CodeDeploy ロールの作成

以下の手順を使用して、Amazon ECS 用 CodeDeploy ロールを作成できます。

AWS マネジメントコンソール
CodeDeploy のサービスロールを作成するには (IAM コンソール)
  1. AWS マネジメントコンソール にサインインして、IAM コンソール https://console.aws.amazon.com/iam/ を開きます。

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

  3. 信頼できるエンティティタイプ で、AWS のサービス を選択します。

  4. [サービスまたはユースケース][CodeDeploy] を選択し、次に [CodeDeploy - ECS] ユースケースを選択します。

  5. [次へ] を選択します。

  6. [アクセス許可ポリシーをアタッチする]」セクションで、[AWSCodeDeployRoleForECS] ポリシーが選択されていることを確認します。

  7. [次へ] を選択します。

  8. [ロール名][ECSodeDeployRole] と入力します。

  9. ロールを確認したら、[ロールを作成] を選択します。

AWS CLI

すべての [ユーザー入力] は、お客様の情報で置き換えてください。

  1. CodeDeploy IAM ロールに使用する信頼ポリシーを含む、codedeploy-trust-policy.json という名前のファイルを作成します。

    JSON
    JSON
    { "Version":"2012-10-17", "Statement": [ { "Sid": "", "Effect": "Allow", "Principal": { "Service": ["codedeploy.amazonaws.com"] }, "Action": "sts:AssumeRole" } ] }
  2. 前のステップで作成した信頼ポリシーを使用した ecsCodedeployRole という名前の IAM ロールを作成します。

    aws iam create-role \ --role-name ecsCodedeployRole \ --assume-role-policy-document file://codedeploy-trust-policy.json
  3. AWSCodeDeployRoleForECS または AWSCodeDeployRoleForECSLimited マネージドポリシー を ecsTaskRole ロールにアタッチします。

    aws iam attach-role-policy \ --role-name ecsCodedeployRole \ --policy-arn arn:aws:iam::aws:policy/AWSCodeDeployRoleForECS
    aws iam attach-role-policy \ --role-name ecsCodedeployRole \ --policy-arn arn:aws:iam::aws:policy/AWSCodeDeployRoleForECSLimited

サービス内のタスクにタスク実行ロールが必要な場合は、各タスク実行ロールまたはタスクロールの上書きの iam:PassRole アクセス許可を、ポリシーとして CodeDeploy ロールに追加する必要があります。

タスク実行ロールのアクセス許可

サービス内のタスクにタスク実行ロールが必要な場合は、各タスク実行ロールまたはタスクロールの上書きの iam:PassRole アクセス許可を、ポリシーとして CodeDeploy ロールに追加する必要があります。詳細については、「Amazon ECS タスク実行IAM ロール」および「Amazon ECS タスクの IAM ロール」を参照してください。次に、そのポリシーを CodeDeploy ロールにアタッチします。

ポリシーの作成

AWS マネジメントコンソール
JSON ポリシーエディタでポリシーを作成するには
  1. AWS マネジメントコンソール にサインインして、IAM コンソール (https://console.aws.amazon.com/iam/) を開きます。

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

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

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

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

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

    { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": "iam:PassRole", "Resource": ["arn:aws:iam::<aws_account_id>:role/<ecsCodeDeployRole>"] } ] }
  6. 次へ を選択します。

    注記

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

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

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

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

AWS CLI

すべての [ユーザー入力] は、お客様の情報で置き換えてください。

  1. blue-green-iam-passrole.json というファイルを次の内容で作成します。

    JSON
    JSON
    { "Version":"2012-10-17", "Statement": [ { "Effect": "Allow", "Action": "iam:PassRole", "Resource": ["arn:aws:iam::*:role/code-deploy-role"], "Condition": { "StringEquals": {"iam:PassedToService": "ecs.amazonaws.com"} } } ] }
  2. JSON ポリシードキュメントファイルを使用して IAM ポリシーを作成するには、次のコマンドを使用します。

    aws iam create-policy \ --policy-name cdTaskExecutionPolicy \ --policy-document file://blue-green-iam-passrole.json
  3. 次のコマンドを使用して、作成した IAM ポリシーの ARN を取得します。

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

    aws iam attach-role-policy \ --role-name ecsCodedeployRole \ --policy-arn arn:aws:iam:111122223333:aws:policy/cdTaskExecutionPolicy