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

使用GitHub Action部署AWS Elastic Beanstalk出现S3访问拒绝错误如何解决

问题根因

上传S3成功是因为你配置在GitHub Secrets中的AWS访问密钥拥有对应桶的上传权限,而部署阶段的S3访问请求是由Elastic Beanstalk的服务角色、EC2实例配置关联的角色发起的,这两个角色没有S3桶的读取权限,才会触发访问拒绝报错。

解决步骤

  • 检查Elastic Beanstalk服务角色权限
    默认的Beanstalk服务角色名称为aws-elasticbeanstalk-service-role,需要为该角色添加S3桶的访问权限,最小权限示例如下:
{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "s3:GetObject",
                "s3:ListBucket"
            ],
            "Resource": [
                "arn:aws:s3:::elasticbeanstalk-us-east-2-148565102071",
                "arn:aws:s3:::elasticbeanstalk-us-east-2-148565102071/*"
            ]
        }
    ]
}
  • 检查EC2实例配置文件关联的角色权限
    Beanstalk环境对应的EC2实例会使用独立的角色(默认名称为aws-elasticbeanstalk-ec2-role)拉取部署包,该角色同样需要添加上述S3权限。
  • 排查S3桶自定义策略
    如果你给目标S3桶配置了自定义桶策略,需要确认策略没有禁止上述两个角色的访问请求,也没有IP限制、跨账号限制等规则拦截访问。

你之前添加的权限是给GitHub Action上传阶段使用的密钥的,配置没有问题,只需要补充AWS侧Beanstalk相关角色的权限即可解决问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.28 07:09:03