如何命名使用 cloudformation 模板创建的自定义托管策略

How to name a custom managed policy created using cloudformation template

我可以使用以下模板成功创建自定义 IAM 策略(托管):

"IAMPolicy2": {
      "Type": "AWS::IAM::ManagedPolicy",
      "Properties": { 
        "PolicyDocument": {
    "Version": "2012-10-17",
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "s3:Get*",
                "s3:List*"
            ],
            "Resource": [
                {
                  "Fn::Join": [
                    "",
                    [
                      "arn:aws:s3:::",
                      {
                        "Ref": "S3Bucket"
                      }
                    ]
                  ]
                },
                {
                  "Fn::Join": [
                    "",
                    [
                      "arn:aws:s3:::",
                      {
                        "Ref": "S3Bucket"
                      },
                      "/*"
                    ]
                  ]
                }
              ]
            }
          ]
        },
        "Users": [
          {
            "Ref": "IAMUser2"
          }
        ]
      }
    }

但是当我尝试在模板中添加“"PolicyName":"test2"”标签时,出现了这个错误:

Encountered unsupported property PolicyName

有没有办法为我的自定义托管策略设置任何名称?

目前无法在通过 CloudFormation 创建 IAM 托管策略时为其设置自定义名称。这同样适用于 IAM 角色。

名称模式将像这样生成:

StackName-ResourceName-RandomString

此外,您可以检查 IAM Managed Policy Guide 以了解可用属性。

要创建不附加堆栈名称和堆栈随机字符串的静态名称,请将其添加到您的属性中:

"ManagedPolicyName": "myManagedPolicyRocks"

您可以参考下面的 AWS 文档 - https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-iam-managedpolicy.html

{
  "Type" : "AWS::IAM::ManagedPolicy",
  "Properties" : {
      "Description" : String,
      "Groups" : [ String, ... ],
      "ManagedPolicyName" : String,
      "Path" : String,
      "PolicyDocument" : Json,
      "Roles" : [ String, ... ],
      "Users" : [ String, ... ]
    }
}

根据配置框架,它不是“PolicyName”。对于托管策略,我们必须使用“ManagedPolicyName”insted。

AWS CloudFormation 有详细的文档记录,因此任何与语法相关的问题只能从官方文档中找出。