Variables 在terraform.tfvars中声明列表和映射变量值
我最近将terraform代码中变量的值转移到terraform.tfvars。我现在得到一个错误,这是由于我如何声明我的列表和映射变量。我得到的错误代码复制如下:Variables 在terraform.tfvars中声明列表和映射变量值,variables,terraform,Variables,Terraform,我最近将terraform代码中变量的值转移到terraform.tfvars。我现在得到一个错误,这是由于我如何声明我的列表和映射变量。我得到的错误代码复制如下: image_id = var.web_amis[var.region] 这就是我在terraform.tfvars中指定这些变量的方式: web_amis = ["ami-0dacb0c129b49f529", "ami-00068cd7555f543d5", ]
image_id = var.web_amis[var.region]
这就是我在terraform.tfvars中指定这些变量的方式:
web_amis = ["ami-0dacb0c129b49f529", "ami-00068cd7555f543d5", ]
这是我得到的错误代码:
Error: Invalid index
on autoscaling.tf line 3, in resource "aws_launch_configuration" "web_lc":
3: image_id = var.web_amis[var.region]
|----------------
| var.region is "us-east-2"
| var.web_amis is tuple with 2 elements
The given key does not identify an element in this collection value: a number
is required.
您试图使用非索引键而不是按位置访问列表元素 您可能希望将
web\u amis
变量设置为由区域名称键入的地图:
main.tf
terraform.tfvars
但是,这是一个非常古老的学校和不雅的方式做事情的地形现在。相反,您可以使用根据标记或AMI名称等过滤器查找AMI区域 下面给出了一个基本示例:
variable "region" {}
variable "web_amis" {}
resource "foo_bar" "baz" {
# ...
image_id = var.web_amis[var.region]
}
web_amis = {
us-east-2 = "ami-0dacb0c129b49f529"
us-west-2 = "ami-00068cd7555f543d5"
}
provider "aws" {
region = "us-west-2"
}
data "aws_ami" "ubuntu" {
most_recent = true
filter {
name = "name"
values = ["ubuntu/images/hvm-ssd/ubuntu-trusty-14.04-amd64-server-*"]
}
filter {
name = "virtualization-type"
values = ["hvm"]
}
owners = ["099720109477"] # Canonical
}
resource "aws_instance" "web" {
ami = data.aws_ami.ubuntu.id
instance_type = "t2.micro"
tags = {
Name = "HelloWorld"
}
}