我要做的是创建一个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类型?无论哪种方式,我都不确定在"资源"之后输入什么。
谢谢!
答案 0 :(得分:2)
例如:
"Parameters" : {
"BucketName" : {
"Type" : "String",
"Description" : "S3 Bucket name."
}
}
使用参考和 Fn ::加入
...
"Resource": { "Fn::Join" : [ "", [ "arn:aws:s3:::", { "Ref" : "BucketName"} ] ] }
...
使用 Fn :: Sub :
...
"Resource": { "Fn::Sub": [ "arn:aws:s3:::${BucketName}" ] }
...
有关模板参数here
的详细信息答案 1 :(得分:0)
聚会晚一点。
如果您的存储桶在参考资料中被声明,则如下所示:
class Person {
var id: String? = null
var name: String? = null
}
fun Person.clone(): Person {
val person = Person()
person.id = id
person.name = name
return person
}
...然后您可以使用Fn :: GetAtt:
轻松引用它的ARN...
Resources:
MyBucket:
Type: AWS::S3::Bucket
Properties:
BucketName: my-bucket-name
...