Ошибка Terraform при создании ресурса шлюза API жалуется, что другой ресурс с тем же родителем уже имеет это имя

Я создаю ресурс шлюза API под названием lang:

resource "aws_api_gateway_resource" "lang" {
  path_part   = "lang"
  parent_id   = aws_api_gateway_resource.api.id
  rest_api_id = aws_api_gateway_rest_api.root_api.id
}

После успешного создания API при следующем запуске terraform apply я получаю следующую ошибку:

Error: Error creating API Gateway Resource: ConflictException: Another resource with the same parent already has this name: lang

Вышеупомянутый ресурсный блок абсолютно, определенно единственный с таким именем. Я достаточно погуглил по этому поводу, чтобы понять, что terraform жалуется на то, что ресурс под названием lang уже существует и не может быть воссоздан. Я не знаю, как его сначала уничтожить.

Я попытался добавить это в свой сценарий:

resource "aws_api_gateway_deployment" "deployment" {
  rest_api_id   = aws_api_gateway_rest_api.root_api.id
  stage_name    = var.envName
  
  triggers = {
    redeployment = sha1(jsonencode(aws_api_gateway_rest_api.root_api.body))
  }

  lifecycle {
    create_before_destroy = true
  }
}

...но безрезультатно.

Должно ли свойство create_before_destroy не разрушать API и не приводить к его воссозданию, или только этап?

Как я могу внести изменения в ресурс lang, если блок ресурсов не может этого сделать? Мне это кажется фундаментальной круговой проблемой.


person Matt W    schedule 22.02.2021    source источник
comment
Почему ресурс API lang (не ресурс TF) уже существует? Вы создавали его вручную с помощью AWS console / cli / sdk?   -  person Marcin    schedule 23.02.2021
comment
В верхней части я сказал, что при запуске terraform применяйте последующие разы. Это означает, что он был создан при первом запуске приложения. Похоже, что это не может быть изменено в следующих заявках.   -  person Matt W    schedule 23.02.2021


Ответы (1)


К сожалению, это была опечатка поздно ночью ...

Я (намеренно) скопировал блок resource "aws_api_gateway_resource" "lang" и забыл переименовать копию, когда просматривал и обновлял все копии для своих собственных целей.

person Matt W    schedule 24.02.2021