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

Code Pipeline使用SAM模板部署Lambda时无法创建Layers问题

排查与解决步骤

1. 补充Lambda函数与层的关联配置

你当前SAM模板仅定义了层资源,未在Lambda函数的配置中添加Layers属性关联该层,部分场景下CloudFormation会默认跳过创建未被任何资源引用的独立层资源。修正后的Lambda资源配置如下:

awstransformedcurlambdafn:
  Type: 'AWS::Serverless::Function'
  Properties:
    FunctionName: lambda1
    Handler: index.handler
    Runtime: nodejs12.x
    CodeUri: .
    MemorySize: 256
    Timeout: 300
    Role: 'arn:aws:iam::11111111:role/Role1'
    Tracing: Active
    # 新增以下配置关联层资源
    Layers:
      - !Ref transformedcurNodeModulesLayer

2. 校验SAM构建打包流程

  • 确认sam build执行时的工作目录与SAM模板所在目录匹配,ContentUri配置的./layers/nodejs/是相对模板文件的路径,路径偏移会导致层内容打包为空,触发跳过创建逻辑
  • 检查CodePipeline构建阶段的日志,确认层目录下的文件被正常打包,无路径不存在、权限异常类报错
  • 验证打包后生成的最终模板中,层的ContentUri已被替换为合法的S3对象地址,而非本地路径

3. 核对CloudFormation堆栈操作记录

进入CloudFormation控制台,找到对应部署堆栈的事件列表:

  • 若存在层资源的创建失败记录,根据报错信息排查问题,常见原因包括层名称重复、运行时版本不受支持、CodePipeline服务角色无层资源的创建权限等
  • 若完全没有该层资源的相关操作记录,先检查模板YAML的缩进是否正确,AWS::Serverless::LayerVersion类型拼写是否无误,再确认部署使用的变更集是否包含该层的新增操作

4. 目录结构验证

你当前使用的layers -> nodejs -> node_modules目录结构符合Node.js层的规范,部署成功后Lambda代码可直接引入依赖,无需额外配置路径。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.22 03:06:08