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

使用Jenkins和AWS CodeDeploy时遇BundleType必须为YAML或JSON错误

解决Jenkins + AWS CodeDeploy部署Lambda时的"BundleType must be either YAML or JSON"错误

咱们先拆解下这个错误的核心:AWS CodeDeploy部署Lambda时,得能准确识别部署包里的部署规范文件(也就是你的appspec.yml),要么是Jenkins配置没选对类型,要么是部署包结构不符合要求。下面一步步来排查解决:

1. 先确认部署包的结构是否合规

AWS CodeDeploy要求appspec.yml必须放在压缩包的根目录,绝对不能嵌套在子文件夹里。举个正确的结构例子:

你的部署包解压后/
├── appspec.yml
├── lambda_function.py
└── 其他依赖文件

如果你的appspec.yml藏在src/这类子目录里,CodeDeploy根本找不到它,自然会抛出这个错误。

2. 检查Jenkins里AWS CodeDeploy插件的配置

打开Jenkins的部署任务,找到AWS CodeDeploy的配置项:

  • 一定要在Bundle Type选项里选YAML(因为你用的是.yml文件),别选错成其他类型。
  • 如果是用Pipeline脚本部署,要确认deploy步骤里的bundleType参数明确设为'YAML',示例脚本如下:
deploy codedeploy: [
    applicationName: '你的Lambda应用名',
    deploymentGroupName: '你的部署组名',
    deploymentConfig: 'CodeDeployDefault.LambdaAllAtOnce',
    bundleType: 'YAML',
    s3Location: [
        bucket: '你的S3桶名',
        key: '你的部署包.zip',
        bundleType: 'YAML'
    ]
]

注意这里s3Location里的bundleType也要同步设置,别漏了。

3. 验证appspec.yml的格式是否正确

哪怕你有这个文件,要是YAML语法出错(比如缩进不对、符号写错),CodeDeploy也识别不出这是有效的YAML文件。你可以用本地的yamllint命令,或者随便找个在线YAML校验工具检查下语法。

给你一个Lambda用的appspec.yml基础结构参考:

version: 0.0
Resources:
  - 你的Lambda函数名:
      Type: AWS::Lambda::Function
      Properties:
        Name: "你的Lambda函数名"
        Alias: "prod"
        CurrentVersion: "v1"
        TargetVersion: "v2"

4. 确认S3里的压缩包没问题

有时候Jenkins上传的压缩包可能损坏,或者没把appspec.yml包含进去。你可以手动下载S3里的压缩包,解压后检查根目录有没有这个文件,内容是不是正确的。

按上面的步骤排查完,重新触发Jenkins部署任务,应该就能解决这个BundleType错误了。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.28 09:02:29