API网关lambda的AWS SAM更新功能代码



我使用CloudFormation和SAM来部署一个包含以下内容的堆栈:

  • S3铲斗
  • Cognito
  • AWS::Serverless::Api
  • AWS::Serverless::Function(授权者+微服务、Type: Api和API网关的端点(
  • 日志组

要部署我的堆栈,我首先运行aws cloudformation package来打包lambda,然后运行aws cloudformation deploy来部署生成的堆栈。这是有效的。

我现在的目标是能够在不部署整个堆栈的情况下更新微服务(而不是构建授权器和其他微服务(,类似于无服务器框架中的serverless deploy function。这最好是一个可重复使用的模板,它使用宏或只替换文件中的文本。

我面临的问题是:

  • 运行aws lambda update-function-code需要重新部署lambda
  • 要重新部署lambda,我必须声明AWS::Serverless::Function。对于要成为API网关一部分的函数,还必须声明AWS::Serverless::Api
  • 声明AWS::Serverless::Api需要定义所有其他函数,否则将从API网关中删除这些函数

我觉得自己被困在这里,没有找到实现目标的其他选择。

由于您正在使用SAM,我建议您使用SAM-cli命令部署和更新应用程序。

你可以运行

  • sam build
  • sam package
  • sam deploy

当您运行sam deploy时,它会部署您的应用程序,但所有后续的sam deploy命令将仅使用需要更新的适当资源来更新您现有的云信息堆栈。

如果选择使用标准的Cloudformation cli命令,则可以使用aws cloudformation update-stack命令,这样就不会重新部署整个新堆栈。

最新更新