状況は次のとおりです。私はリモートで作業しており、ほとんどの場合、AmazonS3インスタンスにデータセットを追加しています。これらの各データセットには、非常によく似た処理タスクが必要です。これは、非常に単純なPythonで自動化できます。ただし、変更された日付を使用して、過去24時間にS3に追加されたデータセットを分離できないようです。これが私がこれまでに持っているものです:
import boto3
from boto3.session import Session
ACCESS_KEY = xxxx
SECRET_KEY = xxxx
session = Session(aws_access_key_id=ACCESS_KEY,
aws_secret_access_key=SECRET_KEY)
s3 = session.resource('s3')
s3_client = boto3.client('s3')
def get_all_s3_keys(bucket):
keys = []
kwargs = {'Bucket': bucket}
while True:
resp = s3_client.list_objects_v2(**kwargs)
for obj in resp['Contents']:
keys.append(obj['Key'])
try:
kwargs['ContinuationToken'] = resp['NextContinuationToken']
except KeyError:
break
return keys
bucket_keys = get_all_s3_keys('mybucket')
recnt_keys = [key for key in bucket_keys if 'Temp' in key]
これにより、「Temp」という単語を含む「mybucket」内のすべてのキーが返されますが、これは明らかに変更された日付の助けにはなりません。最近変更されたキーのリストを取得したら、それらを繰り返し処理して、事前に定義されたローカルパスにダウンロードできるようにしたいと思います。
何かご意見は?
ありがとう
このスニペットを試してください(すべてのアイテムを取得してからフィルタリングするだけです):
import boto3
import datetime
s3 = boto3.resource('s3')
s3_bucket = s3.Bucket('mybucket')
items = [item for item in s3_bucket.objects.filter()] # get them all
now = datetime.datetime.now(datetime.timezone.utc)
td = datetime.timedelta(hours=24)
last_24_hours_keys = [item.key for item in items if now - item.last_modified < td] # filter
HTH。
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加