Generieren Sie Testdaten mit einem AWS Glue-Job und Python - AWS Prescriptive Guidance

Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.

Generieren Sie Testdaten mit einem AWS Glue-Job und Python

Erstellt von Moinul Al-Mamun () AWS

Umwelt: Produktion

Technologien: Analytik CloudNative; Datenseen; Serverlos DevelopmentAndTesting; Große Datenmengen

AWSDienste: AWS Glue; Amazon S3

Übersicht

Dieses Muster zeigt Ihnen, wie Sie schnell und einfach Millionen von Beispieldateien gleichzeitig generieren können, indem Sie einen in Python geschriebenen AWS Glue-Job erstellen. Die Beispieldateien werden in einem Amazon Simple Storage Service (Amazon S3) -Bucket gespeichert. Die Fähigkeit, schnell eine große Anzahl von Beispieldateien zu generieren, ist wichtig für das Testen oder Evaluieren von Diensten in der AWS Cloud. Sie können beispielsweise die Leistung von AWS Glue Studio- oder AWS DataBrew Glue-Jobs testen, indem Sie Datenanalysen für Millionen kleiner Dateien in einem Amazon S3 S3-Präfix durchführen.

Sie können zwar andere AWS Dienste verwenden, um Beispieldatensätze zu generieren, wir empfehlen jedoch, AWS Glue zu verwenden. Sie müssen keine Infrastruktur verwalten, da AWS Glue ein serverloser Datenverarbeitungsdienst ist. Sie können einfach Ihren Code mitbringen und ihn in einem AWS Glue-Cluster ausführen. Darüber hinaus stellt AWS Glue die Ressourcen bereit, konfiguriert und skaliert sie, die für die Ausführung Ihrer Jobs erforderlich sind. Sie zahlen nur für die Ressourcen, die Ihre Jobs während der Ausführung verbrauchen.

Voraussetzungen und Einschränkungen

Voraussetzungen

  • Ein aktives AWS Konto

  • AWSBefehlszeilenschnittstelle (AWSCLI), installiert und konfiguriert, um mit dem AWS Konto zu arbeiten

Versionen der Produkte

  • Python 3.9

  • AWSCLIVersion 2

Einschränkungen

Die maximale Anzahl von AWS Glue-Jobs pro Trigger ist 50. Weitere Informationen finden Sie unter AWSGlue-Endpunkte und Kontingente.

Architektur

Das folgende Diagramm zeigt eine Beispielarchitektur, in deren Mittelpunkt ein AWS Glue-Job steht, der seine Ausgabe (d. h. Beispieldateien) in einen S3-Bucket schreibt.

Der Workflow zeigt, dass der AWS CLI AWS Glue-Job initiiert wird, der die Ausgabe in den S3-Bucket schreibt.

Das Diagramm umfasst den folgenden Arbeitsablauf:

  1. Sie verwenden die AWS CLI AWS Management Console oder an, API um den AWS Glue-Job zu initiieren. APIMit AWS CLI oder können Sie die Parallelisierung des aufgerufenen Jobs automatisieren und die Laufzeit für die Generierung von Beispieldateien reduzieren.

  2. Der AWS Glue-Job generiert Dateiinhalte nach dem Zufallsprinzip, konvertiert den Inhalt in ein CSV Format und speichert den Inhalt dann als Amazon S3 S3-Objekt unter einem gemeinsamen Präfix. Jede Datei ist kleiner als ein Kilobyte. Der AWS Glue-Job akzeptiert zwei benutzerdefinierte Auftragsparameter: START_RANGE undEND_RANGE. Sie können diese Parameter verwenden, um Dateinamen und die Anzahl der Dateien festzulegen, die in Amazon S3 bei jeder Auftragsausführung generiert werden. Sie können mehrere Instanzen dieses Jobs parallel ausführen (z. B. 100 Instanzen).

