【问题标题】:Terraform import on aws_s3_bucket asking me both acl=private and grants blocksaws_s3_bucket 上的 Terraform 导入询问我 acl=private 和 grants 块
【发布时间】:2021-04-29 02:50:43
【问题描述】:

我使用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)
    }

【问题讨论】:

  • 您导入的真实存储桶只有private acl?他们不使用任何赠款?
  • 他们使用了赠款。这就是为什么它很奇怪。似乎他们都在使用:)

标签: terraform terraform-provider-aws


【解决方案1】:

您的代码绝对正确且运行良好。

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

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

【讨论】:

  • 感谢您的回答!我的代码没问题(这是我最后想要的),但在我的情况下,它是链接到现有对象(使用 tf 导入)的状态,它会产生一些奇怪的行为
  • 您可以使用 terraform import 命令导入已经创建的资源。例如。 terraform import aws_s3_bucket.s3-bucket-example BUCKET_NAME 这将导入具有当前状态的 S3 存储桶。
猜你喜欢
  • 2018-10-23
  • 2022-08-10
  • 2019-06-24
  • 1970-01-01
  • 2020-04-20
  • 2019-01-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多