无法访问S3 bucket的子文件夹–Python,Boto3



我有权访问S3存储桶的子文件夹,并希望使用Python和boto3访问其中的所有文件。我是S3的新手,已经读了很多文档,但还没能想出如何成功访问一个子文件夹。我知道s3不使用类似unix的目录结构,但我没有访问根bucket的权限。

如何将boto3配置为仅连接到此子文件夹?

我已经成功地使用这个AWS CLI命令将整个子文件夹下载到我的机器上:

aws s3 cp --recursive s3://s3-bucket-name/SUB_FOLDER/ /Local/Path/Where/Files/Download/To --profile my-profile

此代码:

AWS_BUCKET='s3-bucket-name'
s3 = boto3.client("s3", region_name='us-east-1', aws_access_key_id=AWS_KEY_ID, aws_secret_access_key=AWS_SECRET)
response = s3.list_objects(Bucket=AWS_BUCKET)

返回此错误:

botocore.exceptions.ClientError: An error occurred (AccessDenied) when calling the ListObjects operation: Access Denied

我还尝试在对list_objects的调用中指定"prefix"选项,但这会产生相同的错误。

如果要aws configure并保存您的凭据和区域,那么使用boto3非常简单。

使用boto3.resource并获得如下客户端:

s3_resource = boto3.resource('s3')
s3_client   = s3_resource.meta.client
s3_client.list_objects(Bucket=AWS_BUCKET)

你应该准备好了。

最新更新