我在 CloudFormation 上定义了一个
AWS::IAM::RolePolicy
,如下所示:
AllowSchedulerToExecuteCodePolicy:
Type: AWS::IAM::RolePolicy
Properties:
PolicyDocument:
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "ExecuteLambdaFunctions",
"Effect": "Allow",
"Action": [
"lambda:InvokeFunction"
],
"Resource": [
"Fn::GetAtt": "Lambda1.Arn",
"Fn::GetAtt": "Lambda2.Arn"
]
},
{
"Sid": "ExecuteECSTask",
"Effect": "Allow",
"Action": [
"ecs:StartTask",
"ecs:StopTask",
],
"Resource": [
"Fn::GetAtt": "ECSCluster1.Arn"
]
}
]
}
PolicyName: !Sub Invoke-Code-${Environment}
RoleName: !Ref EventBridgeSchedulerExecutionRole
我现在想从 Cloudformation 堆栈中删除 Lambda2.Arn。所以我也在政策中删除了对它的引用。
当我尝试通过 CloudFormation 更新新的 RolePolicy 时,出现以下错误:
Resource handler returned message: "null (Service: Iam, Status Code: 500, Request ID: d2b80ce2-5289-4509-8967-3a65409f8282)" (RequestToken: 06927047-00b6-378d-78c9-65105e880242, HandlerErrorCode: GeneralServiceException)
后续更新回滚显示相同的错误,现在我陷入了损坏的堆栈。
知道导致此问题的原因吗?提前谢谢你:)
过了一段时间问题就自行解决了...看来 IAM 服务出现了问题。
对于有同样问题的人,请等待后尝试部署堆栈。如果这不起作用,也许可以尝试重命名资源,以便触发资源替换而不是资源更新。