首页 > 解决方案 > 自动化 API 网关阶段部署

问题描述

我正在使用 cloudformation 创建 API 网关阶段。

  ApiDeployment:
    Type: AWS::ApiGateway::Deployment
    Properties:
      RestApiId: !Ref ExampleRestApi
      StageName: dev 

这就是问题所在,每当我创建一个新的 API 时,我只需要使用 AWS 控制台部署阶段。有什么方法可以使部署过程自动化,从而不需要进一步的控制台操作。

标签: amazon-web-servicesamazon-cloudformationaws-api-gateway

解决方案


当您像这样定义部署资源时,CloudFormation 将仅在第一次运行时创建部署。在第二次运行时,它将观察到资源已经存在并且 CloudFormation 定义没有更改,因此它不会创建另一个部署。要解决此问题,您可以将 UUID/时间戳占位符添加到资源 ID 中,并在每次执行 CloudFormation 更新之前替换它:

ApiDeployment#TIMESTAMP#:
  Type: AWS::ApiGateway::Deployment
  Properties:
    RestApiId: !Ref ExampleRestApi
    StageName: dev

这样,您仍然可以在 API Gateway 控制台中查看您的部署历史记录。

如果您不想像这样操作您的模板,您还可以将Lambda 支持的自定义资源添加到您的 CloudFormation 堆栈。使用 AWS 开发工具包,您可以让 Lambda 函数在 API 更新时自动为您创建新部署。


推荐阅读