2016-09-25 47 views
1

爲了得到當前的AWS ID我做的:是否可以使用terraform別名變量?

data "aws_caller_identity" "current" { } 

這使得它在data.aws_caller_identity.current.account_id可用。有什麼方法可以使它僅作爲account_id?我試過:

variable "account_id" { 
    default = "${data.aws_caller_identity.current.account_id}" 
} 

但它說我不能在變量中做字符串插值。

回答

4

由於Terraform指出你的錯誤,你不能直接進行可變插值,儘管當你需要某種形式的可變插值時有known hacky workarounds

不幸的是,所有這些都涉及模塊,模板或null_resourcenull_data_source稍微複雜的使用,然後仍然會讓您以一種尷尬的方式訪問變量。這可能是你更可口

一種選擇是換了一堆數據源到這樣的模塊:

data "aws_caller_identity" "current" {} 
output "account_id" { value = "data.aws_caller_identity.current.account_id" } 

data "aws_availability_zones" "zones" {} 
output "zones" { value = "data.aws_availability_zones.zones.names } 

再訪問這些像這樣:

module "data_sources" { 
    source = "path/to/data-sources-module.tf" 
} 

... 
    account_id = "${module.data_sources.account_id}" 
... 
    availability_zone = "${module.data_sources.zones[0]}" 

但是,並不真正使這些值很容易暴露爲中間變量不幸的。

相關問題