Jie*_*eng 5 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: `arn:aws:iam::${account.Id}:role/skynet-cloudwatch-eventbus`,
}).promise()
Run Code Online (Sandbox Code Playgroud)
但是,我得到:
(节点:29939)UnhandledPromiseRejectionWarning:ValidationException:提供的角色“arn:aws:iam :: 00000000000:role/xxx-cloudwatch-eventbus”不能由主体“events.amazonaws.com”承担。
该角色已经具有允许的假设策略文档events.amazonaws.com。为什么还是失败呢?
小智 8
您收到此错误的原因是“events.amazonaws.com”未列为角色 theRole 的受信任实体。(在您的情况下是 skynet-cloudwatch-eventbus)
解决此问题的一种方法是转到https://console.aws.amazon.com/iam/home?region=us-east-1#roles/theRole(将此链接调整为您的区域 + 真实角色名称)> 信任关系选项卡 > 编辑信任关系按钮 > 粘贴到服务下的“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"
}
]
Run Code Online (Sandbox Code Playgroud)
小智 3
您现在可能已经找到了答案,但您也许可以通过在 CloudTrail 中查找有错误的 AssumeRole 事件来找出问题所在。
就我而言,我正确设置了假设角色策略,但收到了您指定的相同消息。CloudTrail AssumeRole 事件提供了更有意义的详细信息:
错误代码:RegionDisabledException 错误消息:帐户:xyz 在此区域中未激活 STS。您的账户管理员可以使用 IAM 控制台在此区域激活 STS。
在该区域启用 STS 解决了这种情况下的问题。
| 归档时间: |
|
| 查看次数: |
7356 次 |
| 最近记录: |