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 kopieren 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 Distributed-Map-Status umfasst Lambda Funktion mit dem Namen TemperatureFunction, die nach der Wetterstation sucht, die in jedem Monat die höchste Durchschnittstemperatur hatte. 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 in einen Reducer über Lambda Funktion, die eine endgültige Aggregation der von der TemperatureFunctionFunktion zurückgegebenen Ergebnisse durchführt und die Ergebnisse in eine Amazon DynamoDB Tabelle.

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 wird der Zustandsmaschine, der unterstützende AWS Ressourcen und konfiguriert die zugehörigen IAM Berechtigungen. 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 Ihr Zustandsmaschine benötigt, um auf andere zuzugreifen AWS-Services und Ressourcen wie die Invoke-Aktion der Lambda-Funktion.

  • 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 zum Speichern der Wetteranalyseergebnisse.

  • 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 zuzugreifen AWS-Services.

  • 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. Wählen Sie „Demo ausführen“, um eine schreibgeschützte Datei und einen ready-to-deploy Workflow zu erstellen, oder wählen Sie „Darauf aufbauen“, um eine bearbeitbare Zustandsmaschinen-Definition zu erstellen, auf der Sie aufbauen und die Sie später bereitstellen können.

    Informationen zu den Ressourcen, die für dieses Beispielprojekt erstellt werden, finden Sie unter. AWS 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.

Die nächsten Schritte hängen von Ihrer vorherigen Auswahl ab:

  1. Führen Sie eine Demo durch — Sie können den Status Machine überprüfen, bevor Sie ein schreibgeschütztes Projekt mit Ressourcen erstellen, die bereitgestellt werden von AWS CloudFormation zu Ihrem AWS-Konto.

    Sie können sich die State-Machine-Definition ansehen. Wenn Sie bereit sind, wählen Sie Deploy and run, um das Projekt bereitzustellen und die Ressourcen zu erstellen.

    Die Bereitstellung kann bis zu 10 Minuten dauern, bis Ressourcen und Berechtigungen erstellt sind. Sie können den Stack-ID-Link verwenden, um den Fortschritt zu überwachen AWS CloudFormation.

    Nach Abschluss der Bereitstellung sollte Ihre neue Zustandsmaschine in der Konsole angezeigt werden.

  2. Darauf aufbauen — Sie können die Workflow-Definition überprüfen und bearbeiten. Möglicherweise müssen Sie Werte für Platzhalter im Beispielprojekt festlegen, bevor Sie versuchen, Ihren benutzerdefinierten Workflow auszuführen.

Anmerkung

Für Dienste, die für Ihr Konto bereitgestellt werden, 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 den 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.

      • 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.

      • Weitere Informationen zur Anzeige der Ausführung eines Distributed Map-Status in der Konsole finden Sie unterMap Runs anzeigen.

    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).