如何从s3 api按扩展名列出对象?

st7*_*t78 7 amazon-s3

我可以通过扩展以某种方式在S3中搜索对象,而不仅仅是通过前缀?

这是我现在拥有的:

ListObjectsResponse r = s3Client.ListObjects(new Amazon.S3.Model.ListObjectsRequest()
{
    BucketName = BucketName,
    Marker = marker,
    Prefix = folder, 
    MaxKeys = 1000
});
Run Code Online (Sandbox Code Playgroud)

所以,我需要在我的桶中列出所有*.xls文件.

Geo*_*ord 9

我不相信这是可能的S3.

最好的解决方案是使用数据库(Sql Server,MySql,SimpleDB等)对索引进行"索引",然后对其进行查询.


nac*_*son 9

虽然我认为最好的答案是使用数据库来跟踪你的文件,我也认为这是一个令人难以置信的痛苦.我在python中使用boto3工作,这是我提出的解决方案.

它不优雅,但它会起作用.列出所有文件,然后将其过滤到代码中具有"后缀"/"扩展名"的列表.

s3_client = boto3.client('s3')
bucket = 'my-bucket'
prefix = 'my-prefix/foo/bar'
paginator = s3_client.get_paginator('list_objects_v2')
response_iterator = paginator.paginate(Bucket=bucket, Prefix=prefix)

file_names = []

for response in response_iterator:
    for object_data in response['Contents']:
        key = object_data['Key']
        if key.endswith('.json'):
            file_names.append(key)

print file_names
Run Code Online (Sandbox Code Playgroud)


alf*_*day 6

您实际上不需要单独的数据库来为您执行此操作。

S3 使您能够使用特定前缀列出存储桶中的对象。您的困境是“.xls”扩展名位于文件名的末尾,因此,前缀搜索对您没有帮助。但是,当您将文件放入存储桶时,您可以更改对象名称,以便前缀包含文件类型(例如:XLS-myfile.xls)。然后,您可以使用 S3 API listObjects 并传递“XLS”前缀。