Wasabi/S3-Objekt mit boto3 in Python als String/Bytes herunterladen
English
Deutsch
Man kann io.BytesIO verwenden, um den Inhalt eines S3-Objekts im Speicher zu speichern und dann in bytes umzuwandeln, die man dann zu einem str dekodieren kann. Das folgende Beispiel lädt myfile.txt in den Speicher:
example-2.py
buf = io.BytesIO()
my_bucket.download_fileobj("myfile.txt", buf)
# Dateiinhalt als Bytes abrufen
filecontent_bytes = buf.getvalue()
# ... oder in String umwandeln
filecontent_str = buf.getvalue().decode("utf-8")Vollständiges Beispiel
example-1.py
import io
# Verbindung zu Wasabi / S3 herstellen
s3 = boto3.resource('s3',
endpoint_url = 'https://s3.eu-central-1.wasabisys.com',
aws_access_key_id = 'MY_ACCESS_KEY',
aws_secret_access_key = 'MY_SECRET_KEY'
)
# Bucket-Objekt abrufen
my_bucket = s3.Bucket('boto-test')
# In Datei herunterladen
buf = io.BytesIO()
my_bucket.download_fileobj("myfile.txt", buf)
# Dateiinhalt als Bytes abrufen
filecontent_bytes = buf.getvalue()
# ... oder in String umwandeln
filecontent_str = buf.getvalue().decode("utf-8")
print(filecontent_str)Nicht vergessen, MY_ACCESS_KEY und MY_SECRET_KEY auszufüllen. Je nach Region und S3-kompatiblem Dienst muss möglicherweise eine andere Endpoint-URL anstelle von https://s3.eu-central-1.wasabisys.com verwendet werden.
If this post helped you, please consider buying me a coffee or donating via PayPal to support research & publishing of new posts on TechOverflow