View a markdown version of this page

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

Dieses Tutorial hilft Ihnen dabei, den Map Status im verteilten Modus zu verwenden. Ein Map Status, der auf „Verteilt“ gesetzt ist, wird als Status „Verteilte Karte“ bezeichnet. Sie verwenden den Status „Verteilte Karte“ in Ihren Workflows, um über umfangreiche Amazon S3-Datenquellen hinweg zu iterieren. Der Map Status führt jede Iteration als untergeordnete Workflow-Ausführung aus, was eine hohe Parallelität ermöglicht. 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-Bucket zu iterieren. Anschließend geben Sie den Inhalt zusammen mit dem ARN einer untergeordneten Workflow-Ausführung in einem anderen Amazon 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 Bundesstaat ihren Speicherort an. Sie geben auch den Workflowtyp für die untergeordneten Workflow-Ausführungen an, deren Status „Distributed Map“ mit Express beginnt.

Zusätzlich zu diesen Einstellungen geben Sie für den in diesem Tutorial verwendeten Beispiel-Workflow 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.

Voraussetzungen

  • Laden Sie eine CSV-Datei in einen Amazon 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-Bucket und einen Ordner innerhalb dieses Buckets, in den das Map Statusergebnis exportiert werden soll.

Anforderungen an Konto und Region

Ihre Amazon S3-Buckets müssen sich im selben AWS-Konto Land AWS-Region wie Ihr State Machine befinden.

Beachten Sie, dass Ihr Zustandsmaschine zwar möglicherweise auf Dateien in Buckets zugreifen kann, die sich in verschiedenen AWS-Konten Buckets befinden AWS-Region, Step Functions jedoch nur das Auflisten von Objekten in Amazon S3-Buckets unterstützt, die sich sowohl in demselben als auch in demselben AWS-Konto AWS-Region wie der 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-Konsole, wählen Sie im Menü die Option State Machines und anschließend Create State Machine aus.

  2. Wählen Sie Create from blank.

  3. Benennen Sie Ihren Zustandsmaschinen und wählen Sie dann Weiter, um Ihren Zustandsmaschine in Workflow Studio zu bearbeiten.

  4. Ziehen Sie auf der Registerkarte „Flow“ einen Map-Status und legen Sie ihn in den leeren Zustand mit der Bezeichnung „Erster Zustand hierher ziehen“ ab.

  5. Geben Process data Sie auf der Registerkarte „Konfiguration“ für den Namen des Bundesstaats ein.

  6. Ziehen Sie auf der Registerkarte „Aktionen“ eine Aktion „API AWS Lambda aufrufen“ in den Status „Daten verarbeiten“.

  7. Benennen Sie den AWS Lambda Aufrufstatus 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 der verteilten Karte:

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

  • ItemProcessor— Gibt die folgenden Werte an:

    • ProcessorConfig— Setzt das Mode und EXPRESS jeweils ExecutionType auf DISTRIBUTED und. Dadurch werden der Verarbeitungsmodus des Map Status und der Workflowtyp für untergeordnete Workflow-Ausführungen festgelegt, die mit dem Status „Verteilte Karte“ 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 jeder Ausführung eines untergeordneten Workflows wiederholt werden.

  • ResultWriter— Gibt den Amazon S3-Standort an, an dem Step Functions die Statusergebnisse der verteilten Map schreibt.

    Wichtig

    Stellen Sie sicher, dass der Amazon S3-Bucket, den Sie zum Exportieren der Ergebnisse eines Map Runs verwenden, unter demselben AWS-Konto Namen AWS-Region wie Ihr State Machine steht. Andernfalls schlägt Ihre State-Machine-Ausführung mit dem States.ResultWriterFailed Fehler fehl.

