Amazon web services 无法对齐导入的S3 bucket地形配置
我已经将一个现有的S3存储桶导入到我的Amazon web services 无法对齐导入的S3 bucket地形配置,amazon-web-services,amazon-s3,terraform,Amazon Web Services,Amazon S3,Terraform,我已经将一个现有的S3存储桶导入到我的terraform状态 我现在正在尝试对其配置进行反向工程,并将其传递到.tf文件 这是我的档案 resource "aws_s3_bucket" "my-bucket" { provider = "aws.eu_west_1" bucket = "my-bucket" grant { type = "Group"
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"]
}
这是我的地形图
输出
~ aws_s3_bucket.my-bucket
acl: "" => "private"
无论我对acl使用什么值,我I总是无法将我的tf
与S3存储桶上的现有acl
配置对齐,例如
resource "aws_s3_bucket" "my-bucket" {
provider = "aws.eu_west_1"
bucket = "my-bucket"
acl. = "private"
对应的计划
输出:
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. = ""
因此,如果我对acl不使用任何值,terraform
显示acl
将从未设置更改为private
如果我使用任何值,我会得到一个错误
为什么会这样?这是对0.13的观察,但仍然可能有帮助:
如果我使用您的原始代码(即没有acl行)创建一个bucket,则生成的TF状态文件仍然包含bucket的“acl”:“private”
属性。如果我随后在TF代码中添加acl=“private”定义,则在尝试应用时也会得到“acl”:与grant冲突
但真正奇怪的是,如果我删除acl=“private”
定义(即还原为原始代码),并从状态文件中删除“acl”:“private”
属性行,那么计划(包括刷新)显示将使用以下内容更新存储桶:+acl=“private”
。申请这个似乎效果不错,但第二次申请表明补助金已经丢失,需要重新申请
因此,在我看来,S3状态刷新中有一个bug可能也会影响导入,此外,从状态中删除acl属性会使其错误地应用为覆盖任何授权的默认设置。我认为使用您的代码创建一个新的bucket,然后比较状态定义,以获得原始导入丢失的任何位可能是值得的。您使用的是哪个TF版本?版本0.11.4
resource "aws_s3_bucket" "my-bucket" {
provider = "aws.eu_west_1"
bucket = "my-bucket"
acl. = ""