Terraform>资源>名称 - 无效或未知密钥

时间:2017-05-26 16:20:55

标签: amazon-web-services terraform

根据此https://www.terraform.io/docs/configuration/resources.html,您可以拥有resource name。例如。

resource "aws_db_instance" "timeout_example" {
  allocated_storage = 10
  engine            = "mysql"
  engine_version    = "5.6.17"
  instance_class    = "db.t1.micro"
  name              = "mydb"

  # ...

  timeouts {
    create = "60m"
    delete = "2h"
  }
}

但我的样本tf文件:

provider "aws" {
  access_key = "<access key>"
  secret_key = "<secret key>"
  region     = "us-east-1"
}

resource "aws_instance" "web" {
  ami           = "ami-0d729a60"
  instance_type = "t2.micro"
  subnet_id = "<subnet-id>"
  name = "web"
}

给了我* aws_instance.web: : invalid or unknown key: name

知道为什么吗?

2 个答案:

答案 0 :(得分:1)

只是详细说明上述评论。您正在创建aws_db_instance资源的实例。检查该资源类型的文档here,没有提及name属性,因此错误似乎有效,我猜它只是Terraform文档中的一个错误(不知道在哪里你可以报告)。

要为您的数据库提供名称&#34;,您可以在资源定义中使用Name AWS标记:

resource "aws_db_instance" "my-database" {
  ...
  tags {
    "Name" = "My-Database-Name"
  }
}

答案 1 :(得分:0)

这不起作用,因为name不是aws_db_instance资源类型的有效参数。您可以找到此资源here的所有有效参数的列表。

在您关联的documentation中,找到了此段落。

  

<强>描述

     

资源块创建给定TYPE(第一个参数)和NAME(第二个参数)的资源。类型和名称的组合必须是唯一的。

这是引用整个资源的第二个参数;所以当你有:

resource "aws_db_instance" "timeout_example" {
     ...
}

&#34;名称&#34;参数是&#34; timeout_example&#34;。