私のスクリプトは動作していますが、私がスキャンしているバケットは大量になり、しばらくしてからタイムアウトします。これをより効率的にするため、または特定の場所から開始するために、私は何ができますか?AWS S3バケット内のオブジェクトの反復
import boto3
s3 = boto3.resource('s3')
b = s3.Bucket('my_bucket')
for obj in b.objects.all():
# Open the file, run some RegEx to find some data. If it's found, output to a log file
私が最初に持っている問題は、バケットのサイズです。約150万のオブジェクトです。私は自分のコードをいくつかのRegExを探しているテキストファイルを開き、RegExに一致するものがあればそれはObject名と何が見つかったのかを出力します。
程度時間スクリプトを実行した後、それがエラーをスローする前には約40Kのオブジェクト行いますので、
requests.exceptions.ConnectionError: ('Connection aborted.', BadStatusLine("''",))
または
object at 0x109e82d50>: Failed to establish a new connection: [Errno 60] Operation timed out',))
それが通じ検索の検索項目はアルファベット順です私たちはそれが "E"セクションを通過してからタイムアウトすると言うでしょう。私は "F"で始まるオブジェクトで始めることを望みます。
パフォーマンスに関する考慮事項:http://docs.aws.amazon.com/AmazonS3/latest/dev/request-rate-perf-considerations.html – jarmod
Amazon Athenaを試しましたか?これは、S3の大規模データセットを迅速に分析するためのものです。https://aws.amazon.com/athena/ –