2017-05-29 49 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!

全部排序。