【问题标题】:Enhance Python script to download Amazon S3 files created in last 24 hours增强 Python 脚本以下载过去 24 小时内创建的 Amazon S3 文件
【发布时间】:2019-01-03 22:12:27
【问题描述】:

我编写了以下 Python 脚本来将 S3 存储桶中的 ALL 文件下载到我的当前目录中:

import boto3
import botocore
import os

from boto3.session import Session

ACCESS_KEY='AWS_IAM_AccessKey'
SECRET_KEY='AWS_IAM_SecretKey'

session = Session(aws_access_key_id=ACCESS_KEY, aws_secret_access_key=SECRET_KEY)
myBucket = s3.Bucket('S3_bucketName')

for object in thamesBucket.objects.all():
      myBucket.download_file(object.key, os.path.join(os.curdir, os.path.basename(object.key)))

我想进一步增强此脚本,使其仅下拉在过去 24 小时内生成的 S3 文件(使用 Last Modified 列值?)而不是全部。

【问题讨论】:

  • 如果您的目标是获取自上次下载后添加的文件,您可以考虑使用AWS Command-Line Interface (CLI) aws s3 sync 命令。它只会复制自上次 sync 以来已更改/修改的文件。
  • 旁注:建议从不将 AWS 凭证放在源代码中。相反,将它们存储在~/.aws/credentials 文件中。 (一种简单的创建方法是使用aws configure 命令。)如果您在 Amazon EC2 实例上运行代码,则应改为为实例分配 IAM 角色,并且无需凭证文件即可自动提供凭证。

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


【解决方案1】:

这似乎有效:

from datetime import datetime, timedelta
from dateutil.tz import tzutc, UTC
import boto3

s3 = boto3.resource('s3', region_name='YOUR-REGION')
bucket = s3.Bucket('YOUR-BUCKET')

for object in bucket.objects.all():
    if object.last_modified > datetime.now(tzutc()) - timedelta(hours = 24):
        <download code here>

【讨论】:

  • 哇......你的代码就像一个魅力......非常感谢你节省了很多时间,我无法找到时间增量,但非常感谢你。从现在开始我会跟着你。
猜你喜欢
  • 2016-03-02
  • 1970-01-01
  • 2012-10-30
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-01-14
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多