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

Amazon web services API网关lambda的AWS SAM更新功能代码,amazon-web-services,aws-lambda,amazon-cloudformation,aws-api-gateway,aws-sam,Amazon Web Services,Aws Lambda,Amazon Cloudformation,Aws Api Gateway,Aws Sam,我正在使用SAM的CloudFormation部署一个堆栈,其中包含: S3铲斗 白兰地 AWS::Serverless::Api AWS::Serverless::Function(授权人+微服务,类型:Api和Api网关的端点) 日志组 要部署我的堆栈,我首先运行aws cloudformation package打包lambda,然后运行aws cloudformation deploy部署生成的堆栈。这是有效的 我现在的目标是能够在不部署整个堆栈的情况下更新微服务(而不是构建授权者和

我正在使用SAM的CloudFormation部署一个堆栈,其中包含:

  • S3铲斗
  • 白兰地
  • AWS::Serverless::Api
  • AWS::Serverless::Function
    (授权人+微服务,
    类型:Api
    和Api网关的端点)
  • 日志组
要部署我的堆栈,我首先运行
aws cloudformation package
打包lambda,然后运行
aws cloudformation deploy
部署生成的堆栈。这是有效的

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

我面临的问题是:

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

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

    既然您正在使用SAM,我建议您使用部署和更新您的应用程序

    你可以跑

    • sam构建
    • sam包
    • sam部署
    当您运行
    sam deploy
    时,它将部署您的应用程序,但所有后续的
    sam deploy
    命令将仅使用需要更新的适当资源更新现有的cloudformation堆栈


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

    由于您使用的是SAM,因此我建议使用部署和更新应用程序

    你可以跑

    • sam构建
    • sam包
    • sam部署
    当您运行
    sam deploy
    时,它将部署您的应用程序,但所有后续的
    sam deploy
    命令将仅使用需要更新的适当资源更新现有的cloudformation堆栈


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

    检测哪些资源需要更新是基于属性的,例如CodeUri,对吗?这种方法的问题是,必须构建其他微服务并再次检查它们的哈希值,这是我试图避免的。必须构建并检查它们的哈希值您想手动执行此操作吗???运行
    sam build&&sam deploy
    应该只需要几分钟。虽然sam cli是aws推荐的执行此操作的方法,但sam deploy对于主动开发来说速度非常慢,我想这就是为什么很多人(像我一样)希望在主动开发期间使用另一种方法快速更改lambda的原因(使用本地api并不总是一个解决方案,对我来说,我有sqs和其他aws基础设施,因此我需要在活动开发期间实际部署lambdas以进行许多小的更改)作为我之前评论的后续,一旦在aws sam期间部署一次,就可以使用lamba“更新函数代码”方法只更新lambda代码以进行小的更改,而不需要完全重新部署。我发现了这个示例,并出于我的目的对其进行了一些修改,因为我没有使用节点/网页包:检测哪些资源需要更新是基于属性的,例如CodeUri,对吗?这种方法的问题是,其他微服务可能需要更新必须生成并检查其哈希,这是我试图避免的。必须生成并检查其哈希,您想手动执行此操作吗???运行
    sam构建和&sam部署
    只需几分钟。虽然sam cli是aws建议的执行此操作的方法,但sam部署对于active Development来说非常缓慢ent,我假设为什么很多人(像我一样)希望在活动开发过程中快速更改lambda(使用本地api并不总是一个解决方案,对我来说,我有sqs和其他aws基础设施,所以我需要在活动开发过程中实际部署lambda以进行许多小更改)作为我之前评论的后续内容,一旦在aws sam期间部署一次,您可以使用lamba“更新函数代码”方法仅更新lambda代码以进行小的更改,而无需完全重新部署。我发现了此示例,并出于我的目的对其进行了一些修改,因为我没有使用节点/网页包: