翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。
ステップ 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 です。
サービスロールの作成 (コンソール)
AWS Management Console にサインインして、IAM コンソール (https://console.aws.amazon.com/iam/)
を開きます。 ナビゲーションペインで [Roles] を選択し、続いて [Create role] を選択します。
-
[ロールの作成] ページで [AWSサービス] を選択し、[このロールを使用するサービスを選択] リストからを選択しますCodeDeploy。
-
[ユースケースの選択] で、ユースケースを選択します。
-
EC2/オンプレミスのデプロイ CodeDeploy
-
Amazon ECS デプロイの場合は、CodeDeploy ECS を選択
-
AWSLambda CodeDeploy デプロイの場合は、Lambda を選択してください。
-
[Next: Permissions] (次のステップ: アクセス許可) を選択します。
-
[アタッチされたアクセス権限ポリシー] ページに、アクセス権限ポリシーが表示されます。[Next: Tags] (次へ: タグ) を選択します。
-
[レビュー] ページで、[ロール名] にサービスロールの名前 (
CodeDeployServiceRole
など) を入力し、[ロールの作成] を選択します。このサービスロールの説明を、[Role description] ボックスに入力することもできます。
-
現在サポートされているすべてのエンドポイントへのアクセス権限をサービスロールに付与する場合は、この手順を終了します。
このサービスロールが一部のエンドポイントにアクセスできないようにするには、ロールのリストで、作成したロールを参照して選択し、次のステップに進みます。
-
[信頼関係] タブで、[信頼関係の編集] を選択します。
-
次のポリシーでは、サポートされているすべてのエンドポイントにアクセスする権限をサービスロールに付与します。
{ "Version": "2012-10-17", "Statement": [ { "Sid": "", "Effect": "Allow", "Principal": { "Service": [ "codedeploy.amazonaws.com" ] }, "Action": "sts:AssumeRole" } ] }
サポートされているエンドポイントの一部にのみアクセスする権限をサービスロールに付与するには、[Policy Document (ポリシードキュメント)] ボックスの内容を以下のポリシーで置き換えます。アクセスを除外するエンドポイントの行を削除し、[Update Trust Policy (信頼ポリシーの更新)] を選択します。
{ "Version": "2012-10-17", "Statement": [ { "Sid": "", "Effect": "Allow", "Principal": { "Service": [ "codedeploy.us-east-2.amazonaws.com", "codedeploy.us-east-1.amazonaws.com", "codedeploy.us-west-1.amazonaws.com", "codedeploy.us-west-2.amazonaws.com", "codedeploy.eu-west-3.amazonaws.com", "codedeploy.ca-central-1.amazonaws.com", "codedeploy.eu-west-1.amazonaws.com", "codedeploy.eu-west-2.amazonaws.com", "codedeploy.eu-central-1.amazonaws.com", "codedeploy.ap-east-1.amazonaws.com", "codedeploy.ap-northeast-1.amazonaws.com", "codedeploy.ap-northeast-2.amazonaws.com", "codedeploy.ap-southeast-1.amazonaws.com", "codedeploy.ap-southeast-2.amazonaws.com", "codedeploy.ap-southeast-4.amazonaws.com", "codedeploy.ap-south-1.amazonaws.com", "codedeploy.sa-east-1.amazonaws.com" ] }, "Action": "sts:AssumeRole" } ] }
サービスロールの詳細については、IAM ユーザーガイド の「AWS のサービスにアクセス許可を委任するロールの作成」を参照してください。
サービスロールの作成 (CLI)
-
開発マシンで、たとえば、
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-2.amazonaws.com", "codedeploy.us-east-1.amazonaws.com", "codedeploy.us-west-1.amazonaws.com", "codedeploy.us-west-2.amazonaws.com", "codedeploy.eu-west-3.amazonaws.com", "codedeploy.ca-central-1.amazonaws.com", "codedeploy.eu-west-1.amazonaws.com", "codedeploy.eu-west-2.amazonaws.com", "codedeploy.eu-central-1.amazonaws.com", "codedeploy.ap-east-1.amazonaws.com", "codedeploy.ap-northeast-1.amazonaws.com", "codedeploy.ap-northeast-2.amazonaws.com", "codedeploy.ap-southeast-1.amazonaws.com", "codedeploy.ap-southeast-2.amazonaws.com", "codedeploy.ap-southeast-4.amazonaws.com", "codedeploy.ap-south-1.amazonaws.com", "codedeploy.sa-east-1.amazonaws.com" ] }, "Action": "sts:AssumeRole" } ] }
注記
リストにある最後のエンドポイントの後にコンマを使用しないでください。
-
-
同じディレクトリから、create-role コマンドを呼び出し、先ほど作成したテキストファイルの情報に基づく
CodeDeployServiceRole
という名前のサービスロールを作成します。aws iam create-role --role-name CodeDeployServiceRole --assume-role-policy-document file://CodeDeployDemo-Trust.json
重要
ファイル名の前に必ず
file://
を含めてください。このコマンドでは必須です。コマンドの出力で、
Arn
オブジェクトの下にあるRole
エントリの値を書きとめておきます。これは、後でデプロイグループを作成する際に必要になります。値を忘れた場合は、サービスロール ARN の取得 (CLI) の手順に従います。 -
使用する管理ポリシーは、コンピューティングプラットフォーム によって異なります。
-
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 を取得するには:
AWS Management Console にサインインして、https://console.aws.amazon.com/iam/
で IAM コンソールを開きます。 -
ナビゲーションペインで [Roles] (ロール) を選択します。
-
[フィルタ] テキストボックスに、「
CodeDeployServiceRole
」と入力して、Enter キーを押します。 -
選択CodeDeployServiceRole。
-
[ロールの ARN] フィールドの値を書き留めます。
サービスロール ARN の取得 (CLI)
AWS CLI を使用してサービスロールの ARN を取得するには、CodeDeployServiceRole
という名前のサービスロールに対して get-role コマンドを呼び出します。
aws iam get-role --role-name CodeDeployServiceRole --query "Role.Arn" --output text
返される値はサービスロールの ARN です。