Terraform 地形0.11的环通列表

Terraform 地形0.11的环通列表,terraform,terraform-provider-aws,Terraform,Terraform Provider Aws,我有一个terraform文件,它将资源和方法部署到AWS中现有的APIGW。目前我的逻辑只创建一个方法(POST)。我想在TF中更新我的逻辑,这样如果用户想要为他们的资源创建多个方法,他们就可以 我环顾了一下网络,不确定我的逻辑是否正确,因为当我运行terraform作业时,我得到了以下错误 aws_api_gateway_integration.integration:未为变量“aws_api_gateway_method.newexecution”找到资源“aws_api_gateway_

我有一个terraform文件,它将资源和方法部署到AWS中现有的APIGW。目前我的逻辑只创建一个方法(POST)。我想在TF中更新我的逻辑,这样如果用户想要为他们的资源创建多个方法,他们就可以

我环顾了一下网络,不确定我的逻辑是否正确,因为当我运行terraform作业时,我得到了以下错误

aws_api_gateway_integration.integration:未为变量“aws_api_gateway_method.newexecution”找到资源“aws_api_gateway_method.newexecution.http_method”

下面是在我的terraform apply命令中发送的内容:

地形计划-var=gatewayID=XXXX-var=parentID=XXXX-var=lambda\u name=lambda-var=path\u name=resourcename-var=awsAccount=123456-var=resource\u method=[“发布”、“获取”]

下面是我的terraform文件和variable.tf文件

resource "aws_api_gateway_resource" "NewResource" {
  rest_api_id = "${var.gatewayID}"
  parent_id   = "${var.parentID}"
  path_part   = "${var.path_name}"
}

resource "aws_api_gateway_method" "newexecution" {
  count = "${length(var.resource_method)}"
  rest_api_id   = "${var.gatewayID}"
  resource_id   = "${aws_api_gateway_resource.NewResource.id}"
  http_method   = "${var.resource_method[count.index]}"
  authorization = "NONE"
  depends_on    = ["aws_api_gateway_resource.NewResource"]
}



variable "region" {
  default = "us-east-1"
}

variable "lambda_name" {
  type = "string"
}

variable "path_name" {
  type = "string"
}

variable "awsAccount" {
  type = "string"
}

variable "gatewayID" {
  type = "string"
}

variable "parentID" {
  type = "string"
}

variable "resource_method" {
  type = "list"
}

有没有关于如何修复此问题的建议,以便Terraform将创建一个新资源并添加一篇文章并访问该资源?这在Terraform 0.11(使用Terraform 0.11.7)中不可行吗?

因为在Terraform版本11中有循环

元素就是函数 **使用**

http\u方法=“${element(var.resource\u方法,count.index)}”

您的代码将被删除

resource "aws_api_gateway_method" "newexecution" {
  count = "${length(var.resource_method)}"
  rest_api_id   = "${var.gatewayID}"
  resource_id   = "${aws_api_gateway_resource.NewResource.id}"
  http_method   = "${element(var.resource_method, count.index)}
  authorization = "NONE"
  depends_on    = ["aws_api_gateway_resource.NewResource"]
}
元素将从索引0开始,一旦索引超过列表的长度,它将再次从0开始

例如:

element(["a", "b", "c"], 3)
a

element(["a", "b", "c"], 7)
b

你能试试这个
http\u方法=“${element(var.resource\u方法,count.index)}”
element(["a", "b", "c"], 1)
b

element(["a", "b", "c"], 3)
a
element(["a", "b", "c"], 3)
a

element(["a", "b", "c"], 7)
b