Tools

  • Amazon Simple Storage Service (Amazon S3) ist ein cloudbasierter Objektspeicherservice, der Sie beim Speichern, Schützen und Abrufen beliebiger Datenmengen unterstützt.

  • AWSCommand Line Interface (AWSCLI) ist ein Open-Source-Tool, mit dem Sie mithilfe von Befehlen in Ihrer Befehlszeilen-Shell mit AWS Diensten interagieren können.

  • AWSGlue ist ein vollständig verwalteter Dienst zum Extrahieren, Transformieren und Laden (ETL). Er hilft Ihnen dabei, Daten zuverlässig zu kategorisieren, zu bereinigen, anzureichern und zwischen Datenspeichern und Datenströmen zu verschieben.

  • AWSMit Identity and Access Management (IAM) können Sie den Zugriff auf Ihre AWS Ressourcen sicher verwalten, indem Sie kontrollieren, wer authentifiziert und autorisiert ist, diese zu verwenden.

Bewährte Methoden

Beachten Sie bei der Implementierung dieses Musters die folgenden Best Practices für AWS Glue:

  • Verwenden Sie den richtigen AWS Kleberarbeitertyp, um die Kosten zu senken. Wir empfehlen Ihnen, sich mit den verschiedenen Eigenschaften von Workertypen vertraut zu machen und dann anhand CPU der Speicheranforderungen den richtigen Workertyp für Ihre Arbeitslast auszuwählen. Für dieses Muster empfehlen wir, einen Python-Shell-Job als Jobtyp zu verwenden, um die Kosten zu minimieren DPU und zu reduzieren. Weitere Informationen finden Sie unter Hinzufügen von Jobs in AWS Glue im AWS Glue Developer Guide.

  • Verwenden Sie das richtige Parallelitätslimit, um Ihren Job zu skalieren. Wir empfehlen Ihnen, die maximale Parallelität Ihres AWS Glue-Jobs von Ihrem Zeitbedarf und der benötigten Anzahl von Dateien abhängig zu machen.

  • Generieren Sie zunächst eine kleine Anzahl von Dateien. Um Kosten und Zeit beim Erstellen Ihrer AWS Glue-Jobs zu sparen, beginnen Sie mit einer kleinen Anzahl von Dateien (z. B. 1.000). Dies kann die Fehlerbehebung erleichtern. Wenn das Generieren einer kleinen Anzahl von Dateien erfolgreich ist, können Sie auf eine größere Anzahl von Dateien skalieren.

  • Führen Sie es zuerst lokal aus. Um Kosten zu senken und Zeit beim Erstellen Ihrer AWS Glue-Jobs zu sparen, starten Sie die Entwicklung lokal und testen Sie Ihren Code. Anweisungen zum Einrichten eines Docker-Containers, mit dem Sie AWS Glue-Jobs zum Extrahieren, Transformieren und Laden (ETL) sowohl in einer Shell als auch in einer integrierten Entwicklungsumgebung (IDE) schreiben können, finden Sie im Beitrag Developing AWS ETL Glue-Jobs lokal mithilfe eines Containers im AWS Big Data-Blog.

Weitere Best Practices für AWS Glue finden Sie unter Best Practices in der AWS Glue-Dokumentation.

Epen

AufgabeBeschreibungErforderliche Fähigkeiten

Erstellen Sie einen S3-Bucket zum Speichern der Dateien.

Erstellen Sie einen S3-Bucket und ein darin enthaltenes Präfix.

Hinweis: In diesem Muster wird der s3://{your-s3-bucket-name}/small-files/ Standort zu Demonstrationszwecken verwendet.

App-Developer

Erstellen und konfigurieren Sie eine IAM Rolle.

Sie müssen eine IAM Rolle erstellen, die Ihr AWS Glue-Job verwenden kann, um in Ihren S3-Bucket zu schreiben.

  1. Erstellen Sie eine IAMRolle (z. B. aufgerufen"AWSGlueServiceRole-smallfiles").

  2. Wählen Sie AWS Glue als vertrauenswürdige Entität der Richtlinie aus.

  3. Hängen Sie der Rolle eine AWSverwaltete Richtlinie "AWSGlueServiceRole" an, die aufgerufen wird.

  4. Erstellen Sie eine Inline-Richtlinie oder eine vom Kunden verwaltete Richtlinie, die auf der "s3-small-file-access" Grundlage der folgenden Konfiguration aufgerufen wird. "{bucket}"Ersetzen Sie es durch Ihren Bucket-Namen.

    { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "s3:GetObject", "s3:PutObject" ], "Resource": [ "arn:aws:s3:::{bucket}/small-files/input/*" ] } ] }
  5. Hängen Sie die "s3-small-file-access" Richtlinie an Ihre Rolle an.

