基于模式从 S3 返回文件的更快方法

问题描述 投票:0回答:1

我有一个 S3 存储桶,我只想根据模式返回文件。存储桶中的所有文件的文件名中都有与其关联的日期。例如文件名是

2023-10-18-edewj324lkj-34-sdf.ndjson
。我有一个返回我需要的文件的代码,但我想知道是否有更好的方法或更快的方法。返回 2400 个文件大约需要 4 分 30 秒。

我正在使用 AWS Glue

def findMissingFiles(bucket, curated_bucket, prefix, pattern):
    paginator = s3.get_paginator('list_objects_v2')
    pages = paginator.paginate(Bucket = bucket, Prefix = prefix)
    TotalFilesInSrcBucket = set()
    for page in pages:
        for obj in page['Contents']:
            key = str(obj['Key'])
            if pattern in key:
                TotalFilesInSrcBucket.add(obj['Key'])
    print('Total files in Src Bucket -> ', len(TotalFilesInSrcBucket))
python amazon-web-services amazon-s3 aws-glue
1个回答
0
投票

另一种方法是使用调用 S3 的 resource 方法:

import boto3

s3 = boto3.resource('s3')
objects = s3.Bucket('name').objects.filter(Prefix='string')

for object in objects:
    if pattern in key:
        TotalFilesInSrcBucket.add(object.key)

resource方法为您处理分页。

请参阅:Bucket - Boto3 文档

© www.soinside.com 2019 - 2024. All rights reserved.