Terraform 0.9.2,AWS,OS X 10.12.5 main.tf,在S3存储桶中共享.tfstate:
#=================
# Terraform
#=================
terraform {
backend "s3" {
bucket = "com.whd-design.terraform-s3-state-bucket"
key = "tfState/htmt-book"
region = "eu-west-2"
encrypt = true
lock_table = "terraform-state-lock"
}
}
这很好用,状态写入存储桶(我可以看到更改后的连续版本),并创建一个DynamoDB记录。但是,尝试在输出中使用点符号存储桶名称会导致错误:
output "State_S3_Bucket_ARN" {
value = "${aws_s3_bucket.com.whd-design.terraform-s3-state-bucket.arn}"
}
* output 'State_S3_Bucket_ARN': unknown resource 'aws_s3_bucket.com' referenced in variable aws_s3_bucket.com.whd-design.terraform-s3-state-bucket.arn
名称中没有点的其他输出语句工作正常 - 是不是只能使用点格式? (奇怪的是它可以实际创建和使用S3对象)。是否有一些可以在资源名称周围使用的转义?
非常感谢
答案 0 :(得分:0)
好的,我试图引用一个在terraform状态下不存在的对象。它存在于AWS上(由不同的TF计划创建)。解决方案:
terraform import aws_s3_bucket.terraform_s3_state_bucket com.whd-design.terraform-s3-state-bucket
terraform apply
之前执行第2步,它会尝试销毁'孤儿'S3!全部排序。