TerraformをさまざまなAWSリージョンにデプロイするように設定しようとしていますが、スクリプト内のいくつかの値が変化しているので、コマンドラインにリージョンを送信しています。私は-var "region = east"を使用しています。たとえば、この領域を正しく割り当てることによって他のモジュールで動作します。この値を使用しているmain.tfは正しく設定されています。Terraformルックアップに補間値を取得する最も良い方法
リソースの作成には、regionをマップされた値として使用するルックアップがあり、amisはリージョンのマップであり、このリソースに対して一致するamiのみが必要です。検索とドキュメントのいくつかを見ている中で、私がいないのに
ami = "${lookup(var.amis, $${var.region})}"
または中間値として
variables "map_region" {
default = "${var.region}"
}
ami = "${lookup(var.amis, var.map_region)}"
はどちらも、私の構文エラーを与える:私は、コマンドライン補間を使用して、二つの方法を試してみましたterraformがこれをサポートする場所を参照してください。誰かが何らかの方法でこれをうまくやったか、コマンドライン変数を使ってマップから値を引き出す良い方法を知っていますか?
EDIT: Terraformモジュールを実行するためにBashスクリプトを使用していたため、問題の一部が表示されませんでした。これは破壊を実行していた - フォース、その後適用されます。ビルドの一環としてコマンドライン変数を検討していたので、destroyコマンドにそれらを追加しませんでした。これは要求された場所であり、入力を促すプロンプトです。一旦、-varコマンドをdestroyコマンドに追加しただけでなく、これをすべて適用しました。
補間を使うときは、 '$ {}'を一組だけ必要とします。内部で何かがレンダリングされます。私はあなたがあなたの変数の内部に補間を持つことができるとは思わない。 '$ {lookup(var.amis、 'us-east-1')}'はあなたが望むものを返しますか? –
はい、それは私が望むものを返しますが、私はどこかで補間された値を使う必要があるので、異なる地域に展開するためにスクリプトを再利用することができます。 – MichaelF