首页 > 解决方案 > 连接到 s3 中的特定路径

问题描述

我正在尝试使用 python 示例连接到 s3 中的特定文件夹:s3://main_folder/sub_folder1/sub_folder2/

# want to enter sub_folder2 - s3://main_folder/sub_folder1/sub_folder2/
import boto3

def connect_to_s3():
    s3_cli = boto3.resourse('s3')
    bucket = s3_cli.Bucket('sub_folder2')
    for b in bucket.objects.all():
        print(b.key)

我收到此错误:

raise error_class(parsed_response, operation_name) botocore.errorfactory.NoSuchBucket:调用ListObjects操作时发生错误(NoSuchBucket):指定的bucket不存在

标签: python-3.xamazon-web-servicesamazon-s3boto3

解决方案


错误说:The specified bucket does not exist

这是因为需要Buckets3_cli.Bucket('sub_folder2')的名称,但您提供了文件夹的名称,但没有告诉它存储桶的名称。

如果您只想对存储桶的子集执行操作,可以使用 afilter和 a prefix

import boto3

def connect_to_s3():
    s3_cli = boto3.resourse('s3')
    bucket = s3_cli.Bucket('my-bucket')
    for b in bucket.objects.filter(Prefix='sub_folder1/sub_folder2/').all():
        print(b.key)

推荐阅读