我正在尝试编写一个桶策略,它使用内部函数!GetAtt从桶中获取属性,但我不知道如何为多个桶编写它。
对于不使用本征函数的单个桶,它类似于;
Effect: "Allow"
Action: "s3:*"
Resource: [
"arn:aws:s3:::ExampleBucketName",
"arn:aws:s3:::ExampleBucketName/*"
]我试图用多个桶的内在函数来完成这个任务,但是对于子目录部分,我没有得到正确的结果。如何使用!/*进入目录GetAtt?
我的代码是这样的;
Effect: "Allow"
Action: "s3:*"
Resource: [
!GetAtt "ExampleBucketOne.Arn",
!GetAtt "ExampleBucketOne.Arn"/"*",
!GetAtt "ExampleBucketTwo.Arn",
!GetAtt "ExampleBucketTwo.Arn"/"*"
]我知道资源部分的第二行(以/*结尾)是错误的,这就是我请求帮助的原因。正确的方法是什么?
发布于 2019-04-21 10:25:28
您需要使用一个连接将/*添加到末尾。
!Join [ "", [ !GetAtt "ExampleBucketOne.Arn","/*" ] ]上面的语法刚刚结束,所以您可能需要再次检查它,但基本语法是:
!Join [ ":", [ a, b, c ] ]这将导致:
a:b:c发布于 2019-04-22 19:54:46
另一个选择是!Sub,它更容易使用。
Effect: "Allow"
Action: "s3:*"
Resource:
- !Sub ${ExampleBucketOne.Arn}
- !Sub ${ExampleBucketOne.Arn}/*
- !Sub ${ExampleBucketTwo.Arn}
- !Sub ${ExampleBucketTwo.Arn}/*https://stackoverflow.com/questions/55780343
复制相似问题