AWS 云形成堆栈中角色的托管策略



使用 AWS,我正在构建一个云形成堆栈,用于定义:

  1. 名为MyPolicy的托管策略
  2. 名为MyRole的角色,应附加该策略

堆栈将由管理员创建;一旦创建,目标是允许(从堆栈外部(一些用户承担MyRole

我的问题:应该如何定义角色才能附加该策略?


角色属性的 AWS 帮助页面建议使用ManagedPolicyArns,但我收到各种错误,具体取决于我如何引用MyPolicy

如果我使用GetAtt函数检索策略的arn,则在模板验证时出现错误:

"ManagedPolicyArns": [ { "Fn::GetAtt" : [ "MyPolicy", "Arn" ] } ]

模板错误:资源 MyPolicy 不支持 Fn::GetAtt 中的属性类型 Arn


如果我使用Join函数构建策略的arn,则在创建角色期间会出现错误。

"ManagedPolicyArns": [ { "Fn::Join" : [ "", [ "arn:aws:iam::", { "Ref": "AWS::AccountId" }, ":policy/", { "Ref": "MyPolicy" } ] ] } ]
ARN arn:aws:iam::aws:

policy/arn:aws:iam::«my-account-id»:p olicy/MyPolicy 无效。(服务:亚马逊身份管理;状态代码:400;错误代码:输入无效;请求 ID: «an-id»(


以下是我使用JSON格式的堆栈定义:

{
"AWSTemplateFormatVersion" : "2010-09-09",
"Resources" : {
"MyPolicy" : {
"Type": "AWS::IAM::ManagedPolicy",
"Properties": {
"ManagedPolicyName" : "MyPolicy",
"PolicyDocument" : {
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": [ "s3:*" ],
"Resource": "arn:aws:s3:::the-bucket"
}
]
}
}
},
"MyRole" : {
"Type": "AWS::IAM::Role",
"RoleName": "MyRole",
"AssumeRolePolicyDocument": {
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Principal": { "AWS": {"Fn::Join" : [ "", [ "arn:aws:iam::", { "Ref": "AWS::AccountId" }, ":root" ] ] } },,
"Action": [ "sts:AssumeRole" ]
}
]
},
"ManagedPolicyArns": [
{ "Fn::GetAtt" : [ "MyPolicy", "Arn" ] }
]
}
}
}

>{"Ref": "MyPolicy"}将返回您的堆栈创建的托管策略的 ARN。您的错误消息表明了这一点。此外,请查看此 AWS 文档。

相关内容

  • 没有找到相关文章

最新更新