首页 文章

具有资源的AWS Cloudformation IAM策略

提问于
浏览
1

我要做的是创建一个IAM策略,只允许访问某个S3存储桶,我想将该S3存储桶作为参数传递 .

从AWS的文档中,这是IAM策略CloudFormation模板的样子:

"RolePolicies": {
     "Type": "AWS::IAM::Policy",
     "Properties": {
        "PolicyName": "root",
        "PolicyDocument": {
           "Version" : "2012-10-17",
           "Statement": [ {
              "Effect": "Allow",
              "Action": "*",
              "Resource": "*"
           } ]
        },

问题是,你如何使“资源”成为一个参数?参数应该是S3存储桶的arn(例如:arn:aws:s3 ::: s3-bucket-name) . 我会简单地输入一个字符串类型参数并输出整个arn,还是像AWS :: S3 :: Bucket类型?无论哪种方式,我不确定在“资源”之后输入什么 .

谢谢!

1 回答

  • 2

    您可以将RefFn::JoinFn::Sub一起使用

    例如:

    "Parameters" : {
        "BucketName" : {
            "Type" : "String",
            "Description" : "S3 Bucket name."
        }
    }
    

    使用 RefFn::Join

    ...
            "Resource": { "Fn::Join" : [ "", [ "arn:aws:s3:::", { "Ref" : "BucketName"} ] ] }
        ...
    

    使用 Fn::Sub

    ...
            "Resource": { "Fn::Sub": [ "arn:aws:s3:::${BucketName}" ] }
        ...
    

    有关模板参数的更多信息here

相关问题