App-Developer
AufgabeBeschreibungErforderliche Fähigkeiten

Erstellen Sie einen AWS Glue-Job.

Sie müssen einen AWS Glue-Job erstellen, der Ihre Inhalte generiert und in einem S3-Bucket speichert.

Erstellen Sie einen AWSGlue-Job und konfigurieren Sie dann Ihren Job, indem Sie die folgenden Schritte ausführen:

  1. Melden Sie sich bei der AWS Management Console an und öffnen Sie die AWSGlue-Konsole.

  2. Wählen Sie im Navigationsbereich unter Datenintegration die ETL Option Jobs aus.

  3. Wählen Sie im Abschnitt Job erstellen die Option Python-Shell-Skripteditor aus.

  4. Wählen Sie im Abschnitt Optionen die Option Neues Skript mit Standardcode erstellen und dann Erstellen aus.

  5. Wählen Sie Jobdetails.

  6. Geben Sie als Namen create_small_files ein.

  7. Wählen Sie unter IAMRolle die Rolle aus, die Sie zuvor IAM erstellt haben.

  8. Wählen Sie im Abschnitt Dieser Job wird ausgeführt die Option Ein neues Skript, das von Ihnen erstellt werden soll aus.

  9. Erweitern Sie Erweiterte Eigenschaften.

  10. Geben Sie zu Demonstrationszwecken für Maximale Parallelität den Wert 100 ein. Hinweis: Die maximale Parallelität definiert, wie viele Instanzen des Jobs Sie parallel ausführen können.

  11. Wählen Sie Save (Speichern) aus.

App-Developer

Aktualisieren Sie den Jobcode.

  1. Öffnen Sie die AWSGlue-Konsole.

  2. Wählen Sie im Navigationsbereich die Option Jobs (Aufträge) aus.

  3. Wählen Sie im Bereich Ihre Jobs den Job aus, den Sie zuvor erstellt haben.

  4. Wählen Sie die Registerkarte Skript und aktualisieren Sie dann das Skript auf der Grundlage des folgenden Codes. Aktualisieren Sie die text_str Variablen BUCKET_NAMEPREFIX, und mit Ihren Werten.

    from awsglue.utils import getResolvedOptions import sys import boto3 from random import randrange # Two arguments args = getResolvedOptions(sys.argv, ['START_RANGE', 'END_RANGE']) START_RANGE = int(args['START_RANGE']) END_RANGE = int(args['END_RANGE']) BUCKET_NAME = '{BUCKET_NAME}' PREFIX = 'small-files/input/' s3 = boto3.resource('s3') for x in range(START_RANGE, END_RANGE): # generate file name file_name = f"input_{x}.txt" # generate text text_str = str(randrange(100000))+","+str(randrange(100000))+", " + str(randrange(10000000)) + "," + str(randrange(10000)) # write in s3 s3.Object(BUCKET_NAME, PREFIX + file_name).put(Body=text_str)
  5. Wählen Sie Save (Speichern) aus.

App-Developer
AufgabeBeschreibungErforderliche Fähigkeiten

Führen Sie den AWS Glue-Job von der Befehlszeile aus.

Um Ihren AWS Glue-Job vom auszuführen AWSCLI, führen Sie den folgenden Befehl mit Ihren Werten aus:

cmd:~$ aws glue start-job-run --job-name create_small_files --arguments '{"--START_RANGE":"0","--END_RANGE":"1000000"}' cmd:~$ aws glue start-job-run --job-name create_small_files --arguments '{"--START_RANGE":"1000000","--END_RANGE":"2000000"}'

Hinweis: Anweisungen zum Ausführen des AWS Glue-Jobs von der AWS Management Console aus finden Sie in der Geschichte Run the AWS Glue-Job in der AWS Management Console in diesem Muster.

Tipp: Wir empfehlen die Verwendung von AWSCLI, um AWS Glue-Jobs auszuführen, wenn Sie mehrere Ausführungen gleichzeitig mit unterschiedlichen Parametern ausführen möchten, wie im obigen Beispiel gezeigt.

Um alle AWS CLI Befehle zu generieren, die zum Generieren einer definierten Anzahl von Dateien unter Verwendung eines bestimmten Parallelisierungsfaktors erforderlich sind, führen Sie den folgenden Bash-Code aus (unter Verwendung Ihrer Werte):

