Sam*_*Sam 5 acl amazon-s3 amazon-web-services aws-cloudformation
我最近遇到了一个“错误”,即使有S3FullAccess,我仍然会得到
An error occurred (403) when calling the HeadObject operation: Forbidden
Run Code Online (Sandbox Code Playgroud)
跑步时aws s3api head-object --bucket cool-bucket --key my/key/to/file.png。
经过一番研究,结果发现该文件my/key/to/file.png是匿名上传的,因此我(经过身份验证的用户)不是该对象的合法所有者,因此拒绝了我的 HEAD 请求。
解决方案似乎是使用 ACL 或将“对象所有权”更改为“禁用 ACL(强制执行存储桶所有者)”。
这确实是解决方案,因此我尝试更改我的 CloudFormation 模板以将对象所有权设置为“强制执行存储桶所有者”,但文档是谎言。
事实上,文档只指定了这一点Allowed values: ObjectWriter | BucketOwnerPreferred,但是当运行aws s3api get-bucket-ownership-controls --bucket bucketname到我手动调整的存储桶上时,我得到了以下 JSON:
An error occurred (403) when calling the HeadObject operation: Forbidden
Run Code Online (Sandbox Code Playgroud)
清楚地表明这BucketOwnerEnforced是 CloudFormation 属性的有效且允许的值OwnershipControls.Rules.[].ObjectOwnership。在文档的其他地方,我没有看到允许我将对象所有权设置为“强制执行存储桶所有者”的属性,从而禁用 ACL。
为什么没有记录下来?我认为 CloudFormation 文档是自动生成的,并且可能不完整/过时。
Sam*_*Sam 10
该属性有一个秘密允许的值,OwnershipControls.Rules.[].ObjectOwnership称为BucketOwnerEnforced。
它可以这样使用:
MyCoolBucket:
Type: AWS::S3::Bucket
Properties:
BucketName: MyCoolBucket
OwnershipControls:
Rules:
- ObjectOwnership: BucketOwnerEnforced
Run Code Online (Sandbox Code Playgroud)
我于 2021 年 12 月 2 日测试并部署了此模板,CloudFormation 没有抱怨它不是“允许的值”。
| 归档时间: |
|
| 查看次数: |
11431 次 |
| 最近记录: |