ステップ 2: のサービスロールを作成する CodeDeploy - AWS CodeDeploy

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

ステップ 2: のサービスロールを作成する CodeDeploy

AWS では、サービスロールを使用して AWS のサービスにアクセス許可を付与することで、このサービスから AWS リソースにアクセスできるようにします。サービスロールにアタッチするポリシーによって、どの リソースにサービスがアクセスできるか、およびそれらのリソースで何ができるかが決まります。

作成するサービスロールには、 CodeDeploy コンピュートプラットフォームに必要な権限が付与されている必要があります。複数のコンピューティングプラットフォームにデプロイした場合、それぞれにサービスロールを 1 つずつ作成します。アクセス権限を追加するには、AWS が指定したポリシーを 1 つ以上アタッチします。

EC2/オンプレミスのデプロイには、AWSCodeDeployRole ポリシーをアタッチします。これは、サービスロールで以下を実行するためのアクセス許可を提供します。

  • インスタンスのタグを読み取る、または Amazon EC2 Auto Scaling グループ名により Amazon EC2 インスタンスを識別します。

  • Amazon EC2 Auto Scaling グループ、ライフサイクルフック、スケーリングポリシーの読み取り、作成、更新、削除を行います。

  • Amazon SNS トピックに情報を公開します。

  • CloudWatch アラームに関する情報を取得します。

  • Elastic Load Balancing を読み、更新します。

    注記

    起動テンプレートを使用して Auto Scaling グループを作成する場合は、次のアクセス権限を追加する必要があります。

    • ec2:RunInstances

    • ec2:CreateTags

    • iam:PassRole

    詳細については、「Amazon EC2 Auto Scaling ユーザーガイド」、「Auto Scaling グループの起動テンプレートの作成」、および「起動テンプレートサポート」にはの「ステップ 2: サービスロールを作成する」を参照してください。

Amazon ECS のデプロイの場合、サポートサービスへのフルアクセスが必要な場合は、 AWSCodeDeployRoleForECS ポリシーをアタッチします。これは、サービスロールで以下を実行するためのアクセス許可を提供します。

  • Amazon ECS タスクセットを読んで、更新、削除します。

  • Elastic Load Balancing ターゲットグループ、リスナー、ルールを更新します。

  • AWS Lambda 関数を呼び出します。

  • Amazon S3 バケットのリビジョンファイルにアクセスします。

  • CloudWatch アラームに関する情報を取得する。

  • Amazon SNS トピックに情報を公開します。

Amazon ECS のデプロイの場合、サポートサービスへの制限付きのアクセスが必要な場合は、AWSCodeDeployRoleForECSLimited ポリシーをアタッチします。これは、サービスロールで以下を実行するためのアクセス許可を提供します。

  • Amazon ECS タスクセットを読んで、更新、削除します。

  • CloudWatch アラームに関する情報を取得する。

  • Amazon SNS トピックに情報を公開します。

AWS Lambda デプロイを使用する場合、Amazon SNS への公開を許可する場合は、AWSCodeDeployRoleForLambda ポリシーにアタッチします。これは、サービスロールで以下を実行するためのアクセス許可を提供します。

  • AWS Lambda 関数およびエイリアスの読み取り、更新、呼び出しを行います。

  • Amazon S3 バケットのリビジョンファイルにアクセスします。

  • CloudWatch アラームに関する情報を取得する。

  • Amazon SNS トピックに情報を公開します。

AWS Lambda デプロイを使用する場合、Amazon SNS への公開を限定する場合は、AWSCodeDeployRoleForLambdaLimited ポリシーにアタッチします。これは、サービスロールで以下を実行するためのアクセス許可を提供します。

  • AWS Lambda 関数およびエイリアスの読み取り、更新、呼び出しを行います。

  • Amazon S3 バケットのリビジョンファイルにアクセスします。

  • CloudWatch アラームに関する情報を取得する。

また、サービスロールの設定の一環として、アクセス権限を付与するエンドポイントを指定するために信頼関係を更新します。

IAM コンソールを使用して、サービスロールを作成できます。AWS CLI、または IAM API です。

