Kopieren umfangreicher CSV Daten mithilfe von Distributed Map in Step Functions - AWS Step Functions

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.

Kopieren umfangreicher CSV Daten mithilfe von Distributed Map in Step Functions

Dieses Tutorial hilft Ihnen beim Einstieg in die Verwendung des Map Status im verteilten Modus. Ein Map Status, der auf Verteilt gesetzt ist, wird als Distributed-Map-Status bezeichnet. Sie verwenden den Status Distributed Map in Ihren Workflows, um über umfangreiche Amazon S3 S3-Datenquellen zu iterieren. Der Map Status führt jede Iteration als untergeordnete Workflow-Ausführung aus, wodurch eine hohe Parallelität ermöglicht wird. Weitere Informationen zum verteilten Modus finden Sie unter Status im verteilten Modus zuordnen.

In diesem Tutorial verwenden Sie den Status Distributed Map, um über eine CSV Datei in einem Amazon S3 S3-Bucket zu iterieren. Anschließend geben Sie seinen Inhalt zusammen mit dem Inhalt ARN einer untergeordneten Workflow-Ausführung in einem anderen Amazon S3 S3-Bucket zurück. Sie beginnen mit der Erstellung eines Workflow-Prototyps im Workflow Studio. Als Nächstes setzen Sie den Verarbeitungsmodus des Map Status auf Verteilt, geben die CSV Datei als Datensatz an und geben dem Map Status ihren Speicherort an. Sie geben auch den Workflowtyp für die untergeordneten Workflow-Ausführungen an, bei denen der Status Distributed Map als Express gestartet wird.

Zusätzlich zu diesen Einstellungen geben Sie auch andere Konfigurationen an, z. B. die maximale Anzahl gleichzeitiger untergeordneter Workflow-Ausführungen und den Speicherort, an dem das Map Ergebnis exportiert werden soll, für den in diesem Tutorial verwendeten Beispiel-Workflow.

Voraussetzungen

  • Laden Sie eine CSV Datei in einen Amazon S3 S3-Bucket hoch. Sie müssen eine Kopfzeile in Ihrer CSV Datei definieren. Informationen zu den für die CSV Datei geltenden Größenbeschränkungen und zur Angabe der Kopfzeile finden Sie unterCSVDatei in einem Amazon S3 S3-Bucket.

  • Erstellen Sie einen weiteren Amazon S3 S3-Bucket und einen Ordner innerhalb dieses Buckets, in den das Map Statusergebnis exportiert werden soll.

Wichtig

Stellen Sie sicher, dass sich Ihre Amazon S3 S3-Buckets unter demselben befinden AWS-Konto and AWS-Region als Ihre Zustandsmaschine.

Schritt 1: Erstellen Sie den Workflow-Prototyp

In diesem Schritt erstellen Sie den Prototyp für Ihren Workflow mit Workflow Studio. Workflow Studio ist ein visueller Workflow-Designer, der in der Step Functions-Konsole verfügbar ist. Sie wählen den erforderlichen Status und die API Aktion auf den Registerkarten Flow bzw. Aktionen aus. Sie verwenden die Drag-and-Drop-Funktion von Workflow Studio, um den Workflow-Prototyp zu erstellen.

  1. Öffnen Sie die Step Functions Functions-Konsole und wählen Sie Create State Machine.

  2. Wählen Sie im Dialogfeld Vorlage auswählen die Option Leer aus.

  3. Wählen Sie „Auswählen“, um Workflow Studio in zu öffnenEntwurfsmodus.

  4. Ziehen Sie auf der Registerkarte Flow einen Map-Status und legen Sie ihn in den leeren Status mit der Bezeichnung Drag First state here ab.

  5. Geben Process data Sie auf der Registerkarte Konfiguration als Statusname den Wert ein.

  6. Ziehen Sie auf der Registerkarte Aktionen eine AWS Lambda Rufen Sie eine API Aktion auf und legen Sie sie im Status Prozessdaten ab.

  7. Benennen Sie das um AWS Lambda Status aufrufen in. Process CSV data

Schritt 2: Konfigurieren Sie die erforderlichen Felder für Map state

