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

已配置IAM角色仍无法让EC2实例访问S3 Bucket,求排查

排查EC2访问S3 Bucket出现403 Forbidden的可能原因

以下是几个常见的排查方向:

  • 桶策略冲突
    S3的权限判定遵循IAM权限与桶策略的交集规则,且拒绝优先级高于允许。即便你的IAM角色配置了访问权限,若桶策略中存在Deny语句(例如拒绝所有未明确授权的访问),或是未包含允许该IAM角色访问的规则,都会触发403错误。
    排查方式:进入S3控制台目标桶的「权限」标签,查看「桶策略」内容,检查是否存在与当前IAM角色冲突的规则,必要时添加允许该角色ARN访问的授权语句。

  • ARN或桶名拼写错误
    核对IAM角色策略中的桶ARN是否与实际桶名完全匹配:

    • S3桶名区分大小写,比如实际桶名为MyProductionBucket,策略中写myproductionbucket会导致匹配失败
    • 确认ARN格式正确:桶级ARN为arn:aws:s3:::实际桶名,对象级ARN为arn:aws:s3:::实际桶名/*
  • 对象ACL限制
    若桶内对象由其他AWS账户上传,或是对象ACL设置为仅允许所有者访问,即便IAM角色拥有桶级权限,也无法访问这类对象。
    排查方式:在S3控制台查看目标对象的「权限」-「访问控制列表(ACL)」,确认当前AWS账户或IAM角色是否被授予读取权限;必要时可在IAM角色策略中添加s3:GetObjectAcl权限辅助排查,或直接修改对象ACL。

  • EC2实例无法获取IAM角色凭证
    EC2实例依赖实例元数据服务(IMDS)获取IAM角色的临时访问凭证,若IMDS异常,实例将无法获取有效权限。
    排查方式:在EC2实例上执行以下命令验证:

    # 检查是否能获取关联的IAM角色名称
    curl http://169.254.169.254/latest/meta-data/iam/security-credentials/
    # 若返回角色名称,进一步获取凭证详情
    curl http://169.254.169.254/latest/meta-data/iam/security-credentials/你的角色名称
    

    同时确认实例是否启用了IMDSv2,若是则需先获取会话令牌再请求元数据。

  • 权限边界或会话策略限制
    若IAM角色设置了权限边界,或是关联角色时应用了会话策略,这些规则可能会缩小角色的实际权限范围,导致原本允许的S3操作被禁止。
    排查方式:进入IAM控制台的目标角色页面,查看「权限边界」和「信任关系」中的会话策略,确认未限制s3:ListBucket和s3:GetObject操作。

  • 验证当前凭证权限
    在EC2实例上通过AWS CLI执行以下命令,确认当前凭证是否拥有对应权限:

    # 验证桶列表权限
    aws s3 ls s3://mybucketname
    # 验证对象读取权限
    aws s3 cp s3://mybucketname/某个测试对象 .
    

    若命令报错,可添加--debug参数查看详细的权限判定日志。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.09 15:05:14