Amazon EMR ServerlessAnwendungen mit Step Functions erstellen und verwalten - 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.

Amazon EMR ServerlessAnwendungen mit Step Functions erstellen und verwalten

Erfahren Sie, wie Sie mithilfe von Step Functions Anwendungen auf EMR Serverless erstellen, starten, beenden und löschen. Diese Seite listet die unterstützten Task Zustände auf APIs und bietet Beispielstatus zur Durchführung gängiger Anwendungsfälle.

Step Functions kann bestimmte AWS Dienste direkt von Amazon States Language (ASL) aus steuern. Weitere Informationen hierzu finden Sie unter Integration anderer Services und Übergeben von Parametern an einen Dienst API in Step Functions.

Worin unterscheidet sich die optimierte EMR Serverless Integration von der EMR Serverless AWS SDK Integration
  • Die optimierte EMR Serverless Serviceintegration besteht aus einem benutzerdefinierten Satz APIs, der die zugrunde liegende Komponente umschließt EMR ServerlessAPIs. Aufgrund dieser Anpassung unterscheidet sich die optimierte EMR Serverless Integration erheblich von der EMR Serverless AWS SDK Serviceintegration. Darüber hinaus unterstützt die optimierte EMR Serverless Integration das Ausführen einer Aufgabe (.sync) Integrationsmuster.

  • Das Warten auf einen Callback mit dem Aufgabentoken Integrationsmuster wird nicht unterstützt.

EMR ServerlessServiceintegration APIs

Für die Integration AWS Step Functions mit EMR Serverless können Sie die folgenden sechs EMR Serverless Serviceintegrationen verwendenAPIs. Diese Serviceintegrationen APIs ähneln den entsprechenden EMR ServerlessAPIs, mit einigen Unterschieden in den Feldern, die übergeben werden, und in den Antworten, die zurückgegeben werden.

In der folgenden Tabelle werden die Unterschiede zwischen den einzelnen EMR Serverless Serviceintegrationen API und den entsprechenden Diensten beschrieben EMR ServerlessAPI.

EMR ServerlessServiceintegration API Entsprechendes EMR Serverless API Unterschiede

createApplication

Erstellt eine Anwendung

EMR Serverlessist mit einem eindeutigen Rollentyp verknüpft, der als dienstbezogene IAM Rolle bezeichnet wird. Damit createApplication und createApplication.sync funktionieren, müssen Sie die erforderlichen Berechtigungen zum Erstellen der serviceverknüpften Rolle AWS ServiceRoleForAmazonEMRServerless konfiguriert haben. Weitere Informationen dazu, einschließlich einer Erklärung, die Sie zu Ihrer IAM Berechtigungsrichtlinie hinzufügen können, finden Sie unter Verwenden von dienstbezogenen Rollen für. EMR Serverless

CreateApplication None

createApplication.sync

Erstellt eine Anwendung

CreateApplication

Keine Unterschiede zwischen den Anfragen und Antworten der EMR Serverless API und der EMR Serverless ServiceintegrationAPI. createApplication.sync wartet jedoch darauf, dass die Anwendung den Status erreicht. CREATED

startApplication

Startet eine angegebene Anwendung und initialisiert die Anfangskapazität der Anwendung, falls sie konfiguriert ist.

StartApplication

Die EMR Serverless API Antwort enthält keine Daten, aber die Antwort API auf die EMR Serverless Serviceintegration enthält die folgenden Daten.

{ "ApplicationId": "string" }

startApplication.sync

Startet eine angegebene Anwendung und initialisiert die Anfangskapazität, falls konfiguriert.

StartApplication

Die EMR Serverless API Antwort enthält keine Daten, aber die Antwort API auf die EMR Serverless Serviceintegration enthält die folgenden Daten.

{ "ApplicationId": "string" }

Außerdem wartet startApplication.sync darauf, dass die Anwendung den Status erreicht. STARTED

stopApplication

Stoppt eine angegebene Anwendung und gibt die Anfangskapazität frei, falls sie konfiguriert ist. Alle geplanten und laufenden Jobs müssen abgeschlossen oder abgebrochen werden, bevor eine Anwendung gestoppt werden kann.

StopApplication

Die EMR Serverless API Antwort enthält keine Daten, aber die API Antwort zur EMR Serverless Serviceintegration enthält die folgenden Daten.

{ "ApplicationId": "string" }

stopApplication.sync

Stoppt eine angegebene Anwendung und gibt die Anfangskapazität frei, falls sie konfiguriert ist. Alle geplanten und laufenden Jobs müssen abgeschlossen oder abgebrochen werden, bevor eine Anwendung gestoppt werden kann.

StopApplication

Die EMR Serverless API Antwort enthält keine Daten, aber die API Antwort zur EMR Serverless Serviceintegration enthält die folgenden Daten.

{ "ApplicationId": "string" }

Außerdem wartet stopApplication.sync darauf, dass die Anwendung den Status erreicht. STOPPED

deleteApplication

Löscht eine Anwendung. Eine Anwendung muss sich im CREATED Status STOPPED oder befinden, um gelöscht zu werden.

DeleteApplication

Die EMR Serverless API Antwort enthält keine Daten, aber die API Antwort zur EMR Serverless Serviceintegration enthält die folgenden Daten.

{ "ApplicationId": "string" }

deleteApplication.sync

Löscht eine Anwendung. Eine Anwendung muss sich im CREATED Status STOPPED oder befinden, um gelöscht zu werden.

