【发布时间】:2018-07-25 02:41:12
【问题描述】:
使用此代码:
resource "aws_api_gateway_deployment" "example_deployment" {
depends_on = [
"aws_api_gateway_method.example_api_method",
"aws_api_gateway_integration.example_api_method_integration"
]
rest_api_id = "${aws_api_gateway_rest_api.example_api.id}"
stage_name = "${var.stage_name}"
}
我可以将 API 网关更改部署到我指定的任何阶段。但是,这将覆盖任何现有阶段。也就是说,如果我首先部署到名为“dev”的阶段,然后部署到“prod”,它将擦除“dev”。
如何实现多阶段部署?这样我就可以首先部署到 dev 或 staging 阶段,如果一切看起来都不错,然后部署到 prod 阶段。
【问题讨论】:
-
Terraform 并不能真正很好地处理 API Gateway 发布模型,尽管我认为尝试处理 AWS 提供商 repo 上的此类事情和 ECS 任务定义存在问题。相反,您最好为每个阶段创建单独的 API Gateway 资源并以这种方式链接事物。要保存复制粘贴内容,您可能需要将资源包装在模块中,然后在获取资源时配置名称/阶段。
-
@ydaetskcoR 感谢您的回复。最后,这正是我们所做的 - 每个阶段单独的文件夹/状态文件,然后使用模块使其保持干燥。
-
您可能需要考虑自己回答您的问题,并通过一个最小的示例说明您为未来的读者所做的工作。
标签: aws-lambda aws-api-gateway terraform