AWS Step Functions を使用して EKS で Amazon EMR クラスターを作成および管理する
AWS Step Functions を Amazon EMR on EKS と統合するには、EKS サービス統合 API で Amazon EMR を使用します。サービス統合 API は EKS API の対応する Amazon EMR と同じですが、次の表で示すとおり、すべての API があらゆる統合パターンをサポートしているわけではありません。
Step Functions で AWS サービスと統合することについては、「 サービスとの統合」および「Step Functions でサービス API にパラメータを渡す」を参照してください。
EKS 統合に対する最適化された Amazon EMR と EKS AWS SDDK 統合に対する Amazon EMR との違い
-
ジョブの実行 (.sync) 統合パターンがサポートされています。
-
リクエストレスポンス 統合パターンに固有の最適化はありません。
-
タスクトークンのコールバックまで待機する 統合パターンはサポートされていません。
注記
Amazon EMR との統合のため、Step Functions は最初の 10 分とその後の 300 秒間、ジョブポーリング頻度をハードコーディングして 60 秒に設定しています。
| API | リクエストレスポンス | ジョブの実行 (.sync) |
|---|---|---|
| CreateVirtualCluster | サポート | サポートされていません |
| DeleteVirtualCluster | サポート | サポート |
| StartJobRun | サポート | サポート |
EKS API 上でサポートされる Amazon EMR は次のとおりです。
入力または結果データのクォータ
サービス間でデータを送受信する際、タスクの入力または結果の最大サイズは、UTF-8 でエンコードされた文字列で 256 KiB です。「ステートマシンの実行に関連するクォータ」を参照してください。
以下には仮想クラスターを作成する Task 状態が含まれています。
"Create_Virtual_Cluster": {
"Type": "Task",
"Resource": "arn:aws:states:::emr-containers:createVirtualCluster",
"Arguments": {
"Name": "MyVirtualCluster",
"ContainerProvider": {
"Id": "EKSClusterName",
"Type": "EKS",
"Info": {
"EksInfo": {
"Namespace": "Namespace"
}
}
}
},
"End": true
}以下には、 ジョブを仮想クラスターに送信し、完了するまで待機する Task 状態が含まれます。
"Submit_Job": {
"Type": "Task",
"Resource": "arn:aws:states:::emr-containers:startJobRun.sync",
"Arguments": {
"Name": "MyJobName",
"VirtualClusterId": "{% $VirtualClusterId %}",
"ExecutionRoleArn": "arn:aws:iam::<accountId>:role/job-execution-role",
"ReleaseLabel": "emr-6.2.0-latest",
"JobDriver": {
"SparkSubmitJobDriver": {
"EntryPoint": "s3://<amzn-s3-demo-bucket>/jobs/trip-count.py",
"EntryPointArguments": [
"60"
],
"SparkSubmitParameters": "--conf spark.driver.cores=2 --conf spark.executor.instances=10 --conf spark.kubernetes.pyspark.pythonVersion=3 --conf spark.executor.memory=10G --conf spark.driver.memory=10G --conf spark.executor.cores=1 --conf spark.dynamicAllocation.enabled=false"
}
},
"ConfigurationOverrides": {
"ApplicationConfiguration": [
{
"Classification": "spark-defaults",
"Properties": {
"spark.executor.instances": "2",
"spark.executor.memory": "2G"
}
}
],
"MonitoringConfiguration": {
"PersistentAppUI": "ENABLED",
"CloudWatchMonitoringConfiguration": {
"LogGroupName": "MyLogGroupName",
"LogStreamNamePrefix": "MyLogStreamNamePrefix"
},
"S3MonitoringConfiguration": {
"LogUri": "s3://<amzn-s3-demo-logging-bucket1>"
}
}
},
"Tags": {
"taskType": "jobName"
}
},
"End": true
}以下には、仮想クラスターを削除し、削除が完了するまで待機する Task 状態が含まれます。
"Delete_Virtual_Cluster": {
"Type": "Task",
"Resource": "arn:aws:states:::emr-containers:deleteVirtualCluster.sync",
"Arguments": {
"Id": "{% $states.input.VirtualClusterId %}",
},
"End": true
}他の AWS のサービスで Step Functions を使用して IAM アクセス許可を設定する方法については、「Step Functions が統合サービスの IAM ポリシーを生成する方法」を参照してください。