以下是我已经用策略声明的角色:
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": [
"sqs:ReceiveMessage",
"sqs:DeleteMessage",
"sqs:GetQueueAttributes",
"sqs:ChangeMessageVisibility",
"sqs:GetQueueUrl"
],
"Resource": "arn:aws:sqs:*:<my-account>:my-prefix-*"
}
]
}
当我手动部署我的队列和Lambda(带触发器(时,一切都很好(而且它按预期工作(。然而,当我使用CDK进行部署时,它试图添加一个看起来完全相同(没有通配符(的新内联策略:
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": [
"sqs:ReceiveMessage",
"sqs:DeleteMessage",
"sqs:GetQueueAttributes",
"sqs:ChangeMessageVisibility",
"sqs:GetQueueUrl"
],
"Resource": "arn:aws:sqs:eu-west-3:<my-account>:my-prefix-MYRESOURCE-CREATED"
}
]
}
我的问题:
- 为什么CDK没有检测到策略是相同的
- 如果它是按设计工作的,有没有办法不包括IAM更改
我不是指如何在cdk部署期间跳过IAM更改确认?用户想要自动审批的位置。
感谢并问候
我假设您正在将role
参数传递到LambdaFunction
中。
如果您不希望CDK自动将内联策略添加到此角色,您可能需要使用.without_policy_updates()
:
如果您希望构造在不自动更新角色策略的情况下使用此角色,请使用此方法返回的对象。
如果您这样做了,您有责任自己将正确的声明添加到角色的策略中。