Amazon web services 自动化API网关阶段部署

Amazon web services 自动化API网关阶段部署,amazon-web-services,amazon-cloudformation,aws-api-gateway,Amazon Web Services,Amazon Cloudformation,Aws Api Gateway,我正在使用cloudformation创建API网关阶段 ApiDeployment: Type: AWS::ApiGateway::Deployment Properties: RestApiId: !Ref ExampleRestApi StageName: dev 问题是,每当我创建一个新的API时,我只需要使用AWS控制台部署该阶段。是否有任何方法可以使部署过程自动化,从而无需进一步的控制台操作。当您定义这样的部署资源时,CloudForm

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

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

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

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

ApiDeployment#TIMESTAMP#:
  Type: AWS::ApiGateway::Deployment
  Properties:
    RestApiId: !Ref ExampleRestApi
    StageName: dev
这样,您仍然可以在API网关控制台中查看部署历史记录


如果您不想这样操作模板,还可以向CloudFormation堆栈中添加一个。使用AWS SDK,您可以让Lambda函数在API更新时自动为您创建新部署。

我应该将当前时间作为参数值传递,还是如何在模板文件中获取它?非常感谢。不幸的是,不可能将其作为参数值传入,模板需要在部署之前进行预处理。例如,您可以编写一个脚本来创建模板副本,用实际的时间戳替换#TIMESTAMP#,然后部署它