python - 尝试使用python读取s3内容中按时间排序的所有文件

标签 python python-3.x amazon-web-services amazon-s3 boto3

我试图获取按文件上传时间排序的所有文件内容,我有以下代码:

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/

相关文章:

python - Python3 变量名称的简单区别能否改变代码的运行方式?

amazon-web-services - 在资源部分映射用户数据

python - Django 无法在 AWS Elastic Beanstalk 负载均衡环境中获取用户 IP

linux - 运行 shell 脚本以 root 用户身份连接到 Oracle 时出错

python - 如何导出 Python 内置 help() 函数的输出

python - 是否有可视化大量子图(> 500)的好方法?

python - Azure Blob 存储 : Download blob with SAS token

python - 生成数字表

python - 如何使用 RE 查找字符串中的多个平衡大小匹配项?

python - Python 十六进制字符串中 0x 和\x 的含义有什么区别?