In diesem Schritt konfigurieren Sie die folgenden Pflichtfelder für den Status Distributed Map:

  • ItemReader— Gibt den Datensatz und seinen Speicherort an, aus dem der Map Bundesstaat Eingaben lesen kann.

  • ItemProcessor— Gibt die folgenden Werte an:

    • ProcessorConfig— Legt die Mode Werte DISTRIBUTED und ExecutionType auf EXPRESS bzw. fest. Dadurch werden der Verarbeitungsmodus des Map Status und der Workflowtyp für untergeordnete Workflow-Ausführungen festgelegt, die mit dem Status Distributed Map gestartet werden.

    • StartAt— Der erste Status im Map-Workflow.

    • States— Definiert den Map-Workflow, bei dem es sich um eine Reihe von Schritten handelt, die bei der Ausführung jedes untergeordneten Workflows wiederholt werden müssen.

  • ResultWriter— Gibt den Amazon S3 S3-Speicherort an, an den Step Functions die Distributed Map-Zustandsergebnisse schreibt.

    Wichtig

    Stellen Sie sicher, dass sich der Amazon S3 S3-Bucket, den Sie zum Exportieren der Ergebnisse eines Map Runs verwenden, unter demselben befindet AWS-Konto and AWS-Region als Ihre Zustandsmaschine. Andernfalls schlägt die Ausführung Ihrer Zustandsmaschine mit dem States.ResultWriterFailed Fehler fehl.

Gehen Sie wie folgt vor, um die erforderlichen Felder zu konfigurieren:
  1. Wählen Sie den Status Prozessdaten und gehen Sie auf der Registerkarte Konfiguration wie folgt vor:

    1. Wählen Sie für den Verarbeitungsmodus die Option Verteilt aus.

    2. Wählen Sie als Artikelquelle Amazon S3 und wählen Sie dann CSVDatei in S3 aus der Dropdownliste S3-Artikelquelle aus.

    3. Gehen Sie wie folgt vor, um den Amazon S3 S3-Speicherort Ihrer CSV Datei anzugeben:

      1. Wählen Sie für das S3-Objekt die Option Bucket und Schlüssel eingeben aus der Drop-down-Liste aus.

      2. Geben Sie für Bucket den Namen des Amazon S3 S3-Buckets ein, der die CSV Datei enthält. Beispiel, amzn-s3-demo-source-bucket.

      3. Geben Sie für Key den Namen des Amazon S3 S3-Objekts ein, in dem Sie die CSV Datei gespeichert haben. Sie müssen in diesem Feld auch den Namen der CSV Datei angeben. Beispiel, csvDataset/ratings.csv.

    4. Bei CSV Dateien müssen Sie auch die Position der Spaltenüberschrift angeben. Wählen Sie dazu Zusätzliche Konfiguration und behalten Sie dann als Speicherort für die CSV Kopfzeile die Standardauswahl Erste Zeile bei, wenn es sich bei der ersten Zeile Ihrer CSV Datei um die Kopfzeile handelt. Andernfalls wählen Sie Given, um den Header innerhalb der State-Machine-Definition anzugeben. Weitere Informationen finden Sie unter ReaderConfig.

    5. Wählen Sie als Ausführungstyp „Kind“ die Option Express aus.

  2. Um die Map Run-Ergebnisse an einen bestimmten Amazon S3-Standort zu exportieren, wählen Sie unter Standort exportieren die Option Ausgabe des Kartenstatus nach Amazon S3 exportieren.

  3. Gehen Sie wie folgt vor:

    1. Wählen Sie für den S3-Bucket die Option Bucket-Namen und -Präfix eingeben aus der Drop-down-Liste aus.

    2. Geben Sie für Bucket den Namen des Amazon S3 S3-Buckets ein, in den Sie die Ergebnisse exportieren möchten. Beispiel, mapOutputs.

    3. Geben Sie unter Präfix den Namen des Ordners ein, in dem Sie die Ergebnisse speichern möchten. Beispiel, resultData.

Schritt 3: Konfigurieren Sie zusätzliche Optionen

Zusätzlich zu den erforderlichen Einstellungen für einen Distributed-Map-Status können Sie auch andere Optionen angeben. Dazu können die maximale Anzahl gleichzeitiger Ausführungen untergeordneter Workflows und der Speicherort gehören, an den das Map Statusergebnis exportiert werden soll.

  1. Wählen Sie den Status „Prozessdaten“. Wählen Sie dann unter Artikelquelle die Option Zusätzliche Konfiguration aus.

  2. Gehen Sie wie folgt vor:

    1. Wählen Sie Elemente ändern mit ItemSelector, um für jede untergeordnete Workflow-Ausführung eine benutzerdefinierte JSON Eingabe anzugeben.

    2. Geben Sie die folgende JSON Eingabe ein:

      { "index.$": "$$.Map.Item.Index", "value.$": "$$.Map.Item.Value" }

      Informationen zum Erstellen einer benutzerdefinierten Eingabe finden Sie unterItemSelector (Karte).

  3. Geben Sie in den Laufzeiteinstellungen für Parallelitätslimit die Anzahl gleichzeitiger untergeordneter Workflow-Ausführungen an, die der Status Distributed Map starten kann. Geben Sie z. B. ei 100.

  4. Öffnen Sie ein neues Fenster oder eine neue Registerkarte in Ihrem Browser und schließen Sie die Konfiguration der Lambda-Funktion ab, die Sie in diesem Workflow verwenden werden, wie unter erklärt. Schritt 4: Lambda-Funktion konfigurieren

