我可以通过扩展以某种方式在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文件.
虽然我认为最好的答案是使用数据库来跟踪你的文件,我也认为这是一个令人难以置信的痛苦.我在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)
您实际上不需要单独的数据库来为您执行此操作。
S3 使您能够使用特定前缀列出存储桶中的对象。您的困境是“.xls”扩展名位于文件名的末尾,因此,前缀搜索对您没有帮助。但是,当您将文件放入存储桶时,您可以更改对象名称,以便前缀包含文件类型(例如:XLS-myfile.xls)。然后,您可以使用 S3 API listObjects 并传递“XLS”前缀。
| 归档时间: |
|
| 查看次数: |
11958 次 |
| 最近记录: |