Amazon web services events.amazonaws.com无法担任此角色
我正在尝试使用以下代码放置cloudwatch事件规则:Amazon web services events.amazonaws.com无法担任此角色,amazon-web-services,amazon-iam,amazon-cloudwatch,Amazon Web Services,Amazon Iam,Amazon Cloudwatch,我正在尝试使用以下代码放置cloudwatch事件规则: await cloudwatchevents.putRule({ Name: 'xxx-ec2-start', EventPattern: '{"source":["aws.ec2"],"detail-type":["EC2 Instance State-change Notification"],"detail":{"state":["running"]}}', State: 'ENABLED', RoleArn: `a
await cloudwatchevents.putRule({
Name: 'xxx-ec2-start',
EventPattern: '{"source":["aws.ec2"],"detail-type":["EC2 Instance State-change Notification"],"detail":{"state":["running"]}}',
State: 'ENABLED',
RoleArn: `arn:aws:iam::${account.Id}:role/skynet-cloudwatch-eventbus`,
}).promise()
然而,我得到:
(节点:29939)未经处理的PromisejectionWarning:ValidationException:提供的角色“arn:aws:iam::00000000000:role/xxx cloudwatch eventbus”不能由主体“events.amazonaws.com”承担
该角色已具有允许事件的假定策略文档。amazonaws.com
。为什么它仍然失败
您现在可能已经找到了答案,但您可以通过在CloudTrail中查找有错误的假定角色事件来找出问题所在 在本例中,我正确设置了“假定角色”策略,但收到的消息与您指定的消息相同。CloudTrail AssumeRole事件提供了更有意义的详细信息: 错误代码:RegionDisabledException errorMessage:帐户xyz在此区域中未激活STS。您的帐户管理员可以使用IAM控制台激活此区域中的STS
在此区域中启用STS解决了本例中的问题。出现此错误的原因是“events.amazonaws.com”未列为角色theRole的受信任实体。(在您的情况下,skynet cloudwatch eventbus) 解决此问题的一种方法是转到服务下的“events.amazonaws.com”中(将此链接调整为您所在的地区+真实角色名)>信任关系选项卡>编辑信任关系按钮>粘贴,如下例所示
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "",
"Effect": "Allow",
"Principal": {
"Service": [
"lambda.amazonaws.com",
"apigateway.amazonaws.com",
"events.amazonaws.com"
]
},
"Action": "sts:AssumeRole"
}
]