【问题标题】:Terraform scripts throw " Invalid AWS Region: {var.AWS_REGION}"Terraform 脚本抛出“无效的 AWS 区域:{var.AWS_REGION}”
【发布时间】:2021-01-15 05:24:01
【问题描述】:

当我运行“terraform apply”时,我收到以下错误。我确保我的 AMI 位于 us-west-1 区域。 不知道还有什么问题

PS C:\terraform> terraform 应用

错误:无效的 AWS 区域:{var.AWS_REGION}

terraform.tfvars 文件

AWS_ACCESS_KEY="zzz"
AWS_SECRET_KEY="zzz"

provider.tf 文件

  provider "aws"{
  access_key = "{var.AWS_ACCESS_KEY}"
  secret_key = "{var.AWS_SECRECT_KEY}"
  region = "{var.AWS_REGION}"
 }

vars.tf 文件

   variable "AWS_ACCESS_KEY" {}
   variable "AWS_SECRET_KEY" {}
   variable "AWS_REGION" {
       default = "us-west-1"
    }
   variable "AMIS"{
   type = map(string)
   default ={
        us-west-1 = "ami-0948be9af4ee55d19"
    }
}

instance.tf

    resource "aws_instance" "example"{
    ami = "lookup(var.AMIS,var.AWS_REGION)"
    instance_type = "t2.micro"
    }

【问题讨论】:

    标签: terraform terraform-provider-aws


    【解决方案1】:

    您实际上是在将字符串“{var.AWS_ACCESS_KEY}”“{var.AWS_SECRET_KEY}”和“{var.AWS_REGION}”传递给提供商

    如果你使用的是 terraform 12+,试试这个:

    provider "aws"{
       access_key = var.AWS_ACCESS_KEY
       secret_key = var.AWS_SECRET_KEY
       region = var.AWS_REGION
    }
    

    如果您使用的 terraform 早于 0.12,则应使用 $ 符号进行设置。

    provider "aws"{
       access_key = ${var.AWS_ACCESS_KEY} 
       secret_key = ${var.AWS_SECRET_KEY} 
       region = ${var.AWS_REGION} 
    }
    

    【讨论】:

    • 当我尝试你的建议时,我有版本 0.14.4,说错误:在提供者“aws”中的 provider.tf 第 3 行引用未声明的输入变量:3:secret_key = var.AWS_SECRECT_KEY 输入尚未声明名为“AWS_SECRECT_KEY”的变量。您的意思是“AWS_SECRET_KEY”吗?
    • 我实际上是从您的初始帖子 (provider.tf) 中复制/粘贴了变量名称。错字来自这里(我修正了答案),但显然它是 AWS_SECRET_KEY。如果您使用的是 0.14,那就是要走的路。
    • 不知道发生了什么。错字在哪里?
    • 我上次编辑后您是否重试了我的建议?
    • 是的。我试过了。它没有用。同样的错误
    猜你喜欢
    • 2019-09-25
    • 2019-01-08
    • 2017-04-26
    • 2020-10-16
    • 2019-02-06
    • 2021-04-03
    • 2021-01-20
    • 2017-07-25
    • 2018-07-15
    相关资源
    最近更新 更多