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

使用GitHub Action部署至Elastic Beanstalk遇FileTooLargeError求助

问题

尝试通过GitHub Action将应用部署到Elastic Beanstalk,已在推送前压缩文件,压缩包大小约400MB(小于官方512MB的限制),但Action执行后仍报错:FileTooLargeError - Archive cannot be any larger than 512MB。

使用的GitHub Action配置如下:

name: EB deploy
on:
  push:
    branches: [ develop ]
jobs:
  deploy:
    runs-on: ubuntu-latest
    env:
      AWS_ACCESS_KEY_ID: ${{ secrets.AWS_DEVELOP_ACCESS_KEY_ID }}
      AWS_SECRET_ACCESS_KEY: ${{ secrets.AWS_DEVELOP_SECRET_ACCESS_KEY }}
      AWS_DEFAULT_REGION: ${{ secrets.AWS_DEVELOP_DEFAULT_REGION }}
      AWS_APPLICATION_NAME: ${{ secrets.AWS_DEVELOP_APPLICATION_NAME }}
      AWS_ENVIRONMENT_NAME:  ${{ secrets.AWS_DEVELOP_ENVIRONMENT_NAME }}
            
    steps:
      - uses: actions/checkout@v2
      - name: Install Python 3.9
        uses: actions/setup-python@v2
        with:
          python-version: 3.9
      - name: Generate deployment package
        #  run: zip -r deploy.zip * .[^.]* -x "**node_modules, Dockerfile, docker-compose.yml, vendor**"
        # create the zip
        run: zip -r deploy.zip . -x '*.png'  -x '.gitignore'  -x '/plugins/*/webroot/build/*' -x '/plugins/*/webroot/fonts/*'   -x '*.git/*' -x '*.jpeg' -x 'build/*' -x '*.webp' -x 'config-dev-server' -x '*.JPG' -x '*/node_modules/*' -x '.env_example' -x '.htaccess' -x '/plugins/*/webroot/node_modules/*' -x 'webroot/webpack-updater/*' -x '.dockerignore' -x '.vscode' -x '*.gif' -x 'tmp/*' -x 'webroot/cypress/*' -x 'Dockerfile' -x 'docker-compose.yml' -x '*/files/*' -x 'webroot/tests/*' -x '/webroot/node_modules/*' -x '*.jpg' -x '/vendor/*' -x 'webroot/nodeScripts/*' -x '/db/*' -x 'config-dev-server/*' -x 'amplify/*' -x 'amplify_new/*' -x 'webroot/admin/dev/*' -x '/plugins/*/webroot/build/*' -x 'plugins/*/webroot/dev/*' -x '.elasticbeanstalk/app_versions/*'

      - name: Install EB CLI using pip
        run: |
          python -m pip install --upgrade pip
          pip install awsebcli
      - name: Deploy to Elastic Beanstalk
        run: |
          eb init --platform 'PHP 7.4 running on 64bit Amazon Linux 2' --region 'eu-west-2' Develop
          eb deploy

排查思路

  • 确认压缩包实际大小:在Generate deployment package步骤后添加ls -lh deploy.zip命令,查看Action环境中生成的压缩包真实大小。本地测试的压缩包和CI环境生成的可能存在差异,比如CI环境中是否混入了额外文件。

  • 检查排除规则有效性:你的zip排除规则存在重复项(如两次排除/plugins/*/webroot/build/*),且部分路径写法可能失效。比如带开头斜杠的路径在相对目录下可能不生效,建议改为plugins/*/webroot/build/*这类写法;同时可以添加unzip -l deploy.zip | grep node_modules命令,检查是否有未被排除的大目录(如node_modules)被意外包含。

  • 验证EB CLI是否使用了手动生成的压缩包:默认情况下eb deploy会自动打包整个项目目录,而非你手动生成的deploy.zip。这会导致即使你手动压缩了小文件,EB CLI还是会重新打包所有文件,触发大小限制。解决方法:

    • 在eb deploy命令中指定你的压缩包:eb deploy --package deploy.zip
    • 或者在.elasticbeanstalk/config.yml中配置打包规则,避免EB CLI自动打包。
  • 排查遗漏的大文件:在压缩前添加du -sh .查看当前目录总大小,对比压缩后的包大小,判断是否有未被排除的大文件(如日志、缓存、未忽略的第三方依赖)。

  • 测试最小化压缩包:如果前面步骤都没找到问题,可以尝试上传一个仅包含核心文件的小型测试包,确认是否能成功部署,以此排除平台限制异常的可能。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.11 23:09:52