Step Functions を使用して Amazon EMR Serverless を呼び出す - AWS Step Functions

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

Step Functions を使用して Amazon EMR Serverless を呼び出す

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

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

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

EMR Serverless サービス統合 API

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

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

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

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

CreateApplication

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

startApplication

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

StartApplication

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

{ "ApplicationId": "string" }

startApplication.sync

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

StartApplication

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

{ "ApplicationId": "string" }

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

stopApplication

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

StopApplication

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

{ "ApplicationId": "string" }

stopApplication.sync

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

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

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

DeleteApplication

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

{ "ApplicationId": "string" }

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

startJobRun

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

StartJobRun なし

startJobRun.sync

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

StartJobRun

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

cancelJobRun

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

CancelJobRun なし

cancelJobRun.sync

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

CancelJobRun

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

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

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

ヒント

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

IAMStep Functions AWS 他のサービスと併用する場合の権限の設定方法については、を参照してください統合サービスの IAM ポリシー

以下のユースケースの例で斜体で示されているテキストを、リソース固有の情報に置き換えてください。たとえば、EMR Serverlessをアプリケーションの ID (など) yourApplicationIdに置き換えてください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 }