在CloudFormation脚本中,我创建一个IAM :: Policy并将其应用于Kinesis Firehose。它具有以下PolicyDocument语句
Statement:
- Effect: Allow
Action:
- 's3:AbortMultipartUpload'
- 's3:GetBucketLocation'
- 's3:GetObject'
- 's3:ListBucket'
- 's3:ListBucketMultipartUploads'
- 's3:PutObject'
Resource: arn:aws:s3:::mybucketname
这来自AWS文档。
当我使用“测试数据”进行测试时,它不允许任何数据通过。如果我编辑策略并添加S3FullAccess
,它将开始允许测试数据通过S3存储桶。我也尝试过
Resource: arn:aws:s3:::mybucketname/*
并获得相同的结果。
如果我将CloudFormation脚本更改为此
Statement:
- Effect: Allow
Action: 's3:*'
Resource: '*'
它允许测试数据通过。
第一句话怎么了?
答案 0 :(得分:1)
这些操作在存储桶级别上运行,并且需要资源arn:aws:s3:::mybucketname
:
s3:GetBucketLocation
s3:ListBucket
s3:ListBucketMultipartUploads
这些操作在对象级别上运行,并且需要资源arn:aws:s3:::mybucketname/*
(或特定前缀,例如arn:aws:s3:::mybucketname/invoices/*
):
s3:AbortMultipartUpload
s3:GetObject
s3:PutObject
您可以通过查看{{3}上的资源类型列来确定操作是在 Bucket 还是 Object 级别上执行的}
您可以单独列出动作,也可以将它们与以下各项组合:
Action:
- 's3:AbortMultipartUpload'
- 's3:GetBucketLocation'
- 's3:GetObject'
- 's3:ListBucket'
- 's3:ListBucketMultipartUploads'
- 's3:PutObject'
Resource:
- arn:aws:s3:::mybucketname
- arn:aws:s3:::mybucketname/*
答案 1 :(得分:0)
查看是否可以尝试cloudkast。这是一个在线cloudformation模板生成器。