Amazon ECS EventBridge IAM ロール
Amazon ECS でスケジュールされたタスクを EventBridge のルールとターゲットで送信するには、ユーザーの代わりに Amazon ECS タスクを実行するためのアクセス許可が EventBridge サービスに必要です。これらのアクセス許可は、EventBridge IAM ロール (ecsEventsRole
) によって付与されます。
AmazonEC2ContainerServiceEventsRole
のポリシーを次に示します。
- JSON
-
-
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": ["ecs:RunTask"],
"Resource": ["*"]
},
{
"Effect": "Allow",
"Action": "iam:PassRole",
"Resource": ["*"],
"Condition": {
"StringLike": {"iam:PassedToService": "ecs-tasks.amazonaws.com"}
}
},
{
"Effect": "Allow",
"Action": "ecs:TagResource",
"Resource": "*",
"Condition": {
"StringEquals": {
"ecs:CreateAction": ["RunTask"]
}
}
}
]
}
スケジュールされたタスクでタスク実行ロールの使用、タスクロール、またはタスクロール上書きが必要な場合、タスク実行ロール、タスクロール、またはタスクロール上書きごとに iam:PassRole
アクセス許可を EventBridge IAM ロールに追加する必要があります。タスクの実行ロールの詳細については、「Amazon ECS タスク実行IAM ロール」を参照してください。
タスク実行ロールまたはタスクロール上書きの完全 ARN を指定します。
- JSON
-
-
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": "iam:PassRole",
"Resource": [
"arn:aws:iam::111122223333
:role/ecsTaskExecutionRole_or_TaskRole_name
"
]
}
]
}
スケジュールされたタスクを設定するときに、AWS Management Console が EventBridge ロールを作成するようにすることができます。詳細については、「Amazon EventBridge スケジューラを使用して Amazon ECS タスクをスケジュールする 」を参照してください。
Amazon ECS EventBridge ロールを作成する
すべての [ユーザー入力]
は、お客様の情報で置き換えてください。
-
IAM ロールに使用する信頼ポリシーが含まれている eventbridge-trust-policy.json
という名前のファイルを作成します。ファイルには次の内容が含まれます。
- JSON
-
-
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "",
"Effect": "Allow",
"Principal": {
"Service": "events.amazonaws.com"
},
"Action": "sts:AssumeRole"
}
]
}
-
前のステップで作成した信頼ポリシーを使用して、ecsEventsRole
という名前の IAM ロールを作成するには、次のコマンドを使用します。
aws iam create-role \
--role-name ecsEventsRole
\
--assume-role-policy-document file://eventbridge-trust-policy.json
-
次のコマンドを使用して、AWS マネージド AmazonEC2ContainerServiceEventsRole
を ecsEventsRole
ロールにアタッチします。
aws iam attach-role-policy \
--role-name ecsEventsRole
\
--policy-arn arn:aws:iam::aws:policy/service-role/AmazonEC2ContainerServiceEventsRole
IAM コンソールの[カスタム信頼ポリシーワークフロー] (https://console.aws.amazon.com/iam/) を使用してロールを作成することもできます。詳細については、IAM ユーザーガイドの「カスタム信頼ポリシーを使用してロールを作成する (コンソール)」を参照してください。
ecsEventsRole
ロールへのポリシーのアタッチ
以下の手順を使用して、タスク実行ロールのアクセス許可を EventBridge IAM ロールに追加できます。
- 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/<ecsTaskExecutionRole_or_TaskRole_name>"]
}
]
}
-
[次へ] をクリックします。
いつでも [Visual] と [JSON] エディタオプションを切り替えることができます。ただし、[Visual] エディタで [次へ] に変更または選択した場合、IAM はポリシーを再構成して visual エディタに合わせて最適化することがあります。詳細については、「IAM ユーザーガイド」の「ポリシーの再構成」を参照してください。
-
[確認と作成] ページで、作成するポリシーの [ポリシー名] と [説明] (オプション) を入力します。[このポリシーで定義されているアクセス許可] を確認して、ポリシーによって付与されたアクセス許可を確認します。
-
[ポリシーの作成] をクリックして、新しいポリシーを保存します。
ポリシーを作成したら、そのポリシーを EventBridge ロールにアタッチします。ポリシーをロールにアタッチする方法については、「AWS Identity and Access Management ユーザーガイド」の「ロールに対するアクセス許可を更新する」を参照してください。
- AWS CLI
すべての [ユーザー入力]
は、お客様の情報で置き換えてください。
-
ev-iam-passrole.json
というファイルを次の内容で作成します。
JSON
- JSON
-
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": "iam:PassRole",
"Resource": [
"arn:aws:iam::111122223333
:role/ecsTaskExecutionRole_or_TaskRole_name
"
]
}
]
}
-
JSON ポリシードキュメントファイルを使用して IAM ポリシーを作成するには、次の AWS CLI コマンドを使用します。
aws iam create-policy \
--policy-name eventsTaskExecutionPolicy
\
--policy-document file://ev-iam-passrole.json
-
次のコマンドを使用して、作成した IAM ポリシーの ARN を取得します。
aws iam list-policies --scope Local --query 'Policies[?PolicyName==`eventsTaskExecutionPolicy
`].Arn'
-
ポリシー ARN を使用して EventBridge の IAM ロールにポリシーをアタッチするには、次のコマンドを使用します。
aws iam attach-role-policy \
--role-name ecsEventsRole
\
--policy-arn arn:aws:iam:111122223333:aws:policy/eventsTaskExecutionPolicy