【问题标题】:Automating API Gateway Stage Deployment自动化 API 网关阶段部署
【发布时间】:2020-11-24 07:52:25
【问题描述】:

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

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

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

【问题讨论】:

    标签: amazon-web-services amazon-cloudformation aws-api-gateway


    【解决方案1】:

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

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

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

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

    【讨论】:

    • 我应该将当前时间作为参数值传递,还是如何在模板文件中获取它?谢谢!
    • 很遗憾,无法将其作为参数值传入,模板需要在部署之前进行预处理。例如,您可以编写脚本来创建模板副本,将#TIMESTAMP# 替换为实际时间戳,然后部署它
    猜你喜欢
    • 2016-12-19
    • 2018-11-12
    • 2017-05-16
    • 2018-07-25
    • 2018-06-19
    • 2017-11-27
    • 2019-03-08
    • 1970-01-01
    • 2020-04-16
    相关资源
    最近更新 更多