# define parameters NUMBER_OF_FILES=10000000; PARALLELIZATION=50; # initialize _SB=0; # generate commands for i in $(seq 1 $PARALLELIZATION); do echo aws glue start-job-run --job-name create_small_files --arguments "'"'{"--START_RANGE":"'$(((NUMBER_OF_FILES/PARALLELIZATION) * (i-1) + _SB))'","--END_RANGE":"'$(((NUMBER_OF_FILES/PARALLELIZATION) * (i)))'"}'"'"; _SB=1; done

Wenn Sie das obige Skript verwenden, sollten Sie Folgendes beachten:

  • Das Skript vereinfacht das Aufrufen und Generieren kleiner Dateien in großem Maßstab.

  • Aktualisiere NUMBER_OF_FILES und PARALLELIZATION mit deinen Werten.

  • Das obige Skript druckt eine Liste von Befehlen, die Sie ausführen müssen. Kopieren Sie diese Ausgabebefehle und führen Sie sie dann in Ihrem Terminal aus.

  • Wenn Sie die Befehle direkt aus dem Skript heraus ausführen möchten, entfernen Sie die echo Anweisung in Zeile 11.

Hinweis: Ein Beispiel für die Ausgabe des obigen Skripts finden Sie unter Shell-Skriptausgabe im Abschnitt Zusätzliche Informationen dieses Musters.

App-Developer

Führen Sie den AWS Glue-Job in der AWS Management Console aus.

  1. Melden Sie sich bei der AWS Management Console an und öffnen Sie die AWSGlue-Konsole.

  2. Wählen Sie im Navigationsbereich unter Datenintegration die ETL Option Jobs aus.

  3. Wählen Sie im Bereich Ihre Jobs Ihren Job aus.

  4. Aktualisieren Sie im Abschnitt Parameter (optional) Ihre Parameter.

  5. Wählen Sie Aktion und dann Job ausführen aus.

  6. Wiederholen Sie die Schritte 3 bis 5 so oft Sie möchten. Um beispielsweise 10 Millionen Dateien zu erstellen, wiederholen Sie diesen Vorgang zehnmal.

App-Developer

Überprüfen Sie den Status Ihres AWS Glue-Jobs.

  1. Öffnen Sie die AWSGlue-Konsole.

  2. Wählen Sie im Navigationsbereich die Option Jobs (Aufträge) aus.

  3. Wählen Sie im Bereich Ihre Jobs den Job aus, den Sie zuvor erstellt haben (d. h.create_small_files).

  4. Informationen zum Fortschritt und zur Generierung Ihrer Dateien finden Sie in den Spalten Run-ID, Run Status und anderen.

App-Developer

Zugehörige Ressourcen

Referenzen

Anleitungen und Muster

Zusätzliche Informationen

Benchmarking-Test

Dieses Muster wurde verwendet, um im Rahmen eines Benchmark-Tests 10 Millionen Dateien mit unterschiedlichen Parallelisierungsparametern zu generieren. Die folgende Tabelle zeigt die Ergebnisse des Tests:

Parallelisierung

Anzahl der Dateien, die durch einen Joblauf generiert wurden

Dauer des Job

Geschwindigkeit

10

1 000 000

6 Stunden, 40 Minuten

Sehr langsam

50

200 000

80 Minuten

Mittel

100

100 000

40 Minuten

Schnell

Wenn Sie den Prozess beschleunigen möchten, können Sie in Ihrer Jobkonfiguration mehr gleichzeitige Läufe konfigurieren. Sie können die Jobkonfiguration ganz einfach an Ihre Anforderungen anpassen. Beachten Sie jedoch, dass es eine Quotenbeschränkung für den AWS Glue-Service gibt. Weitere Informationen finden Sie unter AWSGlue-Endpunkte und Kontingente.

Shell-Skriptausgabe

Das folgende Beispiel zeigt die Ausgabe des Shell-Skripts aus dem Job Run the AWS Glue über die Befehlszeile in diesem Muster.

