hps*_*smn 3 amazon-s3 amazon-web-services aws-cloudformation
创建一个 S3 存储桶,我的服务将向其中写入图像,并且任何人都可以从中读取图像,因为我将在我的服务的网页上显示该图像。
因此,我有一个非常通用的(我认为)S3 存储桶模板,它应该允许任何人读取其中的对象:
SomeS3Bucket:
Type: "AWS::S3::Bucket"
Properties:
BucketName: "some-bucket-name"
AccessControl: PublicRead
OwnershipControls:
Rules:
- ObjectOwnership: BucketOwnerPreferred # without it it complains about ownership being set to BucketOwnerEnforced
BucketEncryption:
ServerSideEncryptionConfiguration:
- ServerSideEncryptionByDefault:
SSEAlgorithm: "AES256"
BucketKeyEnabled: false
CorsConfiguration:
CorsRules:
- AllowedHeaders:
- "*"
AllowedMethods:
- "PUT"
- "POST"
- "DELETE"
- "GET"
AllowedOrigins:
- "*"
Run Code Online (Sandbox Code Playgroud)
尝试部署此模板总是会导致如下错误:Bucket cannot have public ACLs set with BlockPublicAccess enabled (Service: Amazon S3; Status Code: 400; Error Code: InvalidBucketAclWithBlockPublicAccessError)
尝试从 AWS 控制台并使用aws-cli/2.6.4 Python/3.9.11 Linux/5.10.16.3-microsoft-standard-WSL2 exe/x86_64.ubuntu.20 prompt/off
.
非常感谢对此的任何帮助。
尝试添加:
PublicAccessBlockConfiguration:
BlockPublicAcls: false
BlockPublicPolicy: false
IgnorePublicAcls: false
RestrictPublicBuckets: false
Run Code Online (Sandbox Code Playgroud)
但这也没有帮助。
还尝试设置ObjectOwnership
为ObjectWriter
,检查BlockPublicAccess
我的 AWS 账户级别的配置。没有任何迹象表明问题的根本原因。
Amazon 最近开始对新存储桶的创建方式进行更改,请参阅https://docs.aws.amazon.com/AmazonS3/latest/userguide/about-object-ownership.html
对于此更新后创建的新存储桶,将启用所有 S3 阻止公共访问设置,并禁用 S3 访问控制列表 (ACL)。这些默认值是保护 Amazon S3 中数据的推荐最佳实践。您可以在创建存储桶后调整这些设置。
您需要添加PublicAccessBlockConfiguration
, 以及设置ObjectOwnership
为ObjectWriter
- 您已得到控制 - 并且同时确保您AccessControl
最初没有该设置。仅当存储桶创建后AccessControl
才能修改。
归档时间: |
|
查看次数: |
1981 次 |
最近记录: |