我试图获取按文件上传时间排序的所有文件内容,我有以下代码:
keys = []
kwargs = {'Bucket': 'my_bucket'}
while True:
resp = s3.list_objects_v2(**kwargs)
for obj in resp['Contents']:
keys.append(obj['Key'])
try:
kwargs['ContinuationToken'] = resp['NextContinuationToken']
except KeyError:
break
但它只返回给我 key ...
如果我这样做:
keys.append(obj)
它返回给我一个字典,但我不知道如何在正常运行时获取文件内容......我错过了什么?
最佳答案
通常,当您尝试遍历 S3 存储桶上的所有文件时,您会遇到性能问题。 我建议添加 S3 事件并通过队列 (SQS) 通知“监听器”新文件。 因此,一旦您复制新文件,就会将新消息发送到 SQS(因为我们创建了 S3 事件),然后客户端将使用 SQS 队列并对挂起的文件执行适当的操作。这比一遍又一遍地遍历整个 S3 存储桶要快得多。 以下是更多信息的链接:https://docs.aws.amazon.com/AmazonS3/latest/dev/NotificationHowTo.html
另一个解决方案是在 Amazon Athena 的帮助下分析您的 S3 存储桶。 https://aws.amazon.com/athena/
我希望您会发现这很有用。
关于python - 尝试使用python读取s3内容中按时间排序的所有文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54844664/