这通常是由于没有正确配置S3 Bucket的访问策略而引起的。您需要检查您的AWS S3 Bucket的访问控制列表(ACL)和Bucket策略。一般情况下,您需要确保您的策略允许您列出对象。
以下是一些示例代码,可以帮助您解决此错误(假设您正在使用Python的Boto3库):
import boto3
# 创建S3资源
s3 = boto3.resource('s3')
# 指定Bucket名称
bucket_name = 'your_bucket_name'
# 获取Bucket ACL
acl = s3.BucketAcl(bucket_name).grants
# 输出ACL以检查是否存在“LIST”许可
print(acl)
# 获取Bucket策略
bucket_policy = s3.BucketPolicy(bucket_name).policy
# 输出Bucket策略以检查是否存在“list”或“ListBucket”操作
print(bucket_policy)
如果您发现上面的代码没有找到“List”操作,则可以通过以下方式更新Bucket策略:
# 指定您的Bucket名称和AWS账户ID
policy = {
"Version": "2012-10-17",
"Statement": [
{
"Sid": "ListBucket",
"Effect": "Allow",
"Principal": {
"AWS": "arn:aws:iam::123456789012:user/your_username"
},
"Action": "s3:ListBucket",
"Resource": "arn:aws:s3:::your_bucket_name"
},
{
"Sid": "AllObjectActions",
"Effect": "Allow",
"Principal": {
"AWS": "arn:aws:iam::123456789012:user/your_username"
},
"Action": "s3:*Object",
"Resource": "arn:aws:s3:::your_bucket_name/*"
}
]
}
# 更新Bucket策略
s3.BucketPolicy(bucket_name).put(Policy=json.dumps(policy))
请注意,上述代码中的“your_username”和“123456789012”应替换为您自己的AWS信息。此外,请确保您已经授予了所需的IAM权限,以便访问S3 Bucket。