首页 文章

AWS API Gateway:如何实现持续交付?

提问于
浏览
1

我正在使用AWS API Gateway和AWS Lambda构建API . 我想为此API实现持续交付 . 我选择的路径是通过AWS CodePipeline使用CloudFormation . 我已经设法使用Lambdas(没有API网关)进行另一个项目,它运行良好,使用起来非常愉快 .

我在部署时遇到的问题是Lambdas已正确更新但不是API定义 . 据我所知,AWS :: ApiGateway :: Deployment是不可变资源,这意味着对于API的每个部署,我需要创建一个新的AWS :: ApiGateway :: Deployment资源 . 这根本不实用,因为对于每个AWS :: ApiGateway :: Deployment,我都有一个新的Invoke URL . 这是不可接受的,因为我必须将我的DNS记录更改为新部署的API调用URL,或要求我们的API用户更改其应用程序中的URL .

我想要的是能够更改API定义和Lambdas实现,而我的API用户不必更改其应用程序中的任何内容 .

我怎样才能实现这种行为?

我创建了一个教程来突出我的问题 . 你可以在以下网址找到它:https://github.com/JonathanGailliez/aws-api-gateway-lambda-example

3 回答

  • 0

    根据:https://forums.aws.amazon.com/thread.jspa?messageID=789869&#789869

    joey-aws说:

    我们目前正在推出解决这一问题的解决方案 . 与此同时,常见的解决方法是更新一些小的内容,例如“描述”字段,然后可以在更新CloudFormation堆栈时用于“触发”API网关部署 .

    一旦它推出,我会更新这个答案和示例repo .

  • 2

    实现这一目标的一种方法是利用现有的框架

  • 0

    您可以从命令行或AWS控制台运行Cloudformation更新 . 这将更改API定义和任何lambda代码,而无需更改访问网关的唯一ID .

    另一个选择是将您的API置于自定义域名后面,然后您可以继续部署新的API或阶段,并在准备好时切换自定义域映射 . 用户不会认识到任何变化 .

相关问题