user@MUC-1234567890 MINGW64 ~ $ # define parameters NUMBER_OF_FILES=10000000; PARALLELIZATION=50; # initialize _SB=0; # generate commands for i in $(seq 1 $PARALLELIZATION); do echo aws glue start-job-run --job-name create_small_files --arguments "'"'{"--START_RANGE":"'$(((NUMBER_OF_FILES/PARALLELIZATION) (i-1) + SB))'","--ENDRANGE":"'$(((NUMBER_OF_FILES/PARALLELIZATION) (i)))'"}'"'"; _SB=1; done aws glue start-job-run --job-name create_small_files --arguments '{"--START_RANGE":"0","--END_RANGE":"200000"}' aws glue start-job-run --job-name create_small_files --arguments '{"--START_RANGE":"200001","--END_RANGE":"400000"}' aws glue start-job-run --job-name create_small_files --arguments '{"--START_RANGE":"400001","--END_RANGE":"600000"}' aws glue start-job-run --job-name create_small_files --arguments '{"--START_RANGE":"600001","--END_RANGE":"800000"}' aws glue start-job-run --job-name create_small_files --arguments '{"--START_RANGE":"800001","--END_RANGE":"1000000"}' aws glue start-job-run --job-name create_small_files --arguments '{"--START_RANGE":"1000001","--END_RANGE":"1200000"}' aws glue start-job-run --job-name create_small_files --arguments '{"--START_RANGE":"1200001","--END_RANGE":"1400000"}' aws glue start-job-run --job-name create_small_files --arguments '{"--START_RANGE":"1400001","--END_RANGE":"1600000"}' aws glue start-job-run --job-name create_small_files --arguments '{"--START_RANGE":"1600001","--END_RANGE":"1800000"}' aws glue start-job-run --job-name create_small_files --arguments '{"--START_RANGE":"1800001","--END_RANGE":"2000000"}' aws glue start-job-run --job-name create_small_files --arguments '{"--START_RANGE":"2000001","--END_RANGE":"2200000"}' aws glue start-job-run --job-name create_small_files --arguments '{"--START_RANGE":"2200001","--END_RANGE":"2400000"}' aws glue start-job-run --job-name create_small_files --arguments '{"--START_RANGE":"2400001","--END_RANGE":"2600000"}' aws glue start-job-run --job-name create_small_files --arguments '{"--START_RANGE":"2600001","--END_RANGE":"2800000"}' aws glue start-job-run --job-name create_small_files --arguments '{"--START_RANGE":"2800001","--END_RANGE":"3000000"}' aws glue start-job-run --job-name create_small_files --arguments '{"--START_RANGE":"3000001","--END_RANGE":"3200000"}' aws glue start-job-run --job-name create_small_files --arguments '{"--START_RANGE":"3200001","--END_RANGE":"3400000"}' aws glue start-job-run --job-name create_small_files --arguments '{"--START_RANGE":"3400001","--END_RANGE":"3600000"}' aws glue start-job-run --job-name create_small_files --arguments '{"--START_RANGE":"3600001","--END_RANGE":"3800000"}' aws glue start-job-run --job-name create_small_files --arguments '{"--START_RANGE":"3800001","--END_RANGE":"4000000"}' aws glue start-job-run --job-name create_small_files --arguments '{"--START_RANGE":"4000001","--END_RANGE":"4200000"}' aws glue start-job-run --job-name create_small_files --arguments '{"--START_RANGE":"4200001","--END_RANGE":"4400000"}' aws glue start-job-run --job-name create_small_files --arguments '{"--START_RANGE":"4400001","--END_RANGE":"4600000"}' aws glue start-job-run --job-name create_small_files --arguments '{"--START_RANGE":"4600001","--END_RANGE":"4800000"}' aws glue start-job-run --job-name create_small_files --arguments '{"--START_RANGE":"4800001","--END_RANGE":"5000000"}' aws glue start-job-run --job-name create_small_files --arguments '{"--START_RANGE":"5000001","--END_RANGE":"5200000"}' aws glue start-job-run --job-name create_small_files --arguments '{"--START_RANGE":"5200001","--END_RANGE":"5400000"}' aws glue start-job-run --job-name create_small_files --arguments '{"--START_RANGE":"5400001","--END_RANGE":"5600000"}' aws glue start-job-run --job-name create_small_files --arguments '{"--START_RANGE":"5600001","--END_RANGE":"5800000"}' aws glue start-job-run --job-name create_small_files --arguments '{"--START_RANGE":"5800001","--END_RANGE":"6000000"}' aws glue start-job-run --job-name create_small_files --arguments '{"--START_RANGE":"6000001","--END_RANGE":"6200000"}' aws glue start-job-run --job-name create_small_files --arguments '{"--START_RANGE":"6200001","--END_RANGE":"6400000"}' aws glue start-job-run --job-name create_small_files --arguments '{"--START_RANGE":"6400001","--END_RANGE":"6600000"}' aws glue start-job-run --job-name create_small_files --arguments '{"--START_RANGE":"6600001","--END_RANGE":"6800000"}' aws glue start-job-run --job-name create_small_files --arguments '{"--START_RANGE":"6800001","--END_RANGE":"7000000"}' aws glue start-job-run --job-name create_small_files --arguments '{"--START_RANGE":"7000001","--END_RANGE":"7200000"}' aws glue start-job-run --job-name create_small_files --arguments '{"--START_RANGE":"7200001","--END_RANGE":"7400000"}' aws glue start-job-run --job-name create_small_files --arguments '{"--START_RANGE":"7400001","--END_RANGE":"7600000"}' aws glue start-job-run --job-name create_small_files --arguments '{"--START_RANGE":"7600001","--END_RANGE":"7800000"}' aws glue start-job-run --job-name create_small_files --arguments '{"--START_RANGE":"7800001","--END_RANGE":"8000000"}' aws glue start-job-run --job-name create_small_files --arguments '{"--START_RANGE":"8000001","--END_RANGE":"8200000"}' aws glue start-job-run --job-name create_small_files --arguments '{"--START_RANGE":"8200001","--END_RANGE":"8400000"}' aws glue start-job-run --job-name create_small_files --arguments '{"--START_RANGE":"8400001","--END_RANGE":"8600000"}' aws glue start-job-run --job-name create_small_files --arguments '{"--START_RANGE":"8600001","--END_RANGE":"8800000"}' aws glue start-job-run --job-name create_small_files --arguments '{"--START_RANGE":"8800001","--END_RANGE":"9000000"}' aws glue start-job-run --job-name create_small_files --arguments '{"--START_RANGE":"9000001","--END_RANGE":"9200000"}' aws glue start-job-run --job-name create_small_files --arguments '{"--START_RANGE":"9200001","--END_RANGE":"9400000"}' aws glue start-job-run --job-name create_small_files --arguments '{"--START_RANGE":"9400001","--END_RANGE":"9600000"}' aws glue start-job-run --job-name create_small_files --arguments '{"--START_RANGE":"9600001","--END_RANGE":"9800000"}' aws glue start-job-run --job-name create_small_files --arguments '{"--START_RANGE":"9800001","--END_RANGE":"10000000"}' user@MUC-1234567890 MINGW64 ~

