使用boto3返回s3前缀中的对象列表



我有下面的boto3代码。在代码中,我试图获得一个s3前缀中的对象列表。s3前缀中对象的完整路径是:

文件路径:

s3://our_data/our_folder/part-00000-bf597559-8a11-4e6b-8631-ef7c138b4583-c000.txt

当我运行下面的代码时,它不会返回任何内容,但我可以发誓几个月前它就工作了。boto3最近有什么变化吗?或者我的代码中缺少了什么?

代码:

import boto3
s3_client = boto3.client('s3',
region_name='us-west-2')

trz_bucket = 'our_data'

trz_prefix = 'our_folder/'

result = s3_client.list_objects(Bucket=trz_bucket, Prefix=trz_prefix, Delimiter='v')
result.get('CommonPrefixes')

如果您提供Delimiter:,则会返回CommonPrefixes

list_objects(Bucket=trz_bucket, Prefix=trz_prefix, Delimiter='/')

以下是使用AWS CLI使用DelimiterCommonPrefixes的示例(其工作原理与使用boto3相同(:

$ aws s3 mb s3://test-delimiter
make_bucket: test-delimiter
$ aws s3 cp x.py s3://test-delimiter/folder1/
upload: ./x.py to s3://test-delimiter/folder1/x.py                
$ aws s3 cp x.py s3://test-delimiter/folder2/
upload: ./x.py to s3://test-delimiter/folder2/x.py                
$ aws s3api list-objects --bucket test-delimiter --delimiter '/'
{
"CommonPrefixes": [
{
"Prefix": "folder1/"
},
{
"Prefix": "folder2/"
}
]
}
$ aws s3 cp x.py s3://test-delimiter/folder1/folder3/
upload: ./x.py to s3://test-delimiter/folder1/folder3/x.py        
$ aws s3api list-objects --bucket test-delimiter --delimiter '/' --prefix folder1/
{
"Contents": [
{
"Key": "folder1/x.py",
"LastModified": "2021-06-05T07:52:35+00:00",
"ETag": ""1083f8ddcea96dd6b9d8a3a582373c71"",
"Size": 727,
"StorageClass": "STANDARD"
}
}
],
"CommonPrefixes": [
{
"Prefix": "folder1/folder3/"
}
]
}

最新更新