Amazon ECS EventBridge IAM 角色
在您能够将 Amazon ECS 计划任务与 EventBridge 规则和目标配合使用之前,EventBridge 服务需要代表您运行 Amazon ECS 任务的权限。这些权限由 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 任务 。
创建 EventBridge 角色
将所有用户输入
替换为您自己的信息。
-
创建一个名为 eventbridge-trust-policy.json
的文件,其中包含要用于 IAM 角色的信任策略。该文件应包含以下内容:
- JSON
-
-
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "",
"Effect": "Allow",
"Principal": {
"Service": "events.amazonaws.com"
},
"Action": "sts:AssumeRole"
}
]
}
-
使用以下命令创建一个 IAM 角色,该角色使用您在上一步中创建的信任策略命名为 ecsEventsRole
。
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>"]
}
]
}
-
选择下一步。
您可以随时在可视化和 JSON 编辑器选项卡之间切换。不过,如果您进行更改或在可视化编辑器中选择下一步,IAM 可能会调整策略结构以针对可视化编辑器进行优化。有关更多信息,请参阅《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
"
]
}
]
}
-
使用以下 AWS CLI 命令通过 JSON 策略文档文件创建 IAM 策略。
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