Schritt 4: Lambda-Funktion konfigurieren

Wichtig

Stellen Sie sicher, dass Ihre Lambda-Funktion unter derselben steht AWS-Region als Ihre Zustandsmaschine.

  1. Öffnen Sie die Lambda-Konsole und wählen Sie Create function.

  2. Wählen Sie auf der Seite Create function die Option Author from scratch.

  3. Konfigurieren Sie im Abschnitt Grundinformationen Ihre Lambda-Funktion:

    1. Geben Sie für Function name (Funktionsname) distributedMapLambda ein.

    2. Wählen Sie unter Laufzeit die Option Node.js.

    3. Behalten Sie alle Standardauswahlen bei und wählen Sie Funktion erstellen.

    4. Nachdem Sie Ihre Lambda-Funktion erstellt haben, kopieren Sie den Amazon-Ressourcennamen (ARN) der Funktion, der in der oberen rechten Ecke der Seite angezeigt wird. Sie müssen dies in Ihrem Workflow-Prototyp angeben. Das Folgende ist ein BeispielARN:

      arn:aws:lambda:us-east-2:123456789012:function:distributedMapLambda
  4. Kopieren Sie den folgenden Code für die Lambda-Funktion und fügen Sie ihn in den Abschnitt Codequelle der distributedMapLambdaSeite ein.

    exports.handler = async function(event, context) { console.log("Received Input:\n", event); return { 'statusCode' : 200, 'inputReceived' : event //returns the input that it received } };
  5. Wählen Sie Bereitstellen. Sobald Ihre Funktion bereitgestellt ist, wählen Sie Test, um die Ausgabe Ihrer Lambda-Funktion zu sehen.

Schritt 5: Aktualisieren Sie den Workflow-Prototyp

In der Step Functions Functions-Konsole aktualisieren Sie Ihren Workflow, um die Lambda-Funktionen hinzuzufügen. ARN

  1. Kehren Sie zu der Registerkarte oder dem Fenster zurück, in dem Sie den Workflow-Prototyp erstellt haben.

  2. Wählen Sie den Schritt CSVDaten verarbeiten und gehen Sie auf der Registerkarte Konfiguration wie folgt vor:

    1. Wählen Sie als Integrationstyp die Option Optimiert aus.

    2. Beginnen Sie mit der Eingabe des Namens Ihrer Lambda-Funktion als Funktionsname. Wählen Sie die Funktion aus der angezeigten Dropdownliste aus, oder wählen Sie Funktionsnamen eingeben und geben Sie die Lambda-Funktion an. ARN

Schritt 6: Überprüfen Sie die automatisch generierte Amazon States-Sprachdefinition und speichern Sie den Workflow

Wenn Sie Status aus den Registerkarten Aktion und Ablauf per Drag-and-Drop auf die Arbeitsfläche ziehen, erstellt Workflow Studio automatisch die Amazon States-Sprachdefinition Ihres Workflows in Echtzeit. Sie können diese Definition nach Bedarf bearbeiten.

  1. (Optional) Wählen Sie im Inspektor-Panel Fenster „Definition“ aus und sehen Sie sich die State-Machine-Definition an.

    Tipp

    Sie können die ASL Definition auch in Workflow Studio anzeigen. Code-Editor Im Code-Editor können Sie auch die ASL Definition Ihres Workflows bearbeiten.

    Der folgende Beispielcode zeigt die automatisch generierte Amazon States-Sprachdefinition für Ihren Workflow.

    { "Comment": "Using Map state in Distributed mode", "StartAt": "Process data", "States": { "Process data": { "Type": "Map", "MaxConcurrency": 100, "ItemReader": { "ReaderConfig": { "InputType": "CSV", "CSVHeaderLocation": "FIRST_ROW" }, "Resource": "arn:aws:states:::s3:getObject", "Parameters": { "Bucket": "amzn-s3-demo-source-bucket", "Key": "csvDataset/ratings.csv" } }, "ItemProcessor": { "ProcessorConfig": { "Mode": "DISTRIBUTED", "ExecutionType": "EXPRESS" }, "StartAt": "Process CSV data", "States": { "Process CSV data": { "Type": "Task", "Resource": "arn:aws:states:::lambda:invoke", "OutputPath": "$.Payload", "Parameters": { "Payload.$": "$", "FunctionName": "arn:aws:lambda:us-east-2:123456789012:function:distributedMapLambda" }, "End": true } } }, "Label": "Processdata", "End": true, "ResultWriter": { "Resource": "arn:aws:states:::s3:putObject", "Parameters": { "Bucket": "mapOutputs", "Prefix": "resultData" } }, "ItemSelector": { "index.$": "$$.Map.Item.Index", "value.$": "$$.Map.Item.Value" } } } }
  2. Geben Sie einen Namen für Ihre Zustandsmaschine an. Wählen Sie dazu das Bearbeitungssymbol neben dem Standardnamen der Zustandsmaschine von MyStateMachine. Geben Sie dann unter State-Machine-Konfiguration einen Namen in das Feld State-Machine-Name ein.

    Geben Sie für dieses Tutorial den Namen DistributedMapDemo ein.

  3. (Optional) Geben Sie unter State-Machine-Konfiguration weitere Workflow-Einstellungen an, z. B. den Zustandsmaschinentyp und seine Ausführungsrolle.

    Behalten Sie für dieses Tutorial alle Standardauswahlen in der State-Machine-Konfiguration bei.

  4. Wählen Sie im Dialogfeld „Rollenerstellung bestätigen“ die Option „Bestätigen“, um fortzufahren.

    Sie können auch Rolleneinstellungen anzeigen wählen, um zur State-Machine-Konfiguration zurückzukehren.

    Anmerkung

    Wenn Sie die von Step Functions erstellte IAM Rolle löschen, kann Step Functions sie später nicht mehr neu erstellen. Ebenso kann Step Functions ihre ursprünglichen Einstellungen später nicht wiederherstellen, wenn Sie die Rolle ändern (z. B. indem Sie Step Functions aus den Prinzipalen in der IAM Richtlinie entfernen).

Schritt 7: Führen Sie die Zustandsmaschine aus

Eine Ausführung ist eine Instanz Ihrer Zustandsmaschine, in der Sie Ihren Workflow ausführen, um Aufgaben auszuführen.

  1. Wählen Sie auf der DistributedMapDemoSeite Ausführung starten aus.

  2. Gehen Sie im Dialogfeld Ausführung starten wie folgt vor:

    1. (Optional) Geben Sie einen benutzerdefinierten Ausführungsnamen ein, um den generierten Standard zu überschreiben.

      ASCIINichtnamen und Protokollierung

      Step Functions akzeptiert Namen für Zustandsmaschinen, Ausführungen, Aktivitäten und Beschriftungen, die ASCII Nichtzeichen enthalten. Da solche Zeichen nicht mit Amazon funktionieren, empfehlen wir CloudWatch, nur ASCII Zeichen zu verwenden, damit Sie die Messwerte verfolgen können CloudWatch.

    2. (Optional) Geben Sie im Eingabefeld Eingabewerte im JSON Format ein, um Ihren Workflow auszuführen.

    3. Wählen Sie Start execution (Ausführung starten) aus.

    4. Die Step Functions Functions-Konsole leitet Sie zu einer Seite weiter, die mit Ihrer Ausführungs-ID betitelt ist. Diese Seite wird als Seite mit den Ausführungsdetails bezeichnet. Auf dieser Seite können Sie die Ausführungsergebnisse im Verlauf der Ausführung oder nach deren Abschluss überprüfen.

      Um die Ausführungsergebnisse zu überprüfen, wählen Sie in der Diagrammansicht einzelne Status aus und wählen Sie dann die einzelnen Registerkarten im Einzelheiten zu den Schritten Bereich, um die Details der einzelnen Status, einschließlich Eingabe, Ausgabe und Definition, anzuzeigen. Einzelheiten zu den Ausführungsinformationen, die Sie auf der Seite mit den Ausführungsdetails einsehen können, finden Sie unterÜberblick über die Ausführungsdetails.

    Wählen Sie beispielsweise den Map Bundesstaat und anschließend „Ausführung zuordnen“, um die Seite „Kartenlaufdetails“ zu öffnen. Auf dieser Seite können Sie alle Ausführungsdetails des Status „Distributed Map“ und die damit gestarteten untergeordneten Workflow-Ausführungen anzeigen. Informationen zu dieser Seite finden Sie unterMap Runs anzeigen.