我正在创建一个名为"lang":
的API网关资源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在抱怨一种叫做"语言"的资源。已经存在且不能重新创建。我不知道的是如何先把它毁掉。
我试着把这个添加到我的脚本:
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并导致它被重新创建或仅仅是阶段吗?
如何更改"语言"?如果资源块不能完成它?在我看来,这似乎是一个基本的循环问题。
令人恼火的是,这是一个深夜的打字错误…
我(故意)复制粘贴了resource "aws_api_gateway_resource" "lang"
块,并在浏览和更新所有副本时忘记了重命名副本。