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

如何使用CodeDeploy将S3中的Zip包部署到Lambda(非SAM环境)

解决CodeDeploy部署Lambda代码不更新的问题

核心问题原因

CodeDeploy部署Lambda时,不支持直接使用Zip包作为构件,必须提供解压后的目录结构,且appspec.yml必须放在该目录的根路径,和Lambda代码文件同级。

具体解决步骤

1. 调整CodeBuild的构件输出配置

修改buildspec.yml,将生成的Lambda Zip包解压到指定目录,并把appspec.yml复制到该目录根路径,确保CodeBuild输出的是完整的目录结构:

phases:
  build:
    commands:
      # 假设你的构建过程生成了lambda-code.zip
      - unzip lambda-code.zip -d ./deploy
      # 将appspec.yml复制到部署目录根路径
      - cp appspec.yml ./deploy/
artifacts:
  files:
    - '**/*'
  base-directory: './deploy'

2. 配置CodeDeploy应用与部署组

  • 创建CodeDeploy应用时,应用类型选择Lambda
  • 部署组关联目标Lambda函数,部署配置可使用默认的LambdaAllAtOnce(或根据需求选择灰度部署配置)

3. 校验appspec.yml的正确性

确保appspec.yml的资源配置正确,示例如下:

version: 0.0
Resources:
  - MyLambdaFunction:
      Type: AWS::Lambda::Function
      Properties:
        Name: "你的Lambda函数名称"
        # 若使用别名部署则配置Alias,否则可省略
        Alias: "prod"
        CurrentVersion: "$LATEST"
Hooks:
  # 可选:自定义流量切换前后的脚本
  - BeforeAllowTraffic:
      - Location: scripts/before-traffic.sh
        Timeout: 300
  - AfterAllowTraffic:
      - Location: scripts/after-traffic.sh
        Timeout: 300

关于视频内容的解释

你看到的视频中没有提及Zip包,是因为视频里的构建过程直接输出了未打包的代码目录,CodeDeploy可以直接识别根目录下的代码文件,因此能正常更新Lambda代码。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.31 05:22:07