Step Functions でAmazon EMR Serverlessアプリケーションを作成および管理 - AWS Step Functions

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

Step Functions でAmazon EMR Serverlessアプリケーションを作成および管理

Step Functions を使用してサーバーEMRレスでアプリケーションを作成、起動、停止、削除する方法について説明します。このページでは、サポートされている を一覧表示APIsし、一般的なユースケースを実行するためのTask状態の例を示します。

Step Functions は、 Amazon ステートメント言語 () から直接特定の AWS サービスを制御できますASL。詳細については、「他のサービスの統合」および「Step Functions APIのサービスへのパラメータの受け渡し」を参照してください。

最適化EMR Serverless統合とEMR Serverless AWS SDK統合の違い
  • 最適化EMR Serverlessサービス統合には、基盤となる をラップAPIsするカスタマイズされた EMR Serverless のセットがありますAPIs。このカスタマイズにより、最適化されたEMR Serverless統合はEMR Serverless AWS SDKサービス統合とは大きく異なります。さらに、最適化された EMR Serverless 統合は ジョブの実行 (.sync) 統合パターンをサポートします。

  • タスクトークンのコールバックまで待機する 統合パターンはサポートされていません。

EMR Serverless サービス統合 APIs

AWS Step Functions と統合するにはEMR Serverless、次の 6 つのEMR Serverlessサービス統合 を使用できますAPIs。これらのサービス統合APIsは対応する EMR Serverless と似ていますがAPIs、渡されるフィールドと返されるレスポンスにはいくつかの違いがあります。

次の表は、各EMR Serverlessサービス統合APIとそれに対応する EMR Serverless の違いを示していますAPI。

EMR Serverless サービス統合 API 対応する EMR Serverless API 差異

createApplication

アプリケーションを作成します。

EMR Serverless はサービスリンクロールとして知られる IAM ロールの一意のタイプにリンクされています。createApplicationcreateApplication.sync が機能するには、サービスリンクロール AWS ServiceRoleForAmazonEMRServerless を作成するために必要なアクセス許可が設定されている必要があります。IAM アクセス許可ポリシーに追加できるステートメントなど、詳細については、「EMR Serverless のサービスにリンクされたロールの使用」を参照してください。

CreateApplication なし

createApplication同期

アプリケーションを作成します。

CreateApplication

およびEMR Serverlessサービス統合 のリクエストEMR ServerlessAPIとレスポンスの間に違いはありませんAPI。ただし、createApplication.sync はアプリケーションが CREATED状態になるまで待機します。

startApplication

指定されたアプリケーションを起動し、設定されている場合はアプリケーションの初期容量を初期化します。

StartApplication

EMR Serverless API レスポンスにはデータは含まれませんが、EMR Serverlessサービス統合APIレスポンスには次のデータが含まれます。

{ "ApplicationId": "string" }

startApplication同期

指定されたアプリケーションを起動し、設定されている場合は初期容量を初期化します。

StartApplication

EMR Serverless API レスポンスにはデータは含まれませんが、EMR Serverlessサービス統合APIレスポンスには次のデータが含まれます。

{ "ApplicationId": "string" }

また、startApplication.sync はアプリケーションが STARTED状態になるまで待機します。

stopApplication

指定されたアプリケーションを停止し、設定されている場合は初期容量を解放します。アプリケーションを停止する前に、スケジュールされたジョブと実行中のジョブをすべて完了またはキャンセルする必要があります。

StopApplication

EMR Serverless API レスポンスにはデータは含まれませんが、EMR Serverlessサービス統合APIレスポンスには次のデータが含まれます。

{ "ApplicationId": "string" }

stopApplication同期

指定されたアプリケーションを停止し、設定されている場合は初期容量を解放します。アプリケーションを停止する前に、スケジュールされたジョブと実行中のジョブをすべて完了またはキャンセルする必要があります。

StopApplication