DeleteApplication

Die EMR Serverless API Antwort enthält keine Daten, aber die API Antwort zur EMR Serverless Serviceintegration enthält die folgenden Daten.

{ "ApplicationId": "string" }

Außerdem wartet stopApplication.sync darauf, dass die Anwendung den Status erreicht. TERMINATED

startJobRun

Startet eine Jobausführung.

StartJobRun None

startJobRun.sync

Startet einen Joblauf.

StartJobRun

Keine Unterschiede zwischen den Anfragen und Antworten der EMR Serverless API EMR Serverless ServiceintegrationAPI. startJobRun.sync wartet jedoch darauf, dass die Anwendung den Status erreicht. SUCCESS

cancelJobRun

Bricht die Ausführung eines Jobs ab.

CancelJobRun None

cancelJobRun.sync

Bricht einen Joblauf ab.

CancelJobRun

Keine Unterschiede zwischen den Anfragen und Antworten der EMR Serverless API EMR Serverless ServiceintegrationAPI. cancelJobRun.sync wartet jedoch darauf, dass die Anwendung den Status erreicht. CANCELLED

EMRAnwendungsfälle für die serverlose Integration

Für die optimierte EMR Serverless Serviceintegration empfehlen wir, dass Sie eine einzelne Anwendung erstellen und diese Anwendung dann verwenden, um mehrere Jobs auszuführen. In einer einzigen Zustandsmaschine können Sie beispielsweise mehrere startJobRunAnfragen einschließen, die alle dieselbe Anwendung verwenden. Die folgenden Workflow-Status der Aufgabe Statusbeispiele zeigen Anwendungsfälle, in die eine EMR Serverless APIs Integration möglich istStep Functions. Informationen zu anderen Anwendungsfällen von EMR Serverless finden Sie unter Was ist Amazon EMR Serverless.

Tipp

Ein Beispiel EMR Serverless für eine Zustandsmaschine, die in die Ausführung mehrerer Jobs integriert ist AWS-Konto, finden Sie unterEinen EMR Serverless Job ausführen.

Informationen zur Konfiguration von IAM Berechtigungen bei der Verwendung Step Functions mit anderen AWS Diensten finden Sie unterSo generiert Step Functions IAM Richtlinien für integrierte Dienste.

Ersetzen Sie in den Beispielen, die in den folgenden Anwendungsfällen gezeigt werden, den italicized Text mit Ihren ressourcenspezifischen Informationen. Ersetzen Sie beispielsweise yourApplicationId mit der ID Ihrer EMR Serverless Anwendung, z. 00yv7iv71inak893 B.

Erstellen einer Anwendung

Das folgende Beispiel für einen Task-Status erstellt eine Anwendung mithilfe der createApplication.sync-ServiceintegrationAPI.

"Create_Application": { "Type": "Task", "Resource": "arn:aws:states:::emr-serverless:createApplication.sync", "Parameters": { "Name": "MyApplication", "ReleaseLabel": "emr-6.9.0", "Type": "SPARK" }, "End": true }

Starten Sie eine Anwendung

Im folgenden Beispiel für einen Task-Status wird eine Anwendung mithilfe der startApplication.sync-Dienstintegration API gestartet.

"Start_Application": { "Type": "Task", "Resource": "arn:aws:states:::emr-serverless:startApplication.sync", "Parameters": { "ApplicationId": "yourApplicationId" }, "End": true }

Stoppen Sie eine Anwendung

Das folgende Beispiel für einen Task-Status beendet eine Anwendung, die die stopApplication.sync-Dienstintegration API verwendet.

"Stop_Application": { "Type": "Task", "Resource": "arn:aws:states:::emr-serverless:stopApplication.sync", "Parameters": { "ApplicationId": "yourApplicationId" }, "End": true }

Löschen einer Anwendung

Das folgende Beispiel für einen Task-Status löscht eine Anwendung, die die deleteApplication.sync-Serviceintegration verwendet. API

"Delete_Application": { "Type": "Task", "Resource": "arn:aws:states:::emr-serverless:deleteApplication.sync", "Parameters": { "ApplicationId": "yourApplicationId" }, "End": true }

Starten Sie einen Job in einer Anwendung

Das folgende Beispiel für einen Task-Status startet einen Job in einer Anwendung, die die startJobRun.sync-Serviceintegration API verwendet.

"Start_Job": { "Type": "Task", "Resource": "arn:aws:states:::emr-serverless:startJobRun.sync", "Parameters": { "ApplicationId": "yourApplicationId", "ExecutionRoleArn": "arn:aws:iam::123456789012:role/myEMRServerless-execution-role", "JobDriver": { "SparkSubmit": { "EntryPoint": "s3://<mybucket>/sample.py", "EntryPointArguments": ["1"], "SparkSubmitParameters": "--conf spark.executor.cores=4 --conf spark.executor.memory=4g --conf spark.driver.cores=2 --conf spark.driver.memory=4g --conf spark.executor.instances=1" } } }, "End": true }

Stornieren Sie einen Job in einer Anwendung

Im folgenden Beispiel für den Aufgabenstatus wird ein Job in einer Anwendung mithilfe der cancelJobRun.sync-Serviceintegration storniert. API

"Cancel_Job": { "Type": "Task", "Resource": "arn:aws:states:::emr-serverless:cancelJobRun.sync", "Parameters": { "ApplicationId.$": "$.ApplicationId", "JobRunId.$": "$.JobRunId" }, "End": true }