我正在使用 AWS API Gateway 和 AWS Lambda 构建 API。我想实现这个 API 的持续交付。我选择这样做的路径是通过 AWS CodePipeline 使用 CloudFormation。我已经设法使用 Lambdas(没有 API 网关)将它用于另一个项目,它运行良好,使用起来非常愉快。
我在部署时面临的问题是 Lambda 已正确更新,但 API 定义未正确更新。据我了解,AWS::ApiGateway::Deployment 是不可变资源,这意味着对于 API 的每次部署,我都需要创建一个新的 AWS::ApiGateway::Deployment 资源。这根本不切实际,因为对于每个 AWS::ApiGateway::Deployment 我都有一个新的调用 URL。这是不可接受的,因为我必须将我的 DNS 记录更改为新部署的 API 调用 URL,或者要求我们的 API 用户更改其应用程序中的 URL。
我想要的是能够更改 API 定义和 Lambdas 实现,而我的 API 用户不必更改其应用程序中的任何内容。
我怎样才能实现这种行为?
我创建了一个教程来突出我的问题。您可以在以下位置找到它:https ://github.com/JonathanGailliez/aws-api-gateway-lambda-example