Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.
Llamada a Amazon EMR Serverless con Step Functions
Step Functions puede controlar ciertos AWS servicios directamente desde Lenguaje de estados de Amazon (ASL). Para obtener más información, consulte Trabajo con otros servicios y Cómo pasar parámetros a una API de servicio.
Diferencia entre la integración optimizada de EMR Serverless y la integración del SDK de EMR Serverless AWS
-
La integración del servicio de EMR Serverless optimizado tiene un conjunto personalizado de API que agrupan las API de EMR Serverless subyacentes. Debido a esta personalización, la EMR Serverless integración optimizada difiere considerablemente de la integración de los servicios del EMR Serverless AWS SDK. Además, la integración de EMR Serverless optimizada admite el patrón de integración Ejecutar un trabajo (.sync).
-
No se admite el patrón de integración Cómo esperar una devolución de llamada con el token de tarea.
API de integración de servicios de EMR Serverless
Para integrar AWS Step Functions con EMR Serverless, puede utilizar las siguientes seis API de integración de servicios de EMR Serverless. Estas API de integración de servicios son similares a las API de EMR Serverless correspondientes, con algunas diferencias en los campos que se pasan y en las respuestas que se devuelven.
En la siguiente tabla se describen las diferencias entre cada API de integración de servicios y sus API de EMR Serverless correspondientes.
API de integración de servicios de EMR Serverless y API de EMR Serverless correspondientes | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
API de integración de servicios de EMR Serverless | API de EMR Serverless correspondiente | Diferencias | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
createApplication Crea una aplicación. EMR Serverless está vinculado a un tipo de rol de IAM único conocido como rol vinculado a servicio. Para que |
CreateApplication | Ninguna | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
createApplication.sync Crea una aplicación. |
CreateApplication |
No hay diferencias entre las solicitudes y las respuestas de la API de EMR Serverless y la API de integración de servicios de EMR Serverless. Sin embargo, createApplication.sync espera a que la aplicación alcance el estado |
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
startApplication Inicia una aplicación especificada e inicializa la capacidad inicial de la aplicación si está configurada. |
StartApplication |
La respuesta de la API de EMR Serverless no contiene ningún dato, pero la respuesta de la API de integración de servicio EMR Serverless incluye los siguientes datos.
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
startApplication.sync Inicia una aplicación específica e inicializa la capacidad inicial si está configurada. |
StartApplication |
La respuesta de la API de EMR Serverless no contiene ningún dato, pero la respuesta de la API de integración de servicio EMR Serverless incluye los siguientes datos.
Además, startApplication.sync espera a que la aplicación alcance el estado |
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
stopApplication Detiene una aplicación especificada y libera la capacidad inicial si está configurada. Todos los trabajos programados y en ejecución deben completarse o cancelarse antes de detener una aplicación. |
StopApplication |
La respuesta de la API de EMR Serverless no contiene ningún dato, pero la respuesta de la API de integración de servicio EMR Serverless incluye los siguientes datos.
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
stopApplication.sync Detiene una aplicación especificada y libera la capacidad inicial si está configurada. Todos los trabajos programados y en ejecución deben completarse o cancelarse antes de detener una aplicación. |
StopApplication |
La respuesta de la API de EMR Serverless no contiene ningún dato, pero la respuesta de la API de integración de servicio EMR Serverless incluye los siguientes datos.
Además, stopApplication.sync espera a que la aplicación alcance el estado |
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
deleteApplication Elimina una aplicación. Para poder eliminarla, una aplicación debe estar en el estado |
DeleteApplication |
La respuesta de la API de EMR Serverless no contiene ningún dato, pero la respuesta de la API de integración de servicio EMR Serverless incluye los siguientes datos.
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
deleteApplication.sync Elimina una aplicación. Para poder eliminarla, una aplicación debe estar en el estado |
DeleteApplication |
La respuesta de la API de EMR Serverless no contiene ningún dato, pero la respuesta de la API de integración de servicio EMR Serverless incluye los siguientes datos.
Además, stopApplication.sync espera a que la aplicación alcance el estado |
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
startJobRun Inicia una ejecución de trabajo. |
StartJobRun | Ninguna | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
startJobRun.sync Inicia una ejecución de trabajo. |
StartJobRun |
No hay diferencias entre las solicitudes y las respuestas de la API de EMR Serverless y la API de integración de servicios de EMR Serverless. Sin embargo, startJobRun.sync espera a que la aplicación alcance el estado. |
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
cancelJobRun Cancela una ejecución de trabajo. |
CancelJobRun | Ninguna | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
cancelJobRun.sync Cancela una ejecución de trabajo. |
CancelJobRun |
No hay diferencias entre las solicitudes y las respuestas de la API de EMR Serverless y la API de integración de servicios de EMR Serverless. Sin embargo, cancelJobRun.sync espera a que la aplicación alcance el estado. |
Casos de uso de integración de EMR sin servidor
Para la integración optimizada del servicio de EMR Serverless, se recomienda crear una sola aplicación y, a continuación, utilizarla para ejecutar varios trabajos. Por ejemplo, en una máquina de un solo estado, puede incluir varias startJobRunsolicitudes, todas las cuales utilizan la misma aplicación. En los siguientes ejemplos de estados Estado de la tarea se muestran casos de uso con los que integrar API de EMR Serverless con Step Functions Para obtener información sobre otros casos de uso de EMR Serverless, consulte Qué es Amazon EMR Serverless.
sugerencia
Para implementar un ejemplo de una máquina de estados que se integre y ejecute varios trabajos en su computadora Cuenta de AWS, consulteEjecutar un trabajo de EMR Serverless. EMR Serverless
Para obtener información sobre cómo configurar IAM los permisos cuando se utilizan Step Functions con otros AWS servicios, consultePolíticas de IAM para servicios integrados.
En los ejemplos que se muestran en los siguientes casos de uso, sustituya el texto en cursiva
por la información específica del recurso. Por ejemplo, yourApplicationId
sustitúyalo por el ID de tu EMR Serverless aplicación, por ejemplo00yv7iv71inak893
.
Crear una aplicación
En el siguiente ejemplo de estado Task se crea una aplicación mediante la API de integración del servicio CreateApplication.sync.
"Create_Application": { "Type": "Task", "Resource": "arn:aws:states:::emr-serverless:createApplication.sync", "Parameters": { "Name": "
MyApplication
", "ReleaseLabel": "emr-6.9.0", "Type": "SPARK" }, "End": true }
Iniciar una aplicación
En el siguiente ejemplo de estado Task se inicia una aplicación mediante la API de integración del servicio StartApplication.sync.
"Start_Application": { "Type": "Task", "Resource": "arn:aws:states:::emr-serverless:startApplication.sync", "Parameters": { "ApplicationId": "
yourApplicationId
" }, "End": true }
Detener una aplicación
En el siguiente ejemplo de estado Task se detiene una aplicación mediante la API de integración del servicio StopApplication.sync.
"Stop_Application": { "Type": "Task", "Resource": "arn:aws:states:::emr-serverless:stopApplication.sync", "Parameters": { "ApplicationId": "
yourApplicationId
" }, "End": true }
Eliminar una aplicación
En el siguiente ejemplo de estado Task se elimina una aplicación mediante la API de integración del servicio DeleteApplication.sync.
"Delete_Application": { "Type": "Task", "Resource": "arn:aws:states:::emr-serverless:deleteApplication.sync", "Parameters": { "ApplicationId": "
yourApplicationId
" }, "End": true }
Iniciar un trabajo en una aplicación
El siguiente ejemplo de estado de tarea inicia un trabajo en una aplicación mediante la API de integración de servicios startJobRun.sync.
"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 }
Cancelar un trabajo en una aplicación
En el siguiente ejemplo de estado de tarea, se cancela un trabajo en una aplicación mediante la API de integración de servicios cancelJobRun.sync.
"Cancel_Job": { "Type": "Task", "Resource": "arn:aws:states:::emr-serverless:cancelJobRun.sync", "Parameters": { "ApplicationId.$": "$.ApplicationId", "JobRunId.$": "$.JobRunId" }, "End": true }