Daten in einem Amazon S3 S3-Bucket mit Distributed Map verarbeiten - 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.

Daten in einem Amazon S3 S3-Bucket mit Distributed Map verarbeiten

Dieses Beispielprojekt zeigt, wie Sie den Status Distributed Map verwenden können, um umfangreiche Daten zu verarbeiten, beispielsweise historische Wetterdaten zu analysieren und die Wetterstation zu identifizieren, die jeden Monat die höchste Durchschnittstemperatur auf dem Planeten hat. Die Wetterdaten werden in über 12.000 CSV Dateien aufgezeichnet, die wiederum in einem Amazon S3 S3-Bucket gespeichert werden.

Dieses Beispielprojekt umfasst zwei Distributed-Map-Status mit den Namen Distributed S3 copy NOA Data und IP rocessNOAAData. Verteilte S3-Kopie NOA Daten iterieren über die CSV Dateien in einem öffentlichen Amazon S3 S3-Bucket mit dem Namen noaa-gsod-pdsund kopiert sie in einen Amazon S3 S3-Bucket in Ihrem AWS-Konto. P rocessNOAAData iteriert über die kopierten Dateien und enthält eine Lambda-Funktion, die die Temperaturanalyse durchführt.

Das Beispielprojekt überprüft zunächst den Inhalt des Amazon S3 S3-Buckets mit einem Aufruf der ListObjectsAPIV2-Aktion. Basierend auf der Anzahl der Schlüssel, die als Antwort auf diesen Aufruf zurückgegeben wurden, trifft das Beispielprojekt eine der folgenden Entscheidungen:

  • Wenn die Anzahl der Schlüssel größer oder gleich 1 ist, wechselt das Projekt in den rocessNOAAData Status P. Dieser Status „Verteilte Karten“ enthält eine Lambda Funktion mit dem Namen TemperatureFunction, die die Wetterstation mit der höchsten Durchschnittstemperatur in jedem Monat ermittelt. Diese Funktion gibt ein Wörterbuch mit year-month dem Schlüssel und ein Wörterbuch zurück, das Informationen über die Wetterstation als Wert enthält.

  • Wenn die Anzahl der zurückgegebenen Schlüssel 1 nicht überschreitet, listet der Status Verteilte NOA S3-Datenkopie alle Objekte aus dem öffentlichen Bucket auf noaa-gsod-pdsund kopiert die einzelnen Objekte iterativ in Batches von 100 in einen anderen Bucket in Ihrem Konto. Eine Inline-Map führt das iterative Kopieren der Objekte durch.

    Nachdem alle Objekte kopiert wurden, wechselt das Projekt zur Verarbeitung der Wetterdaten in den rocessNOAADataP-Status.

Das Beispielprojekt geht schließlich zu einer Lambda Reducer-Funktion über, die eine abschließende Aggregation der von der TemperatureFunctionFunktion zurückgegebenen Ergebnisse durchführt und die Ergebnisse in eine Amazon DynamoDB Tabelle schreibt.

Mit Distributed Map können Sie bis zu 10.000 parallel untergeordnete Workflow-Ausführungen gleichzeitig ausführen. In diesem Beispielprojekt ist die maximale Parallelität von P rocessNOAAData Distributed Map auf 3000 festgelegt, wodurch sie auf 3000 parallel untergeordnete Workflow-Ausführungen begrenzt ist.

In diesem Beispielprojekt werden der Zustandsmaschine und die unterstützenden AWS Ressourcen erstellt und die zugehörigen Berechtigungen konfiguriert. IAM Erkunden Sie dieses Beispielprojekt, um mehr über die Verwendung von Distributed Map für die Orchestrierung umfangreicher, parallel Workloads zu erfahren, oder verwenden Sie es als Ausgangspunkt für Ihre eigenen Projekte.

Wichtig

Dieses Beispielprojekt ist nur in der Region USA Ost (Nord-Virginia) verfügbar.

AWS CloudFormation Vorlage und zusätzliche Ressourcen

Sie verwenden eine CloudFormation Vorlage, um dieses Beispielprojekt bereitzustellen. Diese Vorlage erstellt die folgenden Ressourcen in Ihrem AWS-Konto:

  • Eine Step Functions Functions-Zustandsmaschine.

  • Ausführungsrolle für die Zustandsmaschine. Diese Rolle gewährt die Berechtigungen, die Ihre Zustandsmaschine für den Zugriff auf andere AWS -Services Ressourcen wie die Invoke-Aktion der Lambda-Funktion benötigt.

  • Ein Amazon S3 S3-Bucket mit dem NamenNOAADataBucket. Dieser Bucket enthält die CSV Dateien mit Wetterdaten.

  • Eine Lambda-Funktion mit dem NamenReducerFunction, die eine endgültige Aggregation der Wetterdaten durchführt und die Ergebnisse in eine Amazon DynamoDB-Tabelle schreibt.

  • Ausführungsrolle für die Reducer-Lambda-Funktion. Diese Rolle gewährt der Funktion die Berechtigung, auf andere zuzugreifen. AWS -Services

  • Ein Amazon S3 S3-Ausgabe-Bucket, der ResultsBucket zum Speichern der Wetteranalyseergebnisse benannt ist.

  • Eine DynamoDB-Tabelle mit dem NamenResultsDynamoDBTable, die die von der zurückgegebenen Ergebnisse enthält. ReducerFunction

  • Eine Lambda-Funktion mit dem NamenTemperatureFunction, die die höchste monatliche Durchschnittstemperatur ermittelt.

  • Ausführungsrolle für die Lambda-Funktion. Diese Rolle gewährt der Funktion die Berechtigung, auf andere AWS -Services zuzugreifen.

  • Eine CloudWatch Protokollgruppe, die Informationen zum Ausführungsverlauf der Zustandsmaschine speichert.

