在S3桶中使用terraform中的点表示法 - 导致输出错误

时间:2017-05-29 22:00:24

标签: amazon-s3 terraform

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对象)。是否有一些可以在资源名称周围使用的转义?

非常感谢

1 个答案:

答案 0 :(得分:0)

好的,我试图引用一个在terraform状态下不存在的对象。它存在于AWS上(由不同的TF计划创建)。解决方案:

  1. 使用有效的TF资源名称
  2. 导入terraform import aws_s3_bucket.terraform_s3_state_bucket com.whd-design.terraform-s3-state-bucket
  3. 添加从另一个.TF文件复制的定义
  4. 更正输出以使用TF资源名称而非AWS资源名称。
  5. 确保在terraform apply之前执行第2步,它会尝试销毁'孤儿'S3!
  6. 全部排序。