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

S3:ListAllBuckets在AWS控制台可用但CLI执行报权限拒绝

问题描述

背景

已配置正确的aws-access-key和aws-secret-key,可在AWS控制台查看存储桶内容,但使用AWS CLI和boto3代码时存在问题。

我的boto3代码

import boto3

# 输入你的S3存储桶名称
bucket_name = 'xxxx'

# 输入存储桶所在的区域名称
region_name = 'ap-southeast-1'

# 创建S3客户端
s3 = boto3.client('s3', region_name=region_name)

# 列出存储桶中的所有对象
objects = s3.list_objects(Bucket=bucket_name)

# 打印所有对象的名称
for object in objects['Contents']:
    print(object['Key'])

我的AWS策略已包含s3:List*权限,但尝试使用AWS CLI列出所有存储桶时失败,报错如下:

An error occurred (AccessDenied) when calling the ListBuckets operation: Access Denied

请问我遗漏了什么配置?


解决方案
  • 权限作用范围不匹配:s3:List*如果仅授权给单个存储桶资源,无法覆盖ListBuckets操作——这个是账户级别的全局操作,必须单独指定权限,且资源要设为"*"。
  • 修正后的IAM策略示例:
{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "s3:ListBuckets",
                "s3:List*"
            ],
            "Resource": "*"
        }
    ]
}
  • 额外注意点:
    • 若只需访问特定存储桶,s3:List*可以限定到该桶的ARN(比如arn:aws:s3:::xxxx/*),但ListBuckets必须保留"*"作为资源,因为它是查询账户下所有桶的全局操作。
    • 确认IAM用户/角色已正确关联修正后的策略,避免策略未生效。
    • 检查是否存在拒绝策略(Deny),IAM中拒绝策略优先级高于允许策略,可能会覆盖你的权限配置。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.08 17:20:26