FAQ

Wie viele gleichzeitige Läufe oder parallel Jobs sollte ich verwenden?

Die Anzahl der gleichzeitigen Läufe und parallel Jobs hängt von Ihrem Zeitbedarf und der gewünschten Anzahl von Testdateien ab. Wir empfehlen Ihnen, die Größe der Dateien, die Sie erstellen, zu überprüfen. Prüfen Sie zunächst, wie viel Zeit ein AWS Glue-Job benötigt, um die gewünschte Anzahl von Dateien zu generieren. Verwenden Sie dann die richtige Anzahl gleichzeitiger Läufe, um Ihre Ziele zu erreichen. Wenn Sie beispielsweise davon ausgehen, dass 100.000 Dateien 40 Minuten benötigen, um den Lauf abzuschließen, Ihre Zielzeit jedoch 30 Minuten beträgt, müssen Sie die Parallelitätseinstellung für Ihren AWS Glue-Job erhöhen.

Welche Art von Inhalt kann ich mit diesem Muster erstellen?

Sie können jede Art von Inhalt erstellen, z. B. Textdateien mit unterschiedlichen Trennzeichen (z. B. PIPEJSON, oderCSV). Dieses Muster verwendet Boto3, um in eine Datei zu schreiben, und speichert die Datei dann in einem S3-Bucket.

Welche IAM Berechtigungsstufe benötige ich für den S3-Bucket?

Sie benötigen eine identitätsbasierte Richtlinie, die den Write Zugriff auf Objekte in Ihrem S3-Bucket ermöglicht. Weitere Informationen finden Sie unter Amazon S3: Erlaubt Lese- und Schreibzugriff auf Objekte in einem S3-Bucket in der Amazon S3 S3-Dokumentation.