EMR Serverless API レスポンスにはデータは含まれませんが、EMR Serverlessサービス統合APIレスポンスには次のデータが含まれます。

{ "ApplicationId": "string" }

また、stopApplication.sync はアプリケーションが STOPPED状態になるまで待機します。

deleteApplication

アプリケーションを削除します アプリケーションを削除するには、そのアプリケーションが STOPPED または CREATED 状態になっている必要があります。

DeleteApplication

EMR Serverless API レスポンスにはデータは含まれませんが、EMR Serverlessサービス統合APIレスポンスには次のデータが含まれます。

{ "ApplicationId": "string" }

deleteApplication同期

アプリケーションを削除します アプリケーションを削除するには、そのアプリケーションが STOPPED または CREATED 状態になっている必要があります。

DeleteApplication

EMR Serverless API レスポンスにはデータは含まれませんが、EMR Serverlessサービス統合APIレスポンスには次のデータが含まれます。

{ "ApplicationId": "string" }

また、stopApplication.sync はアプリケーションが TERMINATED状態になるまで待機します。

startJobRun

ジョブ実行を開始します。

StartJobRun なし

startJobRun同期

ジョブ実行を開始します。

StartJobRun

およびEMR Serverlessサービス統合 のリクエストEMR ServerlessAPIとレスポンスの間に違いはありませんAPI。ただし、startJobRun.sync はアプリケーションが SUCCESS状態になるまで待機します。

cancelJobRun

ジョブ実行をキャンセルします。

CancelJobRun なし

cancelJobRun同期

ジョブ実行をキャンセルします。

CancelJobRun

およびEMR Serverlessサービス統合 のリクエストEMR ServerlessAPIとレスポンスの間に違いはありませんAPI。ただし、cancelJobRun.sync はアプリケーションが CANCELLED状態になるまで待機します。

EMR サーバーレス統合のユースケース

最適化された EMR Serverless サービス統合では、アプリケーションを 1 つ作成して、そのアプリケーションを使用して複数のジョブを実行することをお勧めします。例えば、1 台のステートマシンで複数のstartJobRunリクエストを含めることができ、そのすべてが同じアプリケーションを使用します。次のタスクワークフローの状態状態例は、 EMR ServerlessAPIsと統合するユースケースを示していますStep Functions。EMR Serverless のその他のユースケースの情報については、「Amazon EMR Serverless とは」を参照してください。

ヒント

複数のジョブを実行するEMR Serverlessために と統合するステートマシンの例を にデプロイするには AWS アカウント、「」を参照してくださいEMR Serverless ジョブを実行する

を他の AWS サービスStep Functionsで使用するときにIAMアクセス許可を設定する方法については、「」を参照してくださいStep Functions が統合サービスのIAMポリシーを生成する方法

次のユースケースの例で、italicized リソース固有の情報を含む テキスト。例えば、yourApplicationId など、EMR Serverlessアプリケーションの ID を持つ 00yv7iv71inak893

アプリケーションの作成

次のタスク状態の例では、createApplication.sync サービス統合 を使用してアプリケーションを作成しますAPI。

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

アプリケーションを起動する

次のタスク状態の例では、startApplication.sync サービス統合 を使用してアプリケーションを起動しますAPI。

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

アプリケーションを停止する

次のタスク状態の例では、stopApplication.sync サービス統合 を使用してアプリケーションを停止しますAPI。

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

アプリケーションの削除

次のタスク状態の例では、deleteApplication.sync サービス統合 を使用してアプリケーションを削除しますAPI。

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

アプリケーションでのジョブの開始

次のタスク状態の例では、startJobRun.sync サービス統合 を使用してアプリケーションでジョブを開始しますAPI。

"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 }

アプリケーションでのジョブのキャンセル

次のタスク状態の例では、cancelJobRun.sync サービス統合 を使用してアプリケーションのジョブをキャンセルしますAPI。

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