我在 AWS Lambda 函数中使用 python 列出以特定 id 开头的 s3 存储桶中的键
for object in mybucket.objects.all():
file_name = os.path.basename(object.key)
match_id = file_name.split('_', 1)[0]
问题是,如果 s3 存储桶有数千个文件,则迭代效率非常低,有时 lambda 函数会超时
这是一个示例文件名
https://s3.console.aws.amazon.com/s3/object/bucket-name/012345_abc_happy.jpg
我只想迭代键名称中包含“012345”的对象
关于我如何实现这一目标的任何好的建议
这是您需要解决的方法。
S3 将所有内容存储为对象,并且没有文件夹或文件名。这一切都是为了用户的方便。
aws s3 ls s3://bucket/folder1/folder2/filenamepart --recursive
将获取与该名称匹配的所有 s3 对象名称。
import boto3
s3 = boto3.resource('s3')
my_bucket = s3.Bucket('bucketname')
for obj in my_bucket.objects.filter(Prefix='012345'):
print(obj)
为了加快列表速度,您可以并行运行多个脚本。
希望能帮助到你。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)