[英]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.