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

Ale*_*lex 7 amazon-s3 amazon-web-services terraform terraform-provider-aws

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" {}
Run Code Online (Sandbox Code Playgroud)

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

Terraform 关于 S3 ACL 的文档来看,它没有说明任何示例,也没有提供任何支持禁用 ACL 的参数。

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

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

Mar*_*cin 15

这是使用aws_s3_bucket_ownership_controls设置的,而不是使用aws_s3_bucket_acl. 您可以将控件设置为BucketOwnerEnforced