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

CloudFormation Package上传哈希而非Zip:Serverless API部署问题求助

解决CloudFormation Package上传哈希而非Zip文件的问题

我之前也碰到过一模一样的问题,折腾了好一会儿才梳理出几个可行的排查方向,你可以逐一试试:

  • 检查CodeUri指向的目录结构是否正确
    很多时候这个问题是因为CodeUri指向的目录没有直接包含Lambda的入口文件,而是嵌套了一层子目录。比如你的代码实际在/home/user/code/lambdafunction/src/里,但你把CodeUri设为了/home/user/code/lambdafunction,这时候package命令会把整个父目录打包,而不是里面的代码文件,最终生成的就不是预期的Zip包,而是目录的哈希值。
    解决方法:确保CodeUri直接指向包含index.js(或你的Lambda入口文件)的那个目录。

  • 排除不必要的文件或目录
    如果你的Lambda目录里有node_modules、.git这类大文件或隐藏目录,可能会干扰package命令的正常打包流程。你可以通过两种方式排除这些内容:
    一是在CloudFormation模板里给函数添加Metadata配置:

    MyLambdaFunction:
      Type: AWS::Serverless::Function
      Properties:
        CodeUri: /home/user/code/lambdafunction
        Handler: index.handler
        Runtime: nodejs18.x
      Metadata:
        AWS::Serverless::Function:
          Exclude:
            - .git/**
            - node_modules/**
    

    二是在执行package命令时加上--exclude参数:

    aws cloudformation package --template-file template.yaml --s3-bucket my-bucket-name --output-template-file packaged-template.yaml --exclude ".git/**" --exclude "node_modules/**"
    
  • 更新AWS CLI和SAM CLI到最新版本
    旧版本的CLI工具可能存在打包逻辑的bug,导致生成哈希而不是Zip包。建议更新到最新版:

    # 更新AWS CLI v2
    curl "https://awscli.amazonaws.com/awscli-exe-linux-x86_64.zip" -o "awscliv2.zip"
    unzip awscliv2.zip
    sudo ./aws/install --update
    
    # 更新SAM CLI
    pip install --upgrade aws-sam-cli
    
  • 验证本地目录的权限和文件完整性
    确保执行package命令的用户对CodeUri目录有完整的读权限,如果某些文件无法被读取,打包流程会异常。你可以先手动打包测试:

    zip -r test-lambda.zip /home/user/code/lambdafunction/
    

    如果手动打包能生成正常的Zip文件,那问题大概率出在CLI工具或模板配置上;如果手动打包也失败,那就检查目录里的文件是否损坏或权限不足。

  • 检查CloudFormation模板的语法
    仔细核对模板里的AWS::Serverless::Function资源配置,比如CodeUri的拼写是否正确(大小写敏感,不能写成CodeURI),其他属性是否有语法错误,这些小问题也可能导致打包流程异常。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.20 11:48:35