Kesalahan Terraform saat membuat Sumber Daya API Gateway mengeluhkan sumber daya lain dengan induk yang sama sudah memiliki nama ini

Saya membuat sumber daya API Gateway bernama 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
}

Setelah berhasil membuat API, ketika menjalankan terraform apply kali berikutnya, saya mendapatkan kesalahan ini:

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

Blok sumber daya di atas tentu saja satu-satunya yang memiliki nama itu. Saya sudah cukup banyak mencari di Google untuk menyadari bahwa terraform mengeluh bahwa sumber daya yang disebut lang sudah ada dan tidak dapat dibuat ulang. Yang saya tidak tahu adalah bagaimana cara menghancurkannya terlebih dahulu.

Saya telah mencoba menambahkan ini ke skrip saya:

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
  }
}

... tidak berhasil.

Haruskah properti create_before_destroy pada dasarnya tidak menghancurkan API dan menyebabkannya dibuat ulang atau hanya panggungnya saja?

Bagaimana saya bisa membuat perubahan pada sumber daya lang jika blok sumber daya tidak dapat melakukannya? Bagi saya, ini tampaknya merupakan masalah melingkar yang mendasar.


person Matt W    schedule 22.02.2021    source sumber
comment
Mengapa sumber daya lang API (bukan sumber daya TF) sudah ada? Apakah Anda membuatnya secara manual menggunakan konsol AWS/cli/sdk?   -  person Marcin    schedule 23.02.2021
comment
Di dekat bagian atas saya telah mengatakan ketika menjalankan terraform terapkan waktu berikutnya. Artinya, ini dibuat saat pertama kali saya menjalankan penerapannya. Tampaknya hal itu tidak dapat diubah setelah permohonan berikut.   -  person Matt W    schedule 23.02.2021


Jawaban (1)


Yang menjengkelkan, ini adalah kesalahan ketik pada larut malam...

Saya (sengaja) menyalin-menempelkan blok resource "aws_api_gateway_resource" "lang" dan lupa mengganti nama salinannya saat memeriksa dan memperbarui semua salinan untuk keperluan mereka sendiri.

person Matt W    schedule 24.02.2021