使用Terraform创建AWS-OPSWORK-STACK时出错

使用Terraform创建AWS-OPSWORK-STACK时出错,terraform,terraform-provider-aws,Terraform,Terraform Provider Aws,我在使用terraform和下面的代码创建堆栈时遇到此错误 错误:加载/root/terraform堆栈创建/main.tf:position 2:10时出错:资源后面必须紧跟两个字符串,一个类型和一个名称 resource "aws_opsworks_stack" "stack" { name = "${var.name}" region = "${var.region}" service_role_arn = "${var.service_role_arn}" default

我在使用terraform和下面的代码创建堆栈时遇到此错误

错误:加载/root/terraform堆栈创建/main.tf:position 2:10时出错:资源后面必须紧跟两个字符串,一个类型和一个名称

resource "aws_opsworks_stack" "stack" {
  name = "${var.name}"
  region = "${var.region}"
  service_role_arn = "${var.service_role_arn}"
  default_instance_profile_arn = "${var.instance_profile_arn}"
  default_os = "Amazon Linux 2018.03"
  configuration_manager_version = "11.10"
  manage_berkshelf = false
  default_root_device_type = "ebs"
  use_opsworks_security_groups = false
  vpc_id = "vpc-******************"
  default_subnet_id = "subnet-*****************"
  custom_json = "{}"
}


变量
name
未设置为任何值

您需要:

a) 为
name


b) 通过、、或其他方法设置
name
变量

当您定义一个资源时,如果该资源后面没有类型和名称(如错误所示),则会发生该错误,例如
resource“type”“name”
。但是,您提供的代码没有这个问题。你确定那个代码有那个错误吗?
aws\u opsworks\u stack
资源是否位于main.tf文件的第2行?事实并非如此,因为如果未设置变量且使用的是
-input=false
,则会出现完全不同的错误。如果您没有使用
-input=false
,则只会提示您输入变量值。@ydaetskcoR我认为“其他方法”中已经介绍了这一点,但我将在下面包含一个指向该变量的链接well@StephenG已通过在主文件中添加服务角色arn和实例配置文件arn来修复此错误。@Vaithiyanathan这是另一个修复此错误的好方法!
variable "name" {
    type = "string"
    description = "Name (Your required stack name)"
    }
variable "region" {
    type = list(string)
    default = ["us-west-1a"]
    description = "us-east-1,ap-south-1,ap-southeast-2,eu-central-1 (Give your region)"
    }
variable "service_role_arn" {
    type = list(string)
    default = ["*********************"]
    description = "Default IAM role"
    }
variable "default_instance_profile_arn"{
    type = list(string)
    default = ["*************************"]
    description = "Default IAM instance profile"
    }
variable "default_availability_zone" {
    type = "string"
    description = "Give your availabity zone"
    }