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

部署至AWS Elastic Beanstalk的Source Bundle为何加载时出现404错误?

解决Elastic Beanstalk应用版本Source Bundle链接404问题

核心原因

Elastic Beanstalk默认会生成指向**elasticbeanstalk-<区域>-<账号ID>**专属存储桶的源码包链接,当你通过CodePipeline将构建产物上传到自定义S3桶时,EB无法自动识别这个自定义路径,导致生成的链接路径错误,触发404。

解决方案

1. 调整CodePipeline部署动作,同步产物到EB专属桶

在CodePipeline的Deploy阶段,添加一个AWS CLI部署动作,将自定义工件桶内的构建产物同步到EB专属存储桶,路径需符合EB命名规范:

aws s3 cp s3://<你的自定义工件桶>/<构建产物路径> s3://elasticbeanstalk-<区域>-<账号ID>/<应用名>/<版本标签>/<产物文件名>

完成同步后再执行EB部署动作,EB就能生成指向专属桶的有效链接。

2. 手动更新应用版本的源码包路径

若不想修改流水线,可通过AWS CLI强制更新应用版本的Source Bundle指向自定义桶的正确路径:

aws elasticbeanstalk update-application-version \
    --application-name <你的应用名> \
    --version-label <版本标签> \
    --source-bundle S3Bucket=<你的自定义工件桶>,S3Key=<构建产物的完整S3路径>

执行后刷新EB的Application Versions页面,链接即可正常跳转。

3. 修正生命周期规则配置

确认自定义工件桶的生命周期规则未提前删除产物;同时检查EB应用版本的生命周期规则,确保**"保留S3中的Source Bundle"**选项指向你的自定义桶(默认是EB专属桶),可在EB控制台的应用版本生命周期设置页面调整存储目标桶。

4. 验证S3桶权限

确保EB服务角色(通常为aws-elasticbeanstalk-service-role)拥有自定义工件桶的s3:GetObject权限,避免因权限问题导致链接404。可在桶的权限策略中添加:

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Effect": "Allow",
            "Principal": {
                "Service": "elasticbeanstalk.amazonaws.com"
            },
            "Action": "s3:GetObject",
            "Resource": "arn:aws:s3:::<你的自定义工件桶>/*"
        }
    ]
}

额外说明

EB的Application Versions页面链接是动态生成的,依赖应用版本创建时指定的Source Bundle路径。如果通过CodePipeline自动创建应用版本,需确保流水线在创建版本时明确指定自定义桶的S3路径,而非让EB默认生成。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.03 01:25:38