如何使用 Terraform 脚本禁用 s3 存储桶 ACL?

问题描述 投票:0回答:2
AWS 的新建议是“默认禁用 ACL”,以便对象所有权默认为存储桶所有者。如何使用 Terraform 通过 aws_s3_bucket 资源实现此目的?

我尝试执行以下操作但没有成功

resource "aws_s3_bucket_acl" "example_bucket_acl" { bucket = aws_s3_bucket.s3-bucket.id acl = "private" expected_bucket_owner = data.aws_caller_identity.current.account_id } data "aws_caller_identity" "current" {}

此代码设置 ACL,使得只有存储桶所有者才能读取和写入存储桶以及存储桶内的对象,但对象所有权配置仍设置为“对象写入者”。此外,ACL 不会因设置而被禁用。
来自 

Terraform 关于 S3 ACL 的文档

,它没有说明任何示例,也没有提供任何支持禁用 ACL 的参数。

在手动更改 AWS 中的设置后,我尝试通过运行 terraform plan 来暴力破解该解决方案,看看我会从该计划中得到什么差异,但它说我的基础设施与配置匹配。

有人知道如何做到这一点吗?我目前正在使用 Terraform CLI v1.3.5 和 AWS 提供商 v4.40.0。

这是使用
amazon-web-services amazon-s3 terraform terraform-provider-aws
2个回答
18
投票
设置的,而不是使用

aws_s3_bucket_acl。您可以将控件设置为BucketOwnerEnforced

可以确认已接受的评论将不起作用。

0
投票
api error InvalidBucketAclWithObjectOwnership: Bucket cannot have ACLs set with ObjectOwnership's BucketOwnerEnforced setting


© www.soinside.com 2019 - 2024. All rights reserved.