You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何通过AWS SAM强制重新部署Lambda函数(无代码变更场景)

实现Lambda函数强制重新部署的方法

一、通过AWS SAM实现强制部署

  • 利用元数据触发变更:在Lambda函数的SAM资源定义中添加Metadata字段,自定义一个可手动更新的标识(如版本号、时间戳)。每次部署前修改该标识的值,CloudFormation会识别为资源元数据变更,从而触发函数重新部署。示例:
Resources:
  MyLambdaFunction:
    Type: AWS::Serverless::Function
    Properties:
      CodeUri: ./src/
      Handler: index.handler
      Runtime: python3.11
    Metadata:
      ForceDeployVersion: "202405201430" # 每次部署前更新该值
  • 使用SAM CLI强制上传参数:执行部署命令时添加--force-upload参数,该参数会强制上传函数代码包,即便代码无变更,也会触发重新部署:
sam deploy --template-file template.yaml --stack-name my-stack --force-upload

二、CloudFormation原生解决方案

  • 自定义参数触发变更:在模板中定义一个ForceDeployToken参数,每次部署时传入不同值(如时间戳),并将其作为Lambda函数的环境变量。CloudFormation检测到环境变量变更后,会重新部署函数。示例:
Parameters:
  ForceDeployToken:
    Type: String
    Default: !Sub "${AWS::StackName}-${AWS::Timestamp}"

Resources:
  MyLambdaFunction:
    Type: AWS::Lambda::Function
    Properties:
      Code:
        S3Bucket: my-code-bucket
        S3Key: lambda-package.zip
      Handler: index.handler
      Runtime: python3.11
      Environment:
        Variables:
          FORCE_DEPLOY_TRIGGER: !Ref ForceDeployToken
  • 更新函数描述字段:每次部署时修改Lambda函数的Description属性(比如加入当前时间戳),CloudFormation会识别为资源属性变更,执行重新部署。

三、AWS CLI直接操作

若无需通过基础设施即代码工具,可直接调用Lambda API强制更新函数:

aws lambda update-function-code --function-name MyLambdaFunction --s3-bucket my-code-bucket --s3-key lambda-package.zip --publish

该命令会强制发布函数新版本,即使代码包与现有版本一致。

内容的提问来源于stack exchange,提问作者Wind Rise

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.23 03:12:32