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

如何查找AWS EC2实例有权访问的关联S3存储桶?

结论

可以直接在EC2实例内部查询到该实例关联的可下载S3存储桶,具体操作方法如下:

操作步骤

方法1:通过EC2实例绑定的IAM角色权限规则查询

  • 首先获取实例关联的IAM角色名称,执行以下命令查询实例元数据:

    如果你使用的是IMDSv1(实例元数据服务v1版本):

    curl http://169.254.169.254/latest/meta-data/iam/security-credentials/
    

    如果你使用的是IMDSv2(实例元数据服务v2版本),需先获取会话令牌再查询:

    TOKEN=`curl -X PUT "http://169.254.169.254/latest/api/token" -H "X-aws-ec2-metadata-token-ttl-seconds: 21600"`
    curl -H "X-aws-ec2-metadata-token: $TOKEN" http://169.254.169.254/latest/meta-data/iam/security-credentials/
    
  • 拿到角色名后,查询该角色绑定的权限策略,筛选允许s3:GetObject动作的资源项:
    # 先查询角色绑定的托管策略
    aws iam list-attached-role-policies --role-name <你拿到的角色名>
    # 或者查询角色的内联策略
    aws iam list-role-policies --role-name <你拿到的角色名>
    
    权限策略中*允许s3:GetObject动作对应的S3桶ARN,就是该实例可下载文件的目标存储桶,其余仅配置s3:ListBucket权限的桶仅支持查看文件列表。

方法2:无IAM查询权限时的模拟校验

如果当前实例没有调用IAM接口查询策略的权限,可以通过权限模拟接口校验:

# 先获取当前实例的角色ARN
aws sts get-caller-identity
# 模拟调用s3:GetObject权限,替换<存储桶名称>为你要校验的桶名
aws iam simulate-principal-policy --policy-source-arn <你的角色ARN> --action-names s3:GetObject --resource-arns arn:aws:s3:::<存储桶名称>/*

返回结果中EvaluationDecision字段为Allowed的存储桶,就是该实例可下载文件的关联存储桶。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.05 04:06:05