如何使用 Terraform 在 API Gateway 中仅部署更新的资源而不触发完全重新部署?

问题描述 投票:0回答:1

我已经使用 Terraform 部署了 API 网关解决方案。为了解决 Swagger 文件更改未正确部署的问题,我在阶段资源中引入了动态值(描述 = ${timestamp})。

虽然这种方法解决了部署问题,但它有一个不需要的副作用:每次应用更改时,所有 API 网关资源(大约 200 个 API)都会重新部署。

团队现在要求使 Terraform 计划更具可读性,并将部署限制为仅已更新的资源,避免完全重新部署所有 API。

在 Terraform 中实现这一目标的最佳方法是什么?如何避免触发完全重新部署,同时仍确保正确应用 Swagger 文件的更新?

我只想重新部署在 terraform 计划“资源 xxxx 将更新”期间更新和读取的 swagger 文件。

感谢您的帮助

amazon-web-services terraform aws-api-gateway
1个回答
0
投票

您是否尝试将该 swagger 的文件作为哈希代码触发器添加到该 api 资源?

下面是如何使用它的示例,这将确保只有当文件本身发生更改时才会触发特定的 api_gateway_deployment,并且该更改不应引用任何其他内容

data "local_file" "swagger_file" {
  filename = "${path.module}/swagger.json"
}

resource "aws_api_gateway_deployment" "api_deployment" {
  rest_api_id = aws_api_gateway_rest_api.example.id
  stage_name  = "prod"

  triggers = {
    swagger_hash = md5(data.local_file.swagger_file.content)
  }
}
© www.soinside.com 2019 - 2024. All rights reserved.