サービスロールの作成 (コンソール)

  1. AWS Management Console にサインインして、IAM コンソール (https://console.aws.amazon.com/iam/) を開きます。

  2. ナビゲーションペインで [Roles] を選択し、続いて [Create role] を選択します。

  3. [AWSサービス] を選択し、[ユースケース] のドロップダウンリストからを選択しますCodeDeploy

  4. ユースケースを選択してください:

    • EC2/オンプレミスデプロイの場合は、を選択します。CodeDeploy

    • AWSLambda デプロイの場合は、「Lambda」を選択しますCodeDeploy 。

    • Amazon ECS をデプロイする場合は、ECS を選択してください。CodeDeploy

  5. [次へ] をクリックします。

  6. [アクセス権限の追加] ページに、そのユースケースに適したアクセス権限ポリシーが表示されます。[次へ] をクリックします。

  7. [名前、レビュー、作成] ページの [ロール名] に、サービスロールの名前 (例:CodeDeployServiceRole) を入力し、[ロールの作成] を選択します。

    このサービスロールの説明を、[Role description] ボックスに入力することもできます。

  8. 現在サポートされているすべてのエンドポイントへのアクセス権限をサービスロールに付与する場合は、この手順を終了します。

    このサービスロールから一部のエンドポイントへのアクセスを制限するには、この手順の残りのステップに進んでください。

  9. ロールのリストで、先ほど作成したロール (CodeDeployServiceRole) を検索して選択します。

  10. [信頼関係] タブを選択します。

  11. [Edit trust policy] (信頼ポリシーを編集) を選択します。

    次のポリシーでは、サポートされているすべてのエンドポイントにアクセスする権限をサービスロールに付与します。

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

    サポートされている一部のエンドポイントにのみサービスロールへのアクセス権を付与するには、信頼ポリシーテキストボックスの内容を次のポリシーに置き換えます。アクセスを禁止したいエンドポイントの行を削除し、[ポリシーの更新] を選択します。

    { "Version": "2012-10-17", "Statement": [ { "Sid": "", "Effect": "Allow", "Principal": { "Service": [ "codedeploy.us-east-1.amazonaws.com", "codedeploy.us-east-2.amazonaws.com", "codedeploy.us-west-1.amazonaws.com", "codedeploy.us-west-2.amazonaws.com", "codedeploy.ca-central-1.amazonaws.com", "codedeploy.ap-east-1.amazonaws.com", "codedeploy.ap-northeast-1.amazonaws.com", "codedeploy.ap-northeast-2.amazonaws.com", "codedeploy.ap-northeast-3.amazonaws.com", "codedeploy.ap-southeast-1.amazonaws.com", "codedeploy.ap-southeast-2.amazonaws.com", "codedeploy.ap-southeast-3.amazonaws.com", "codedeploy.ap-southeast-4.amazonaws.com", "codedeploy.ap-south-1.amazonaws.com", "codedeploy.ap-south-2.amazonaws.com", "codedeploy.ca-central-1.amazonaws.com", "codedeploy.eu-west-1.amazonaws.com", "codedeploy.eu-west-2.amazonaws.com", "codedeploy.eu-west-3.amazonaws.com", "codedeploy.eu-central-1.amazonaws.com", "codedeploy.eu-central-2.amazonaws.com", "codedeploy.eu-north-1.amazonaws.com", "codedeploy.eu-south-1.amazonaws.com", "codedeploy.eu-south-2.amazonaws.com", "codedeploy.il-central-1.amazonaws.com", "codedeploy.me-central-1.amazonaws.com", "codedeploy.me-south-1.amazonaws.com", "codedeploy.sa-east-1.amazonaws.com" ] }, "Action": "sts:AssumeRole" } ] }

サービスロールの詳細については、IAM ユーザーガイド の「AWS のサービスにアクセス許可を委任するロールの作成」を参照してください。

サービスロールの作成 (CLI)

  1. 開発マシンで、たとえば、CodeDeployDemo-Trust.json という名前のテキストファイルを作成します。このファイルは、 CodeDeploy がユーザーの代理操作の実行を許可するのに使用されます。

    以下のいずれかを実行します。

    • サポートされているすべての AWS リージョンへのアクセス権限を付与するには、ファイルに次の内容を保存します。

      { "Version": "2012-10-17", "Statement": [ { "Sid": "", "Effect": "Allow", "Principal": { "Service": [ "codedeploy.amazonaws.com" ] }, "Action": "sts:AssumeRole" } ] }
    • サポートされているリージョンの一部にのみアクセスする権限を付与するには、ファイルに次の内容を入力し、アクセスを除外するリージョンの行を削除します。

      { "Version": "2012-10-17", "Statement": [ { "Sid": "", "Effect": "Allow", "Principal": { "Service": [ "codedeploy.us-east-1.amazonaws.com", "codedeploy.us-east-2.amazonaws.com", "codedeploy.us-west-1.amazonaws.com", "codedeploy.us-west-2.amazonaws.com", "codedeploy.ca-central-1.amazonaws.com", "codedeploy.ap-east-1.amazonaws.com", "codedeploy.ap-northeast-1.amazonaws.com", "codedeploy.ap-northeast-2.amazonaws.com", "codedeploy.ap-northeast-3.amazonaws.com", "codedeploy.ap-southeast-1.amazonaws.com", "codedeploy.ap-southeast-2.amazonaws.com", "codedeploy.ap-southeast-3.amazonaws.com", "codedeploy.ap-southeast-4.amazonaws.com", "codedeploy.ap-south-1.amazonaws.com", "codedeploy.ap-south-2.amazonaws.com", "codedeploy.ca-central-1.amazonaws.com", "codedeploy.eu-west-1.amazonaws.com", "codedeploy.eu-west-2.amazonaws.com", "codedeploy.eu-west-3.amazonaws.com", "codedeploy.eu-central-1.amazonaws.com", "codedeploy.eu-central-2.amazonaws.com", "codedeploy.eu-north-1.amazonaws.com", "codedeploy.eu-south-1.amazonaws.com", "codedeploy.eu-south-2.amazonaws.com", "codedeploy.il-central-1.amazonaws.com", "codedeploy.me-central-1.amazonaws.com", "codedeploy.me-south-1.amazonaws.com", "codedeploy.sa-east-1.amazonaws.com" ] }, "Action": "sts:AssumeRole" } ] }
      注記

      リストにある最後のエンドポイントの後にコンマを使用しないでください。

  2. 同じディレクトリから、create-role コマンドを呼び出し、先ほど作成したテキストファイルの情報に基づく CodeDeployServiceRole という名前のサービスロールを作成します。

    aws iam create-role --role-name CodeDeployServiceRole --assume-role-policy-document file://CodeDeployDemo-Trust.json
    重要

    ファイル名の前に必ず file:// を含めてください。このコマンドでは必須です。

    コマンドの出力で、Arn オブジェクトの下にある Role エントリの値を書きとめておきます。これは、後でデプロイグループを作成する際に必要になります。値を忘れた場合は、サービスロール ARN の取得 (CLI) の手順に従います。

  3. 使用する管理ポリシーは、コンピューティングプラットフォーム によって異なります。

    • EC2/オンプレミスコンピューティングプラットフォームにデプロイする場合は、以下を行います。

      attach-role-policy コマンドを呼び出し、CodeDeployServiceRole という名前のサービスロールに対して、AWSCodeDeployRole という名前の IAM マネージドポリシーに基づくアクセス許可を付与します。例:

      aws iam attach-role-policy --role-name CodeDeployServiceRole --policy-arn arn:aws:iam::aws:policy/service-role/AWSCodeDeployRole
    • AWS Lambda コンピューティングプラットフォームにデプロイする場合は、以下を行います。

      attach-role-policy コマンドを呼び出し、CodeDeployServiceRole という名前のサービスロールに対して、AWSCodeDeployRoleForLambda または AWSCodeDeployRoleForLambdaLimited という名前の IAM マネージドポリシーに基づくアクセス許可を付与します。例:

      aws iam attach-role-policy --role-name CodeDeployServiceRole --policy-arn arn:aws:iam::aws:policy/service-role/AWSCodeDeployRoleForLambda
    • Amazon ECS コンピューティングプラットフォームへのデプロイの場合。

      attach-role-policy コマンドを呼び出し、CodeDeployServiceRole という名前のサービスロールに対して、AWSCodeDeployRoleForECS または AWSCodeDeployRoleForECSLimited という名前の IAM マネージドポリシーに基づくアクセス許可を付与します。例:

      aws iam attach-role-policy --role-name CodeDeployServiceRole --policy-arn arn:aws:iam::aws:policy/AWSCodeDeployRoleForECS

サービスロールの作成の詳細については、IAM ユーザーガイド の「AWS サービス用のロールを作成する」を参照してください。

サービスロール ARN の取得 (コンソール)

IAM コンソールを使用してサービスロールの ARN を取得するには:

  1. AWS Management Console にサインインして、https://console.aws.amazon.com/iam/ で IAM コンソールを開きます。

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

  3. [フィルタ] テキストボックスに、「CodeDeployServiceRole」と入力して、Enter キーを押します。

  4. を選択しますCodeDeployServiceRole

  5. [ロールの ARN] フィールドの値を書き留めます。

サービスロール ARN の取得 (CLI)

AWS CLI を使用してサービスロールの ARN を取得するには、CodeDeployServiceRole という名前のサービスロールに対して get-role コマンドを呼び出します。

aws iam get-role --role-name CodeDeployServiceRole --query "Role.Arn" --output text

返される値はサービスロールの ARN です。