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

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

Amazon ECS CodeDeploy IAM ロール

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

注記

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

2 つの管理ポリシーが用意されています。次に示している AWSCodeDeployRoleForECS ポリシーでは、関連付けられているアクションを使用してリソースを更新するためのアクセス許可が CodeDeploy に付与されます。

{ "Version": "2012-10-17", "Statement": [ { "Action": [ "ecs:DescribeServices", "ecs:CreateTaskSet", "ecs:UpdateServicePrimaryTaskSet", "ecs:DeleteTaskSet", "elasticloadbalancing:DescribeTargetGroups", "elasticloadbalancing:DescribeListeners", "elasticloadbalancing:ModifyListener", "elasticloadbalancing:DescribeRules", "elasticloadbalancing:ModifyRule", "lambda:InvokeFunction", "cloudwatch:DescribeAlarms", "sns:Publish", "s3:GetObject", "s3:GetObjectVersion" ], "Resource": "*", "Effect": "Allow" }, { "Action": [ "iam:PassRole" ], "Effect": "Allow", "Resource": "*", "Condition": { "StringLike": { "iam:PassedToService": [ "ecs-tasks.amazonaws.com" ] } } } ] }

次に示している AWSCodeDeployRoleForECSLimited ポリシーでは、より限定されたアクセス許可が CodeDeploy に付与されます。

{ "Version": "2012-10-17", "Statement": [ { "Action": [ "ecs:DescribeServices", "ecs:CreateTaskSet", "ecs:UpdateServicePrimaryTaskSet", "ecs:DeleteTaskSet", "cloudwatch:DescribeAlarms" ], "Resource": "*", "Effect": "Allow" }, { "Action": [ "sns:Publish" ], "Resource": "arn:aws:sns:*:*:CodeDeployTopic_*", "Effect": "Allow" }, { "Action": [ "elasticloadbalancing:DescribeTargetGroups", "elasticloadbalancing:DescribeListeners", "elasticloadbalancing:ModifyListener", "elasticloadbalancing:DescribeRules", "elasticloadbalancing:ModifyRule" ], "Resource": "*", "Effect": "Allow" }, { "Action": [ "lambda:InvokeFunction" ], "Resource": "arn:aws:lambda:*:*:function:CodeDeployHook_*", "Effect": "Allow" }, { "Action": [ "s3:GetObject", "s3:GetObjectVersion" ], "Resource": "*", "Condition": { "StringEquals": { "s3:ExistingObjectTag/UseWithCodeDeploy": "true" } }, "Effect": "Allow" }, { "Action": [ "iam:PassRole" ], "Effect": "Allow", "Resource": [ "arn:aws:iam::*:role/ecsTaskExecutionRole", "arn:aws:iam::*:role/ECSTaskExecution*" ], "Condition": { "StringLike": { "iam:PassedToService": [ "ecs-tasks.amazonaws.com" ] } } } ] }

CodeDeploy 用に IAM ロールを作成するには

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

  2. ナビゲーションペインで [Roles]、[Create role] の順に選択します。

  3. [Select type of trusted entity (信頼されたエンティティの種類を選択)] で [AWS サービス] を選択します。

  4. [このロールを使用するサービスを選択] で [CodeDeploy] を選択します。

  5. [ユースケースの選択] で、[CodeDeploy - ECS]、[Next: Permissions (次の手順: アクセス許可)] の順に選択します。

  6. [Next: Tags (次の手順: タグ)] を選択します。

  7. [タグの追加 (オプション)] で、オプションの IAM タグをロールに追加できます。完了したら、[Next: Review (次の手順: 確認)] を選択します。

  8. [ロール名] に ecsCodeDeployRole と入力し、[ロールの説明] (省略可能) に説明を入力してから、[ロールの作成] を選択します。

必要なアクセス許可を Amazon ECS CodeDeploy IAM ロールに追加します。

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

  2. ロールのリストで ecsCodeDeployRole を検索します。そのロールが見つからない場合は、次の手順に従ってロールを作成します。ロールが存在する場合は、そのロールを選択して、アタッチされているポリシーを表示します。

  3. [Permissions policies (アクセス許可ポリシー)] セクションで、そのロールに [AWSCodeDeployRoleForECS] または [AWSCodeDeployRoleForECSLimited] 管理ポリシーがアタッチされていることを確認します。そのポリシーがアタッチされている場合、Amazon ECS CodeDeploy サービスロールは適切に設定されています。そうでない場合、次のサブステップに従ってポリシーをアタッチします。

    1. [Attach policies (ポリシーをアタッチします)] を選択します。

    2. [フィルター] に AWSCodeDeployRoleForECS または AWSCodeDeployRoleForECSLimited と入力して、アタッチする利用可能なポリシーを絞り込みます。

    3. AWS 管理ポリシーの左にあるボックスをオンにし、[ポリシーのアタッチ] を選択します。

  4. [信頼関係]、[信頼関係の編集] の順に選択します。

  5. 信頼関係に以下のポリシーが含まれていることを確認します。信頼関係が以下のポリシーと一致する場合、[Cancel] を選択します。信頼関係が一致しない場合、ポリシーを [Policy Document] ウィンドウにコピーし、[Update Trust Policy] を選択します。

    { "Version": "2012-10-17", "Statement": [ { "Sid": "", "Effect": "Allow", "Principal": { "Service": [ "codedeploy.amazonaws.com" ] }, "Action": "sts:AssumeRole" } ] }
  6. Blue/Green デプロイタイプを使用する Amazon ECS サービス内のタスクでタスク実行ロールまたはタスクロール上書きを使用する必要がある場合は、各タスクのタスク実行ロールまたはタスクロール上書きに対する iam:PassRole アクセス許可を、CodeDeploy IAM ロールにインラインポリシーとして追加する必要があります。詳細については、「Amazon ECS タスク実行 IAM ロール」および「タスク用の IAM ロール」を参照してください。

    以下のサブステップに従ってインラインポリシーを作成します。

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

    2. ロールのリストで ecsCodeDeployRole を検索します。そのロールが見つからない場合は、次の手順に従ってロールを作成します。ロールが存在する場合は、そのロールを選択して、アタッチされているポリシーを表示します。

    3. [Permissions policies (アクセス許可ポリシー)] セクションで [Add inline policy (インラインポリシーの追加)] を選択します。

    4. [JSON] タブを選択して次のポリシーテキストを追加します。

      { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": "iam:PassRole", "Resource": [ "arn:aws:iam::<aws_account_id>:role/<ecsTaskExecutionRole_or_TaskRole_name>" ] } ] }
      注記

      タスク実行ロールまたはタスクロール上書きの完全 ARN を指定します。

    5. [ポリシーの確認] を選択します。

    6. 追加したポリシーの名前を [Name (名前)] に入力してから [ポリシーの作成] を選択します。