Amazon ECS CloudWatch Events IAM 角色
CloudWatch Events 服务需要先获得代表您运行 Amazon ECS 任务的权限,然后您才能将 Amazon ECS 任务用于 CloudWatch Events 规则和目标。这些权限是由 CloudWatch Events IAM 角色 (ecsEventsRole
)提供的。
当您配置计划任务时,系统会在 AWS Management Console 中自动为您创建 CloudWatch Events 角色。有关更多信息,请参阅计划任务。
AmazonEC2ContainerServiceEventsRole
策略如下所示。
{ "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" } } } ] }
如果计划任务需要使用任务执行角色、任务角色或任务角色覆盖,则必须将每个任务执行角色、任务角色或任务角色覆盖的 iam:PassRole
权限添加到 CloudWatch Events IAM 角色。有关任务执行角色的更多信息,请参阅Amazon ECS 任务执行 IAM 角色。
指定您的任务执行角色或任务角色覆盖的完整 ARN。
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": "iam:PassRole", "Resource": [ "arn:aws:iam::<aws_account_id>:role/<ecsTaskExecutionRole_or_TaskRole_name>" ] } ] }
在 IAM 控制台中检查 Amazon ECS CloudWatch 事件(ecsEventsRole
)
完成 Amazon ECS 控制台首次运行体验时将自动为您创建 Amazon ECS 实例角色。但是,您应手动为容器实例创建角色附加托管 IAM policy,以便 Amazon ECS 能够在引入未来功能和增强功能时添加这些功能的权限。使用以下过程检查并确定您的账户是否已拥有 Amazon ECS 容器实例 IAM 角色并且附加托管 IAM policy (如果需要)。
通过以下网址打开 IAM 控制台:https://console.aws.amazon.com/iam/
。 -
在导航窗格中,选择 Roles(角色)。
-
在搜索框中,输入
ecsEventsRole
。如果角色存在,请选择角色以查看附加的策略。 -
在权限选项卡上,验证 AmazonEC2ContainerServiceEventsRole 是否已附加到该角色。
-
依次选择 Add Permissions(添加权限)和 Attach policies(附加策略)。
-
要缩小要附加的可用策略的范围,请在筛选条件中输入 AmazonEC2ContainerServiceEventsRole。
-
选中 AmazonEC2ContainerServiceEventsRole 策略左侧的框,然后选择附加策略。
-
-
选择 Trust Relationships(信任关系)。
-
验证信任关系是否包含以下策略。如果信任关系符合以下策略,请选择 Cancel。如果信任关系不符合,请选择 Edit trust policy(编辑信任策略),将策略复制到 Policy Document(策略文档)窗口中并选择 Update policy(更新策略)。
{ "Version": "2012-10-17", "Statement": [ { "Sid": "", "Effect": "Allow", "Principal": { "Service": "ecs-tasks.amazonaws.com" }, "Action": "sts:AssumeRole" } ] }
创建 Amazon ECS CloudWatch 事件(ecsEventsRole
)角色
为 CloudWatch Events 创建 IAM 角色
通过以下网址打开 IAM 控制台:https://console.aws.amazon.com/iam/
。 -
在导航窗格中,选择 Roles(角色)和 Create role(创建角色)。
-
在 Trusted entity type(可信实体类型)部分,选择 AWS service( 服务)、Elastic Container Service。
-
对于使用案例,选择 Elastic Container Service 任务,然后选择下一步。
-
在 Attach permissions policy(附加权限策略)页面上,执行以下操作:
-
在搜索框中输入
AmazonEC2ContainerServiceEventsRole
,然后选择策略。 -
在 Set permissions boundary - optional(设置权限边界 - 可选)下,选择 Create role without a permissions boundary(创建没有权限边界的角色)。
-
选择 Next(下一步)。
-
-
在 Role details(角色详细信息)下,执行以下操作:
-
对于角色名称,输入
ecsEventsRole
。 -
对于添加标签(可选),输入要与策略关联的任何自定义标签。
-
-
选择 Create role(创建角色)。
-
在角色列表中搜索
ecsEventsRole
并选择角色。 -
在 Permissions(权限)选项卡上,选择 Add Permissions(添加权限)、Attach policies(附加策略)。
-
将现有信任关系替换为以下文本。选择 Edit trust policy(编辑信任策略),将策略复制到 Policy Document(策略文档)窗口中并选择 Update policy(更新策略)。
{ "Version": "2012-10-17", "Statement": [ { "Sid": "", "Effect": "Allow", "Principal": { "Service": "ecs-tasks.amazonaws.com" }, "Action": "sts:AssumeRole" } ] }
将策略附加到 ecsEventsRole
角色
添加任务执行角色的权限到 CloudWatch Events IAM 角色
通过以下网址打开 IAM 控制台:https://console.aws.amazon.com/iam/
。 -
在导航窗格中,选择 Policies、Create policy。
-
选择 JSON,粘贴以下策略,然后选择 查看策略:
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": "iam:PassRole", "Resource": [ "arn:aws:iam::<aws_account_id>:role/<ecsTaskExecutionRole_or_TaskRole_name>" ] } ] }
-
对于名称,输入
AmazonECSEventsTaskExecutionRole
,也可以输入描述,然后选择创建策略。 -
在导航窗格中,选择 Roles(角色)。
-
在角色列表中搜索
ecsEventsRole
,然后选择该角色来查看附加的策略。 -
选择 Attach policy(附上策略)。
-
在附加策略部分,选择 AmazonECSEventsTaskExecutionRole 策略,然后选择附加策略。