Amazon ECS CodeDeploy IAM ロール
Amazon ECS で CodeDeploy ブルー/グリーンデプロイタイプを使用するには、ユーザーの代わりに Amazon ECS サービスを更新するためのアクセス許可を事前に CodeDeploy サービスに付与しておく必要があります。これらのアクセス権限は、CodeDeploy IAM ロール (ecsCodeDeployRole
) によって付与されます。
ユーザーには CodeDeploy を使用するアクセス許可も必要です。これらの権限については、「必要な IAM 許可」で説明しています。
2 つの管理ポリシーが用意されています。詳細については、「AWS マネージドポリシーリファレンスガイド」で、次のいずれかを参照してください。
CodeDeploy ロールの作成
以下の手順を使用して、Amazon ECS 用 CodeDeploy ロールを作成できます。
- AWS Management Console
-
CodeDeploy のサービスロールを作成するには (IAM コンソール)
AWS Management Console にサインインして、IAM コンソール (https://console.aws.amazon.com/iam/) を開きます。
-
IAM コンソールのナビゲーションペインで、[ロール]、[ロールを作成] を選択します。
-
信頼できるエンティティタイプ で、AWS サービス を選択します。
-
[サービスまたはユースケース] で [CodeDeploy] を選択し、次に [CodeDeploy - ECS] ユースケースを選択します。
-
[Next] を選択します。
-
「[アクセス許可ポリシーをアタッチする]」セクションで、[AWSCodeDeployRoleForECS] ポリシーが選択されていることを確認します。
-
[Next] を選択します。
-
[ロール名] に [ECSodeDeployRole] と入力します。
-
ロールを確認したら、[Create role] (ロールを作成) を選択します。
- AWS CLI
-
すべての [ユーザー入力]
は、お客様の情報で置き換えてください。
-
CodeDeploy IAM ロールに使用する信頼ポリシーを含む、codedeploy-trust-policy.json
という名前のファイルを作成します。
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "",
"Effect": "Allow",
"Principal": {
"Service": ["codedeploy.amazonaws.com"]
},
"Action": "sts:AssumeRole"
}
]
}
-
前のステップで作成した信頼ポリシーを使用した ecsCodedeployRole
という名前の IAM ロールを作成します。
aws iam create-role \
--role-name ecsCodedeployRole
\
--assume-role-policy-document file://codedeploy-trust-policy.json
-
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 Management Console
-
JSON ポリシーエディタでポリシーを作成するには
AWS Management Console にサインインして、IAM コンソール (https://console.aws.amazon.com/iam/) を開きます。
-
左側のナビゲーションペインで、[ポリシー] を選択します。
初めて [ポリシー] を選択する場合には、[管理ポリシーにようこそ] ページが表示されます。[今すぐ始める] を選択します。
-
ページの上部で、[ポリシーを作成] を選択します。
-
[ポリシーエディタ] セクションで、[JSON] オプションを選択します。
-
次の JSON ポリシードキュメントを入力します。
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": "iam:PassRole",
"Resource": ["arn:aws:iam::<aws_account_id>:role/<ecsCodeDeployRole>"]
}
]
}
-
[次へ] をクリックします。
いつでも [Visual] と [JSON] エディタオプションを切り替えることができます。ただし、[Visual] エディタで [次] に変更または選択した場合、IAM はポリシーを再構成して visual エディタに合わせて最適化することがあります。詳細については、「IAM ユーザーガイド」の「ポリシーの再構成」を参照してください。
-
[確認と作成] ページで、作成するポリシーの [ポリシー名] と [説明] (オプション) を入力します。[このポリシーで定義されているアクセス許可] を確認して、ポリシーによって付与されたアクセス許可を確認します。
-
[ポリシーの作成] をクリックして、新しいポリシーを保存します。
ポリシーを作成したら、そのポリシーを CodeDeploy ロールにアタッチします。ポリシーをロールにアタッチする方法については、AWS Identity and Access Management ユーザーガイドの「ロールのアクセス許可ポリシーの変更 (コンソール)」を参照してください。
- AWS CLI
-
すべての [ユーザー入力]
は、お客様の情報で置き換えてください。
-
blue-green-iam-passrole.json
というファイルを次の内容で作成します。
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": "iam:PassRole",
"Resource": ["arn:aws:iam::<aws_account_id>:role/<ecsCodeDeployRole>"]
}
]
}
-
JSON ポリシードキュメントファイルを使用して IAM ポリシーを作成するには、次の コマンドを使用します。
aws iam create-policy \
--policy-name cdTaskExecutionPolicy
\
--policy-document file://blue-green-iam-passrole.json
-
次のコマンドを使用して、作成した IAM ポリシーの ARN を取得します。
aws iam list-policies --scope Local --query 'Policies[?PolicyName==`cdTaskExecutionPolicy
`].Arn'
-
次のコマンドを使用して、ポリシーを CodeDeploy IAM ロールにアタッチします。
aws iam attach-role-policy \
--role-name ecsCodedeployRole
\
--policy-arn arn:aws:iam:111122223333:aws:policy/cdTaskExecutionPolicy