Terraform Reference为远程后端创建了S3存储桶



我正在尝试为S3设置一个远程Terraform后端。我可以创建bucket,但我使用了bucket_prefix而不是bucket来定义我的bucket名称。我这样做是为了确保代码在我的组织中的可重用性

我的问题是,我在Terraform后端配置中引用新的bucket时遇到了问题。我知道我可以硬编码我创建的bucket的名称,但我想引用类似于Terraform中其他资源的bucket。

这可能吗?

我在下面包含了我的代码:

#configure terraform to use s3 as the backend
terraform {
backend "s3" {
bucket         = "aws_s3_bucket.my-bucket.id"
key            = "terraform/terraform.tfstate"
region         = "ca-central-1"    
}
}

AWS S3资源定义

resource "aws_s3_bucket" "my-bucket" {
bucket_prefix = var.bucket_prefix
acl = var.acl
lifecycle {
prevent_destroy = true
}
versioning {
enabled = var.versioning
}
server_side_encryption_configuration {
rule {
apply_server_side_encryption_by_default {
sse_algorithm = var.sse_algorithm
}
}
}
}

Terraform在初始化步骤(terraform init(发生时需要一个有效的后端配置,这意味着在能够提供任何资源之前(在第一个terraform apply之前(,您必须有一个现有的bucket。

如果您使用不存在的bucket名称执行terraform init,则会出现以下错误:

The referenced S3 bucket must have been previously created. If the S3 bucket
│ was created within the last minute, please wait for a minute or two and try
│ again.

这是不言自明的。将S3存储桶用于后端并定义为Terraform资源是不可能的。当然,您可以使用terraform import将现有bucket导入state,但我不建议导入后端bucket。

最新更新