Amazon web services 自动化API网关阶段部署
我正在使用cloudformation创建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
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#,然后部署它