首页 > 解决方案 > terraform :尚未声明名为“AMI”的输入变量。这个变量可以用变量“AMI”{}块声明

问题描述

我是 terraform 的新手。我正在尝试 terrafrom

我在 var.tfvars 中有这个位

variable "AWS_REGION" {    
default = "me-south-1"
}
variable "AMI" {
    type = "map"
    
    default ={
        me-south-1 = "ami-01b735b798*******"
        us-east-1 = "ami-0c2a1acae666******"
    }
}

我正在尝试在 VPC 中创建一个 ec2

resource "aws_instance" "terraform-web" {
ami = "${lookup(var.AMI, var.AWS_REGION)}"
instance_type = "t3.micro"

这给了我上述错误。

谁能帮我解决这个问题?

标签: amazon-web-servicesterraform

解决方案


terraform 的工作方式是:

variables.tf -- 所有变量都在这个文件中声明

vars.tfvars——所有值都通过这个文件传递。名字可以是任何东西。应该以 tfvars 结尾。

您不需要使用查找 var.<variable_name> 就足够了!

ec2.tf:

    resource "aws_instance" "terraform-web" {
    ami = var.ami_id
    instance_type = "t3.micro"
}

变量.tf

variable "ami_id" {
    type = "string"
    default = "xxxx"

}

变量.tfvars

ami_id = "yyyyy"

推荐阅读