Python - 仅从AWS S3中提取增量文件

时间:2018-05-03 06:19:46

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

我目前正在尝试使用以下代码从AWS S3中提取数据。代码工作得很好。但是我遇到的问题是我试图每小时运行以下脚本并尝试仅提取在过去一小时内添加的增量文件。但是,以下代码每次都会从文件夹中提取所有文件。如何修改以下内容以仅提取不在LOCAL_PATH文件夹中的文件。

import boto, os
import datetime
from os import path

current_time = datetime.datetime.now().strftime("%Y-%m-%d")


LOCAL_PATH = '/Users/user/Desktop/rep'

AWS_ACCESS_KEY_ID = 'ACCESS'
AWS_SECRET_ACCESS_KEY = 'SECRET'
bucket_name = 'bucket'

# connect to the bucket
conn = boto.connect_s3(AWS_ACCESS_KEY_ID, AWS_SECRET_ACCESS_KEY)
bucket = conn.get_bucket(bucket_name)


# go through the list of files
bucket_list = bucket.list(prefix='FolderName/{}'.format(current_time))

#bucket_list = bucket.list()
for l in bucket_list:
  keyString = str(l.key)
  d = LOCAL_PATH + keyString
  try:
    l.get_contents_to_filename(d)
  except OSError:
    # check if dir exists
    if not os.path.exists(d):
      os.makedirs(d)

任何人都可以提供帮助。感谢..

1 个答案:

答案 0 :(得分:1)

如果你的要求是下载最近添加的任何文件需要下载到本地文件系统,那么每小时运行一次cron job就是老派的解决方案。

您应该尝试AWS S3 Lambda而不是每小时运行一次cron作业。做一些功课,如何设置Lambda并使用它。我认为这是设计上更好的解决方案。