ฉันกำลังสร้างทรัพยากร API Gateway ชื่อ 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 ได้อย่างไรหากบล็อกทรัพยากรไม่สามารถทำได้ นี่ดูเหมือนเป็นปัญหาวงกลมพื้นฐานสำหรับฉัน
lang
API (ไม่ใช่ทรัพยากร TF) จึงมีอยู่แล้ว คุณสร้างมันด้วยตนเองโดยใช้ AWS console/cli/sdk หรือไม่ - person Marcin   schedule 23.02.2021