2017-05-29 50 views
0

Terraform 0.9.2,AWS,OS X 10.12.5 main.tf,共享.tfstate在S3桶错误:使用terraform为S3桶点符号 - 引起与输出

#================= 
# 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

OK,我想引用一个对象,它并没有在terraform状态存在。它存在于AWS(由不同的TF计划创建)。解决方案:

  1. 导入它terraform import aws_s3_bucket.terraform_s3_state_bucket com.whd-design.terraform-s3-state-bucket使用有效的TF资源名称
  2. 添加的定义,从另一个.TF文件
  3. 复制修正输出使用TF资源名称不是AWS资源名称。
  4. 确保你在terraform apply之前做了第2步,它试图摧毁'孤儿'S3!

全部排序。