Kopieren umfangreicher CSV-Daten mit Distributed Map - 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 mit Distributed Map

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 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 Größenbeschränkungen für die CSV-Datei und zur Angabe der Kopfzeile finden Sie unterCSV-Datei 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 AWS-Konto und AWS-Region Ihrem Zustandsmaschine befinden.

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 Select (Auswählen). Dadurch wird Workflow Studio in geöffnetEntwurfsmodus.

  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 Aktion „API AWS Lambda aufrufen“ und legen Sie sie im Status Prozessdaten ab.

  7. Benennen Sie den Status „AWS Lambda Aufrufen“ in um. Process CSV data

Schritt 2: Konfigurieren Sie die erforderlichen Felder für den Kartenstatus

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 AWS-Konto und AWS-Region wie Ihr Zustandsmaschine befindet. 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 CSV-Datei 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. z. B. sourceBucket.

      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. z. B. csvDataset/ratings.csv.

    4. Bei CSV-Dateien müssen Sie auch den Speicherort der Spaltenüberschrift angeben. Wählen Sie dazu Zusätzliche Konfiguration und behalten Sie dann für Speicherort der CSV-Überschrift die Standardauswahl Erste Zeile bei, wenn die erste Zeile Ihrer CSV-Datei die Kopfzeile ist. Wählen Sie andernfalls Given aus, 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. z. B. mapOutputs.

    3. Geben Sie unter Präfix den Namen des Ordners ein, in dem Sie die Ergebnisse speichern möchten. z. B. 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 aus. 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 aus ItemSelector, um eine benutzerdefinierte JSON-Eingabe für jede untergeordnete Workflow-Ausführung 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.

  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 sich Ihre Lambda-Funktion unter derselben befindet AWS-Region wie 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 16.x aus.

    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. Um den ARN zu kopieren, klicken Sie auf copy Amazon Resource Name . Im Folgenden finden Sie ein Beispiel für einen ARN:

      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 den ARN der Lambda-Funktion hinzuzufügen.

  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 CSV-Daten verarbeiten aus 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 den ARN der Lambda-Funktion ein.

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 Inspector Fenster „Definition“ aus und sehen Sie sich die State-Machine-Definition an.

    Tipp

    Sie können die ASL-Definition auch im Code-Editor Workflow Studio anzeigen. 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": "sourceBucket", "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 Principals 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) Um Ihre Ausführung zu identifizieren, können Sie im Feld Name einen Namen dafür angeben. Standardmäßig generiert Step Functions automatisch einen eindeutigen Ausführungsnamen.

      Anmerkung

      Mit Step Functions können Sie Namen für Zustandsmaschinen, Ausführungen, Aktivitäten und Labels erstellen, die Nicht-ASCII-Zeichen enthalten. Diese Nicht-ASCII-Namen funktionieren nicht mit Amazon. CloudWatch Um sicherzustellen, dass Sie CloudWatch Messwerte verfolgen können, wählen Sie einen Namen, der nur ASCII-Zeichen verwendet.

    2. (Optional) Geben Sie in das 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 Schrittdetails 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 unterSeite mit Ausführungsdetails – Schnittstellenübersicht.

    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 unterUntersuchen der Kartenausführung.