簡體   English   中英

無法對齊導入的 S3 存儲桶地形配置

[英]Unable to align imported S3 bucket terraform configuration

我已將現有的 S3 存儲桶導入到我的terraform狀態。

我現在正在嘗試對其配置進行逆向工程並將其傳遞給.tf文件。

這是我的文件

resource "aws_s3_bucket" "my-bucket" {
  provider = "aws.eu_west_1"
  bucket   = "my-bucket"

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

  grant {
      id          = "my-account-id"
      type        = "CanonicalUser"
      permissions = ["FULL_CONTROL"]
  }

這是我的terraform plan輸出

  ~ aws_s3_bucket.my-bucket
      acl:                                                     "" => "private"

無論我為acl使用什么值,我總是無法將我的tf與 S3 存儲桶上的現有acl配置對齊,例如

resource "aws_s3_bucket" "my-bucket" {
  provider = "aws.eu_west_1"
  bucket   = "my-bucket"
  acl.     = "private"

對應的plan輸出:

Error: aws_s3_bucket.my-bucket: "acl": conflicts with grant
Error: aws_s3_bucket.my-bucket: "grant": conflicts with acl

另一個:

resource "aws_s3_bucket" "my-bucket" {
  provider = "aws.eu_west_1"
  bucket   = "my-bucket"
  acl.     = ""
resource "aws_s3_bucket" "my-bucket" {
  provider = "aws.eu_west_1"
  bucket   = "my-bucket"
  acl.     = ""

所以如果我不使用 acl 的值, terraform顯示acl將從非設置變為private

如果我使用任何值,我會收到一個錯誤。

這是為什么?

這是對 0.13 的觀察,但仍可能有所幫助:

如果我使用您的原始代碼(即沒有 acl 行)創建存儲桶,則生成的 TF 狀態文件仍包含存儲桶的"acl": "private",屬性。 如果我然后在 TF 代碼中添加 acl="private" 定義,我也會得到"acl": conflicts with grant在嘗試申請時"acl": conflicts with grant

但真正奇怪的是,如果我刪除acl="private"定義(即恢復到您的原始代碼),並且還刪除狀態文件中的"acl": "private",屬性行,那么計划(包括refresh) 顯示存儲桶將使用以下內容進行更新: + acl = "private" 申請這似乎工作正常,但第二次申請表明贈款已丟失,需要重新申請。

因此,在我看來,S3 狀態刷新中存在一個錯誤,該錯誤也可能會影響導入,此外,從狀態中明確刪除 acl 屬性會使其錯誤地應用為覆蓋任何授權的默認值。 我認為可能值得使用您的代碼創建一個新存儲桶,然后比較狀態定義以獲取原始導入丟失的任何位。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM