amazon-web-services - 自动化 API 网关阶段部署
问题描述
我正在使用 cloudformation 创建 API 网关阶段。
ApiDeployment:
Type: AWS::ApiGateway::Deployment
Properties:
RestApiId: !Ref ExampleRestApi
StageName: dev
这就是问题所在,每当我创建一个新的 API 时,我只需要使用 AWS 控制台部署阶段。有什么方法可以使部署过程自动化,从而不需要进一步的控制台操作。
解决方案
当您像这样定义部署资源时,CloudFormation 将仅在第一次运行时创建部署。在第二次运行时,它将观察到资源已经存在并且 CloudFormation 定义没有更改,因此它不会创建另一个部署。要解决此问题,您可以将 UUID/时间戳占位符添加到资源 ID 中,并在每次执行 CloudFormation 更新之前替换它:
ApiDeployment#TIMESTAMP#:
Type: AWS::ApiGateway::Deployment
Properties:
RestApiId: !Ref ExampleRestApi
StageName: dev
这样,您仍然可以在 API Gateway 控制台中查看您的部署历史记录。
如果您不想像这样操作您的模板,您还可以将Lambda 支持的自定义资源添加到您的 CloudFormation 堆栈。使用 AWS 开发工具包,您可以让 Lambda 函数在 API 更新时自动为您创建新部署。
推荐阅读
- sql - Postgres 查询在生产上很慢,在暂存和本地上都很快
- python - 在熊猫中每个月添加额外的天数
- c# - 没有 ReadKey 的计时器类,以便程序完成计划
- oracle - 选择列值至少出现两次且在另一列中具有不同值的行,最后按更新时间排序
- powershell - 使用 Powershell 从字符串中删除空格
- powershell - 如何从 server1 执行 powershell 脚本以在 server2 中部署 wsp
- android - 推荐一种在应用关闭后继续运行的可行方式
- spring-cloud - 具有反应弹性的弹簧云断路器4j
- tensorflow - Keras后端方法来创建与原始张量长度相同的平均值张量?
- database - 如何使用不基于数据库差异功能连接的架构?