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

使用Serverless Framework上传包至AWS Code Artifact报错求助

问题解答

核心结论

可以将Serverless相关的合法软件包上传至AWS Code Artifact,但你的操作存在本质错误——用PyPI工具twine上传了非PyPI格式的文件。

错误原因

sls package生成的target/dev目录里包含CloudFormation模板(如cloudformation-template-create-stack.json)、Lambda代码包等部署 artifacts,这些都不是PyPI认可的分发格式(PyPI只接受.whl、.tar.gz等标准Python包文件)。而twine是专门用于上传PyPI包的工具,自然会识别不了JSON这类文件。

正确操作方案

情况1:上传Serverless项目中的Python依赖包

如果你的目标是把项目用到的Python依赖包存到Code Artifact的PyPI仓库:

  • 先将你的Python代码打包成标准PyPI格式:
    # 确保安装build工具
    pip install build
    # 生成标准PyPI包文件(输出到dist目录)
    python -m build
    
  • 再用twine上传dist目录下的合法文件:
    aws codeartifact login --tool twine --repository XX --domain XX --domain-owner XX --region XX
    twine upload --repository codeartifact dist/*
    

情况2:上传整个Serverless部署包

如果想存储sls package生成的完整部署 artifacts,AWS Code Artifact并非合适选择——它的定位是软件包仓库,而非部署 artifacts 存储。推荐用AWS S3来存储这类文件:

  • 将target/dev目录打包成zip:
    zip -r serverless-dev-package.zip target/dev/
    
  • 上传到S3:
    aws s3 cp serverless-dev-package.zip s3://your-bucket-path/
    
  • 后续部署时直接从S3拉取该zip包即可。

如果硬要通过Code Artifact存储,需要将部署包封装成符合PyPI格式的包(比如把zip作为包资源),但这属于非常规用法,不推荐。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.28 23:40:05