Wichtig

Für jeden Service fallen Standardgebühren an.

Schritt 1: Erstellen Sie den Zustandsmaschine und stellen Sie Ressourcen bereit

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

  2. Geben Sie Distributed Map to process files in S3 etwas in das Suchfeld ein und wählen Sie dann aus den zurückgegebenen Suchergebnissen Distributed Map aus, um Dateien in S3 zu verarbeiten.

  3. Wählen Sie Next (Weiter), um fortzufahren.

  4. Step Functions listet die Funktionen auf, die in dem von Ihnen ausgewählten Beispielprojekt AWS -Services verwendet wurden. Außerdem wird ein Workflow-Diagramm für das Beispielprojekt angezeigt. Stellen Sie dieses Projekt für Ihr Projekt bereit AWS-Konto oder verwenden Sie es als Ausgangspunkt für die Erstellung Ihrer eigenen Projekte. Je nachdem, wie Sie vorgehen möchten, wählen Sie „Demo ausführen“ oder „Darauf aufbauen“.

    Informationen zu den Ressourcen, die für dieses Beispielprojekt erstellt werden, finden Sie unterAWS CloudFormation Vorlage und zusätzliche Ressourcen.

    Die folgende Abbildung zeigt das Workflow-Diagramm für das Distributed Map zur Verarbeitung von Dateien im S3-Beispielprojekt:

    Workflow-Diagramm der Distributed Map zur Verarbeitung von Dateien im S3-Beispielprojekt.
  5. Wählen Sie Vorlage verwenden, um mit Ihrer Auswahl fortzufahren.

  6. Führen Sie eine der folgenden Aktionen aus:

    • Wenn Sie „Darauf aufbauen“ ausgewählt haben, erstellt Step Functions den Workflow-Prototyp, stellt jedoch nicht die Ressourcen in der Workflow-Definition bereit, sodass Sie Ihren Workflow-Prototyp weiterentwickeln können.

      In Workflow Studio können Sie Ihrem Workflow-Prototyp zusätzliche Status hinzufügen. Entwurfsmodus Oder Sie können zu der wechseln, um den integrierten Code-Editor Codemodus zu verwenden, um die Amazon States Language (ASL) -Definition Ihrer Zustandsmaschine von der Step Functions Functions-Konsole aus zu bearbeiten.

      Wichtig

      Möglicherweise müssen Sie den Platzhalter Amazon Resource Name (ARN) für die im Beispielprojekt verwendeten Ressourcen aktualisieren, bevor Sie Ihren Workflow ausführen können.

    • Wenn Sie Eine Demo ausführen ausgewählt haben, erstellt Step Functions ein schreibgeschütztes Projekt, das eine AWS CloudFormation Vorlage verwendet, um die AWS Ressourcen in dieser Vorlage für Ihr Projekt bereitzustellen. AWS-Konto Sie können die State-Machine-Definition anzeigen, indem Sie den Codemodus wählen.

      Wählen Sie Bereitstellen und ausführen, um das Projekt bereitzustellen und die Ressourcen zu erstellen.

      Beachten Sie, dass die Bereitstellung bis zu 10 Minuten dauern kann, bis Ressourcen und IAM Berechtigungen erstellt sind. Während der Bereitstellung Ihrer Ressourcen können Sie den AWS CloudFormation Stack-ID-Link öffnen, um zu sehen, welche Ressourcen bereitgestellt werden.

      Nachdem alle Ressourcen erstellt wurden, sollte das Projekt auf der Seite State Machines in der Konsole angezeigt werden.

      Wichtig

      Für jeden in der CloudFormation Vorlage verwendeten Dienst können Standardgebühren anfallen.

Schritt 2: Führen Sie die Zustandsmaschine aus

Nachdem alle Ressourcen bereitgestellt und bereitgestellt wurden, können Sie die Zustandsmaschine ausführen.

  1. Wählen Sie auf der Seite State Machines Ihr Beispielprojekt aus.

  2. Wählen Sie auf der Seite mit dem Beispielprojekt die Option Ausführung starten aus.

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

    1. (Optional) Geben Sie Eingabewerte im JSON Format ein, um Ihr Beispielprojekt auszuführen.

      Wenn Sie sich dafür entschieden haben, eine Demo auszuführen, müssen Sie keine Ausführungseingaben angeben.

      Anmerkung

      Wenn das von Ihnen bereitgestellte Demo-Projekt vorab aufgefüllte Eingabedaten für die Ausführung enthält, verwenden Sie diese Eingabe, um die Zustandsmaschine auszuführen.

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

    3. (Optional) 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.

      Wählen Sie nach Abschluss der Ausführung einzelne Status in der Diagrammansicht 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.

    4. (Optional) Überprüfen Sie die Ausführungsergebnisse, die in den Amazon S3 S3-Bucket exportiert wurden. Zu diesen Ergebnissen gehören Daten wie die Eingabe und Ausgabe der Ausführung sowie der Ausführungsstatus. ARN Weitere Informationen finden Sie unter ResultWriter (Karte).