首页 > 解决方案 > aws_s3_bucket 上的 Terraform 导入询问我 acl=private 和 grants 块

问题描述

我曾经terraform import用最少的参数链接 aws_s3_bucket 资源。由于存储桶处于我的状态,它允许我反映真实的资源参数(第一个terraform apply失败,但它是有意的)。

我有一些带有 acl="private" 的存储桶,这给了我错误并邀请我添加一些赠款块。当我这样做时,当然 terraform 给了我两个 ConflictWith 错误,因为 acl 和 grants 不能一起使用。

但是,例如,如果我使用带有适当授权块的 s3 存储桶,terraform 会邀请我添加 acl="private" 语句。

同时,我对 force_destroy = false 块有一个奇怪的行为。似乎没有检测到。

有人可以帮我吗?也许我做错了什么。

谢谢。

代码示例:

resource "aws_s3_bucket" "s3-bucket-example" {
  bucket = "s3-bucket-example"
  force_destroy = false

  grant {
           permissions = [
               "READ",
               "READ_ACP",
               "WRITE",
            ] 
           type        = "Group" 
           uri         = "http://acs.amazonaws.com/groups/s3/LogDelivery" 
  }
  
  grant {
           id          = "xxxxxxxxxxxxxxx" 
           permissions = [
               "FULL_CONTROL",
            ] 
           type        = "CanonicalUser" 
  }
}

结果

# aws_s3_bucket.s3-bucket-jolivdi-acces will be updated in-place
  ~ resource "aws_s3_bucket" "s3-bucket-example" {
      + acl                         = "private"
      + force_destroy               = false
        id                          = "s3-bucket-example"
        # (7 unchanged attributes hidden)

        # (4 unchanged blocks hidden)
    }

标签: terraformterraform-provider-aws

解决方案


您的代码绝对正确并且工作正常。

在此处输入图像描述

我还检查了 S3 存储桶的 ACL。权限完全按照 terraform 代码中的说明应用。

如果您仍然有任何问题,请在评论中详细说明。


推荐阅读