Терраформ уничтожить API-шлюз с VPC Link не удается - PullRequest
0 голосов
/ 27 мая 2019

Настройка

  • Terraform v 0.11.14
  • Спецификация OpenAPI 3.0 для определения тела моего шлюза API

Terraform Resources

Я создал частный шлюз API, который направляет трафик в NLB через VPC-ссылки.Я развернул API, но для краткости я опустил этот ресурс из приведенного ниже, поскольку он тривиален.

resource "aws_api_gateway_rest_api" "this" {
  name        = "MyAPI"
  body        = "${file("./api-spec.yaml")}"

  endpoint_configuration {
    types = ["PRIVATE"]
  }
}

resource "aws_lb" "app" {
  name               = "MyNLB"
  internal           = true
  load_balancer_type = "network"
  subnets            = ["MySubnetIds"]
}

resource "aws_api_gateway_vpc_link" "nlb" {
  name        = "api-gateway-to-nlb"
  target_arns = ["${aws_lb.app.arn}"]
}

Ссылка на ссылку VPC указана в файле api-spec.yaml.Соответствующий раздел:

paths:
  /items:
    get:
      summary: Gets a collection of items
      responses:
        '200':
          description: Ok
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/Item'
      x-amazon-apigateway-integration:
        type:              http_proxy
        httpMethod:        GET
        uri:               https://my-internal-nlb/api/v1/items
        connectionType:    "VPC_LINK"
        connectionId:      "${vpclink_id}"
        responses:
          default:
            statusCode: '200'

Проблема

Когда я запускаю terraform destroy, я получаю следующее сообщение:

Ошибка: Ошибка применения плана:

1 произошла ошибка:
* aws_api_gateway_vpc_link.nlb (уничтожить): произошла 1 ошибка:
* aws_api_gateway_vpc_link.nlb: ошибка при удалении ссылки API-шлюза VPC (bgzpv1): BadRequestExceptionНевозможно удалить ссылку vpc.Ссылка Vpc 'bgzpv1', указана в развернутых стадиях [POST: 50f55s: разработка, GET: 50f55s: разработка] в формате [Метод: Ресурс: Этап], а также в неразрешенной интеграции [GET: 50f55s, POST: 50f55s] в форматеиз [Метод: Ресурс].код состояния: 400, идентификатор запроса: d9a9667b-8099-11e9-98d1-9f899674f4b9

Если я подожду несколько минут, а затем снова выполню terraform destroy, следующие ресурсы будут уничтожены:

  • aws_lb.app
  • aws_api_gateway_vpc_link.nlb

У меня есть Google, но я не могу найти много информации по этой теме.На форумах поддержки AWS был поднят тикет , но это было некоторое время назад, и AWS указали, что собираются решить проблему

1 Ответ

0 голосов
/ 03 июля 2019

Это происходит потому, что он связан с методом интеграции на развернутой стадии, а Terraform не знает, как разрешить конфликт. Для ее решения необходимо:

  1. Удалите связь с VPC Link, создав еще одну VPC Link и меняет ассоциацию. Не забудьте развернуть его.
  2. Просто удалите этап развертывания, с которым связан ресурс.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...