我正在使用cloudformation创建API网关阶段。
ApiDeployment:
Type: AWS::ApiGateway::Deployment
Properties:
RestApiId: !Ref ExampleRestApi
StageName: dev
这是问题所在,每当我创建新的API时,我只需要使用AWS控制台进行部署即可。有什么方法可以使部署过程自动化,从而不需要进一步的控制台操作。
答案 0 :(得分:2)
当您定义这样的部署资源时,CloudFormation将仅在第一次运行时创建部署。在第二次运行时,它将观察到资源已经存在并且CloudFormation定义没有更改,因此不会创建另一个部署。要解决此问题,您可以在资源ID中添加UUID /时间戳占位符之类的内容,并在每次进行CloudFormation更新之前都将其替换:
ApiDeployment#TIMESTAMP#:
Type: AWS::ApiGateway::Deployment
Properties:
RestApiId: !Ref ExampleRestApi
StageName: dev
这样,您仍然可以在API Gateway控制台中查看部署历史记录。
如果您不想像这样操作您的模板,也可以向您的CloudFormation堆栈中添加一个Lambda-backed Custom Resource。使用AWS开发工具包,您可以让Lambda函数在更新API后自动为您创建新的部署。