Um die erforderlichen Felder zu konfigurieren:
  1. Wählen Sie den Status Daten verarbeiten 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 aus und wählen Sie dann CSV-Datei in S3 aus der Dropdown-Liste der S3-Artikelquellen aus.

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

      1. Wählen Sie für ein S3-Objekt die Option Bucket und Schlüssel eingeben aus der Dropdownliste aus.

      2. Geben Sie für Bucket den Namen des Amazon 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-Objekts ein, in dem Sie die CSV-Datei gespeichert haben. In diesem Feld müssen Sie auch den Namen der CSV-Datei angeben. Beispiel, 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 den Speicherort der CSV-Kopfzeile die Standardauswahl Erste Zeile bei, wenn die erste Zeile Ihrer CSV-Datei die Kopfzeile ist. Andernfalls wählen Sie Given, um den Header in der State-Machine-Definition anzugeben. Weitere Informationen finden Sie unter ReaderConfig.

    5. Wählen Sie für den 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 aus.

  3. Gehen Sie wie folgt vor:

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

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

    3. Geben Sie als Präfix den Ordnernamen 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 den Status Verteilte Karte“ können Sie auch andere Optionen angeben. Dazu können die maximale Anzahl gleichzeitiger untergeordneter Workflow-Ausführungen und der Speicherort gehören, an den das Map Statusergebnis exportiert werden soll.

  1. Wählen Sie den Status Daten verarbeiten. 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 eine benutzerdefinierte JSON-Eingabe für jede Ausführung eines untergeordneten Workflows anzugeben.

    2. Geben Sie die folgende JSON-Eingabe ein:

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

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

  3. Geben Sie in den Laufzeiteinstellungen unter Parallelitätslimit die Anzahl gleichzeitiger untergeordneter Workflow-Ausführungen an, die mit dem Status Verteilte Karte“ gestartet werden können. 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 beschrieben. Schritt 4: Konfigurieren Sie die Lambda-Funktion

Schritt 4: Konfigurieren Sie die Lambda-Funktion

Wichtig

Stellen Sie sicher, dass Ihre Lambda-Funktion mit Ihrer AWS-Region Zustandsmaschine identisch ist.

  1. Öffnen Sie die Lambda-Konsole und wählen Sie Funktion erstellen.

  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 Runtime (Laufzeit) Node.js aus.

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

    4. Nachdem Sie Ihre Lambda-Funktion erstellt haben, kopieren Sie den angezeigten Amazon-Ressourcennamen (ARN) der Funktion. Sie müssen dies in Ihrem Workflow-Prototyp angeben. Das Folgende ist 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 Codequellbereich der verteilten MapLambda Seite 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-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 und gehen Sie auf der Registerkarte „Konfiguration“ wie folgt vor:

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

    2. Geben Sie als Funktionsname zunächst den Namen Ihrer Lambda-Funktion ein. 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 Tabs Action und Flow 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 Bereich „Inspektor“ Bedienfeld die Option Definition aus und sehen Sie sich die Definition der Zustandsmaschine 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": "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:account-id: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 Standard-State-Machine-Namen von MyStateMachine. Geben Sie dann unter State Machine Configuration einen Namen in das Feld State Machine Name ein.

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

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

    Behalten Sie für dieses Tutorial alle Standardauswahlen unter 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 erneut erstellen. Ebenso kann Step Functions die 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 den State Machine aus

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

  1. Wählen Sie auf der DistributedMapDemo Seite 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.

      Non-ASCII Namen und Protokollierung

      Step Functions akzeptiert Namen für Zustandsautomaten, Ausführungen, Aktivitäten und Bezeichnungen, die Nicht-ASCII-Zeichen enthalten. Da solche Zeichen verhindern, dass Amazon Daten protokolliert, empfehlen wir, nur ASCII-Zeichen zu verwenden, damit Sie die Metriken CloudWatch von Step Functions verfolgen können.

    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-Konsole leitet Sie zu einer Seite weiter, die mit Ihrer Ausführungs-ID benannt ist. Diese Seite wird als Seite mit den Ausführungsdetails bezeichnet. Sie können die Ausführungsergebnisse im Verlauf des Workflows und nach dessen 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 aus, um die Details der einzelnen Bundesstaaten 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 dann Map Run, um die Seite Map Run-Details zu öffnen. Auf dieser Seite können Sie alle Ausführungsdetails des Status „Verteilte Karte“ und die von ihm gestarteten untergeordneten Workflow-Ausführungen anzeigen. Informationen zu dieser Seite finden Sie unterMap Runs anzeigen.