it-swarm.com.de

Irgendeine Möglichkeit, Dateien direkt mit S3 in S3 zu schreiben?

Ich habe ein Python-Skript geschrieben, um sehr große Dateien (einige TB insgesamt) zu verarbeiten. Diese werden auf einer EC2-Instanz ausgeführt. Danach möchte ich die verarbeiteten Dateien in einem S3-Bucket speichern. Derzeit speichert mein Skript die Daten zuerst auf der Festplatte und lädt sie dann auf S3 hoch. Unglücklicherweise ist dies angesichts der zusätzlichen Zeit, die darauf zu warten ist, dass die Instanz zuerst auf die Festplatte schreibt und dann lädt, sehr kostspielig.

Gibt es eine Möglichkeit, boto3 zum direkten Schreiben von Dateien in einen S3-Bucket zu verwenden?

Bearbeiten: Um meine Frage zu klären, frage ich, ob ich ein Objekt im Speicher habe, das dieses Objekt direkt in S3 schreibt, ohne das Objekt zuvor auf der Festplatte zu speichern.

5
Richard Sun

Sie können dazu put_object verwenden. Übergeben Sie einfach Ihr Dateiobjekt als Körper.

Zum Beispiel:

import boto3

client = boto3.client('s3')
response = client.put_object( 
    Bucket='your-s3-bucket-name',
    Body='bytes or seekable file-like object',
    Key='Object key for which the PUT operation was initiated'
)
6
Nicholas

Es arbeitet mit der S3 put_object Methode:

key = 'filename'
response = s3.put_object(Bucket='Bucket_Name',
                         Body=json_data,
                         Key=key)
0
Abdul Rehman