我有一个 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))
另一种方法是使用调用 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方法为您处理分页。