Crear y administrar Amazon EMR Serverless aplicaciones con Step Functions - AWS Step Functions

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.

Crear y administrar Amazon EMR Serverless aplicaciones con Step Functions

Aprenda a crear, iniciar, detener y eliminar aplicaciones en EMR Serverless mediante Step Functions. En esta página se enumeran los estados compatibles APIs y se proporcionan ejemplos de Task estados para realizar casos de uso comunes.

Para obtener información sobre la integración con AWS servicios en Step Functions, consulte Integración de los servicios de yPasar parámetros a un servicio API en Step Functions.

Características clave de Optimized EMR Serverless integración
  • El optimizado EMR Serverless la integración de servicios tiene un conjunto personalizado APIsque envuelve lo subyacente EMR Serverless APIs. Debido a esta personalización, la optimizada EMR Serverless la integración difiere significativamente de la AWS SDKintegración de servicios.

  • Además, la optimizada EMR Serverless la integración admite el patrón de Ejecutar un trabajo (.sync) integración.

  • No se admite el patrón de Espera a que te devuelvan la llamada con el token de tarea integración.

EMR Serverless integración de servicios APIs

Para integrar AWS Step Functions with EMR Serverless, puede utilizar los seis siguientes EMR Serverless integración de serviciosAPIs. Estas integraciones de servicios APIs son similares a las correspondientes EMR Serverless APIs, 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 EMR Serverless la integración de servicios API y su correspondiente EMR Serverless API.

EMR Serverless integración de servicios API Correspondiente EMR Serverless API Diferencias

createApplication

Crea una aplicación.

EMR Serverless está vinculado a un tipo único de IAM función conocida como función vinculada a un servicio. Para que createApplication y createApplication.sync funcionen, tiene que tener configurados los permisos necesarios para crear el rol vinculado a servicios AWS ServiceRoleForAmazonEMRServerless. Para obtener más información al respecto, incluida una declaración que puede añadir a su IAM política de permisos, consulte Uso de roles vinculados a servicios para EMR Serverless.

CreateApplication Ninguna

createApplication.sync

Crea una aplicación.

CreateApplication

No hay diferencias entre las solicitudes y las respuestas del EMR Serverless APIy EMR Serverless integración de serviciosAPI. Sin embargo, createApplication.sync espera a que la aplicación alcance el CREATED estado.

startApplication

Inicia una aplicación especificada e inicializa la capacidad inicial de la aplicación si está configurada.

StartApplication

La EMR Serverless APIla respuesta no contiene ningún dato, pero el EMR Serverless la API respuesta de integración de servicios incluye los siguientes datos.

{ "ApplicationId": "string" }

startApplication.sync

Inicia una aplicación específica e inicializa la capacidad inicial si está configurada.

StartApplication

La EMR Serverless APIla respuesta no contiene ningún dato, pero el EMR Serverless la API respuesta de integración de servicios incluye los siguientes datos.

{ "ApplicationId": "string" }

Además, startApplication.sync espera a que la aplicación alcance el STARTED 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 EMR Serverless APIla respuesta no contiene ningún dato, pero el EMR Serverless la API respuesta de integración de servicios incluye los siguientes datos.

{ "ApplicationId": "string" }

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 EMR Serverless APIla respuesta no contiene ningún dato, pero el EMR Serverless la API respuesta de integración de servicios incluye los siguientes datos.

{ "ApplicationId": "string" }

Además, stopApplication.sync espera a que la aplicación alcance el STOPPED estado.

deleteApplication

Elimina una aplicación. Para poder eliminarla, una aplicación debe estar en el estado STOPPED o CREATED.

DeleteApplication

La EMR Serverless APIla respuesta no contiene ningún dato, pero el EMR Serverless la API respuesta de integración de servicios incluye los siguientes datos.

{ "ApplicationId": "string" }

deleteApplication.sync

Elimina una aplicación. Para poder eliminarla, una aplicación debe estar en el estado STOPPED o CREATED.

DeleteApplication

La EMR Serverless APIla respuesta no contiene ningún dato, pero el EMR Serverless la API respuesta de integración de servicios incluye los siguientes datos.

{ "ApplicationId": "string" }

Además, stopApplication.sync espera a que la aplicación alcance el TERMINATED 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 del EMR Serverless APIy EMR Serverless integración de serviciosAPI. Sin embargo, startJobRun.sync espera a que la aplicación alcance el SUCCESS 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 del EMR Serverless APIy EMR Serverless integración de serviciosAPI. Sin embargo, cancelJobRun.sync espera a que la aplicación alcance el CANCELLED estado.

EMRCasos de uso de la integración sin servidor

Para los optimizados EMR Serverless para la integración de servicios, le recomendamos que cree una sola aplicación y, a continuación, la utilice 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. Los siguientes ejemplos de Estado del flujo de trabajo de tareas estado muestran casos de uso de la integración EMR Serverless APIscon 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 integra con EMR Serverless para ejecutar varios trabajos en su Cuenta de AWS, consulte Ejecute un EMR Serverless job.

Para obtener información sobre la configuración IAM permisos al usar Step Functions con otros AWS servicios, consulteCómo Step Functions genera IAM políticas para servicios integrados.

En los ejemplos que se muestran en los siguientes casos de uso, sustituya el italicized texto con la información específica del recurso. Por ejemplo, sustituya yourApplicationId con el ID de su EMR Serverless aplicación, como00yv7iv71inak893.

Crear una aplicación

El siguiente ejemplo de estado de tarea crea una aplicación mediante la integración API del createApplicationservicio.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

El siguiente ejemplo de estado de tarea inicia una aplicación mediante la integración del servicio startApplication.sync. API

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

Detener una aplicación

El siguiente ejemplo de estado de tarea detiene una aplicación que utiliza la integración del servicio stopApplication.sync. API

"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 de tarea, se elimina una aplicación mediante la integración del servicio deleteApplication.sync. API

"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 integración del servicio 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://<amzn-s3-demo-bucket>/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

El siguiente ejemplo de estado de tarea cancela un trabajo en una aplicación mediante la integración del servicio cancelJobRun.sync. API

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

IAMpolíticas de llamadas Amazon EMR Serverless

Al crear una máquina de estados mediante la consola, Step Functions crea automáticamente un rol de ejecución para su máquina de estados con los privilegios mínimos necesarios. Estos se generan automáticamente IAM los roles son válidos para Región de AWS en la que se crea la máquina de estados.

Las siguientes plantillas de ejemplo muestran cómo AWS Step Functions genera IAM políticas en función de los recursos de la definición de su máquina de estados. Para obtener más información, consulte Cómo Step Functions genera IAM políticas para servicios integrados y Descubra los patrones de integración de servicios en Step Functions.

Te recomendamos que cuando crees IAM políticas, no incluya caracteres comodín en las políticas. Como práctica recomendada de seguridad, debe reducir el alcance de las políticas en la medida de lo posible. Debe usar políticas dinámicas solo cuando no se conozcan ciertos parámetros de entrada durante el tiempo de ejecución.

Además, los usuarios administradores deben tener cuidado al conceder roles de ejecución a los usuarios que no sean administradores para ejecutar las máquinas de estado. Le recomendamos que incluya passRole políticas en las funciones de ejecución si va a crear políticas por su cuenta. También le recomendamos que añada las claves de contexto aws:SourceARN y aws:SourceAccount en los roles de ejecución.

IAMejemplos de políticas para la integración EMR sin servidor con Step Functions

IAMejemplo de política para CreateApplication

El siguiente es un ejemplo IAM de política para una máquina de estados con un CreateApplication Estado del flujo de trabajo de tareas estado.

nota

Debe especificar los CreateServiceLinkedRole permisos en sus IAM políticas durante la creación de la primera aplicación en su cuenta. A partir de entonces, ya no necesitará añadir este permiso. Para obtener más información al respecto CreateServiceLinkedRole, consulte la CreateServiceLinkedRoleversión https://docs.aws.amazon.com/IAM/ más reciente de//. APIReference

Los recursos estáticos y dinámicos de las siguientes políticas son los mismos.

Run a Job (.sync)
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "emr-serverless:CreateApplication" ], "Resource": [ "arn:aws:emr-serverless:{{region}}:{{accountId}}:/*" ] }, { "Effect": "Allow", "Action": [ "emr-serverless:GetApplication", "emr-serverless:DeleteApplication" ], "Resource": [ "arn:aws:emr-serverless:{{region}}:{{accountId}}:/applications/*" ] }, { "Effect": "Allow", "Action": [ "events:PutTargets", "events:PutRule", "events:DescribeRule" ], "Resource": [ "arn:aws:events:{{region}}:{{accountId}}:rule/StepFunctionsGetEventsForEMRServerlessApplicationRule" ] }, { "Effect": "Allow", "Action": "iam:CreateServiceLinkedRole", "Resource": "arn:aws:iam::{{accountId}}:role/aws-service-role/ops.emr-serverless.amazonaws.com/AWS ServiceRoleForAmazonEMRServerless*", "Condition": { "StringLike": { "iam:AWSServiceName": "ops.emr-serverless.amazonaws.com" } } } ] }
Request Response
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "emr-serverless:CreateApplication" ], "Resource": [ "arn:aws:emr-serverless:{{region}}:{{accountId}}:/*" ] }, { "Effect": "Allow", "Action": "iam:CreateServiceLinkedRole", "Resource": "arn:aws:iam::{{accountId}}:role/aws-service-role/ops.emr-serverless.amazonaws.com/AWS ServiceRoleForAmazonEMRServerless*", "Condition": { "StringLike": { "iam:AWSServiceName": "ops.emr-serverless.amazonaws.com" } } } ] }

IAMejemplo de política para StartApplication

Recursos estáticos

Los siguientes son ejemplos IAM de políticas para recursos estáticos cuando se utiliza una máquina de estados con un StartApplication Estado del flujo de trabajo de tareas estado.

Run a Job (.sync)
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "emr-serverless:StartApplication", "emr-serverless:GetApplication", "emr-serverless:StopApplication" ], "Resource": [ "arn:aws:emr-serverless:{{region}}:{{accountId}}:/applications/[[applicationId]]" ] }, { "Effect": "Allow", "Action": [ "events:PutTargets", "events:PutRule", "events:DescribeRule" ], "Resource": [ "arn:aws:events:{{region}}:{{accountId}}:rule/StepFunctionsGetEventsForEMRServerlessApplicationRule" ] } ] }
Request Response
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "emr-serverless:StartApplication" ], "Resource": [ "arn:aws:emr-serverless:{{region}}:{{accountId}}:/applications/[[applicationId]]" ] } ] }
Recursos dinámicos

Los siguientes son ejemplos IAM de políticas para recursos dinámicos cuando se utiliza una máquina de estados con un StartApplication Estado del flujo de trabajo de tareas estado.

Run a Job (.sync)
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "emr-serverless:StartApplication", "emr-serverless:GetApplication", "emr-serverless:StopApplication" ], "Resource": [ "arn:aws:emr-serverless:{{region}}:{{accountId}}:/applications/*" ] }, { "Effect": "Allow", "Action": [ "events:PutTargets", "events:PutRule", "events:DescribeRule" ], "Resource": [ "arn:aws:events:{{region}}:{{accountId}}:rule/StepFunctionsGetEventsForEMRServerlessApplicationRule" ] } ] }
Request Response
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "emr-serverless:StartApplication" ], "Resource": [ "arn:aws:emr-serverless:{{region}}:{{accountId}}:/applications/*" ] } ] }

IAMejemplo de política para StopApplication

Recursos estáticos

Los siguientes son ejemplos IAM de políticas para recursos estáticos cuando se utiliza una máquina de estados con un StopApplication Estado del flujo de trabajo de tareas estado.

Run a Job (.sync)
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "emr-serverless:StopApplication", "emr-serverless:GetApplication" ], "Resource": [ "arn:aws:emr-serverless:{{region}}:{{accountId}}:/applications/[[applicationId]]" ] }, { "Effect": "Allow", "Action": [ "events:PutTargets", "events:PutRule", "events:DescribeRule" ], "Resource": [ "arn:aws:events:{{region}}:{{accountId}}:rule/StepFunctionsGetEventsForEMRServerlessApplicationRule" ] } ] }
Request Response
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "emr-serverless:StopApplication" ], "Resource": [ "arn:aws:emr-serverless:{{region}}:{{accountId}}:/applications/[[applicationId]]" ] } ] }
Recursos dinámicos

Los siguientes son ejemplos IAM de políticas para recursos dinámicos cuando se utiliza una máquina de estados con un StopApplication Estado del flujo de trabajo de tareas estado.

Run a Job (.sync)
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "emr-serverless:StopApplication", "emr-serverless:GetApplication" ], "Resource": [ "arn:aws:emr-serverless:{{region}}:{{accountId}}:/applications/*" ] }, { "Effect": "Allow", "Action": [ "events:PutTargets", "events:PutRule", "events:DescribeRule" ], "Resource": [ "arn:aws:events:{{region}}:{{accountId}}:rule/StepFunctionsGetEventsForEMRServerlessApplicationRule" ] } ] }
Request Response
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "emr-serverless:StopApplication" ], "Resource": [ "arn:aws:emr-serverless:{{region}}:{{accountId}}:/applications/*" ] } ] }

IAMejemplo de política para DeleteApplication

Recursos estáticos

Los siguientes son ejemplos IAM de políticas para recursos estáticos cuando se utiliza una máquina de estados con un DeleteApplication Estado del flujo de trabajo de tareas estado.

Run a Job (.sync)
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "emr-serverless:DeleteApplication", "emr-serverless:GetApplication" ], "Resource": [ "arn:aws:emr-serverless:{{region}}:{{accountId}}:/applications/[[applicationId]]" ] }, { "Effect": "Allow", "Action": [ "events:PutTargets", "events:PutRule", "events:DescribeRule" ], "Resource": [ "arn:aws:events:{{region}}:{{accountId}}:rule/StepFunctionsGetEventsForEMRServerlessApplicationRule" ] } ] }
Request Response
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "emr-serverless:DeleteApplication" ], "Resource": [ "arn:aws:emr-serverless:{{region}}:{{accountId}}:/applications/[[applicationId]]" ] } ] }
Recursos dinámicos

Los siguientes son ejemplos IAM de políticas para recursos dinámicos cuando se utiliza una máquina de estados con un DeleteApplication Estado del flujo de trabajo de tareas estado.

Run a Job (.sync)
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "emr-serverless:DeleteApplication", "emr-serverless:GetApplication" ], "Resource": [ "arn:aws:emr-serverless:{{region}}:{{accountId}}:/applications/*" ] }, { "Effect": "Allow", "Action": [ "events:PutTargets", "events:PutRule", "events:DescribeRule" ], "Resource": [ "arn:aws:events:{{region}}:{{accountId}}:rule/StepFunctionsGetEventsForEMRServerlessApplicationRule" ] } ] }
Request Response
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "emr-serverless:DeleteApplication" ], "Resource": [ "arn:aws:emr-serverless:{{region}}:{{accountId}}:/applications/*" ] } ] }

IAMejemplo de política para StartJobRun

Recursos estáticos

Los siguientes son ejemplos IAM de políticas para recursos estáticos cuando se utiliza una máquina de estados con un StartJobRun Estado del flujo de trabajo de tareas estado.

Run a Job (.sync)
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "emr-serverless:StartJobRun" ], "Resource": [ "arn:aws:emr-serverless:{{region}}:{{accountId}}:/applications/[[applicationId]]" ] }, { "Effect": "Allow", "Action": "iam:PassRole", "Resource": [ "[[jobExecutionRoleArn]]" ], "Condition": { "StringEquals": { "iam:PassedToService": "emr-serverless.amazonaws.com" } } }, { "Effect": "Allow", "Action": [ "emr-serverless:GetJobRun", "emr-serverless:CancelJobRun" ], "Resource": [ "arn:aws:emr-serverless:{{region}}:{{accountId}}:/applications/[[applicationId]]/jobruns/*" ] }, { "Effect": "Allow", "Action": [ "events:PutTargets", "events:PutRule", "events:DescribeRule" ], "Resource": [ "arn:aws:events:{{region}}:{{accountId}}:rule/StepFunctionsGetEventsForEMRServerlessJobRule" ] } ] }
Request Response
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "emr-serverless:StartJobRun" ], "Resource": [ "arn:aws:emr-serverless:{{region}}:{{accountId}}:/applications/[[applicationId]]" ] }, { "Effect": "Allow", "Action": "iam:PassRole", "Resource": [ "[[jobExecutionRoleArn]]" ], "Condition": { "StringEquals": { "iam:PassedToService": "emr-serverless.amazonaws.com" } } } ] }
Recursos dinámicos

Los siguientes son ejemplos IAM de políticas para recursos dinámicos cuando se utiliza una máquina de estados con un StartJobRun Estado del flujo de trabajo de tareas estado.

Run a Job (.sync)
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "emr-serverless:StartJobRun", "emr-serverless:GetJobRun", "emr-serverless:CancelJobRun" ], "Resource": [ "arn:aws:emr-serverless:{{region}}:{{accountId}}:/applications/*" ] }, { "Effect": "Allow", "Action": "iam:PassRole", "Resource": [ "[[jobExecutionRoleArn]]" ], "Condition": { "StringEquals": { "iam:PassedToService": "emr-serverless.amazonaws.com" } } }, { "Effect": "Allow", "Action": [ "events:PutTargets", "events:PutRule", "events:DescribeRule" ], "Resource": [ "arn:aws:events:{{region}}:{{accountId}}:rule/StepFunctionsGetEventsForEMRServerlessJobRule" ] } ] }
Request Response
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "emr-serverless:StartJobRun" ], "Resource": [ "arn:aws:emr-serverless:{{region}}:{{accountId}}:/applications/*" ] }, { "Effect": "Allow", "Action": "iam:PassRole", "Resource": [ "[[jobExecutionRoleArn]]" ], "Condition": { "StringEquals": { "iam:PassedToService": "emr-serverless.amazonaws.com" } } } ] }

IAMejemplo de política para CancelJobRun

Recursos estáticos

Los siguientes son ejemplos IAM de políticas para recursos estáticos cuando se utiliza una máquina de estados con un CancelJobRun Estado del flujo de trabajo de tareas estado.

Run a Job (.sync)
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "emr-serverless:CancelJobRun", "emr-serverless:GetJobRun" ], "Resource": [ "arn:aws:emr-serverless:{{region}}:{{accountId}}:/applications/[[applicationId]]/jobruns/[[jobRunId]]" ] }, { "Effect": "Allow", "Action": [ "events:PutTargets", "events:PutRule", "events:DescribeRule" ], "Resource": [ "arn:aws:events:{{region}}:{{accountId}}:rule/StepFunctionsGetEventsForEMRServerlessJobRule" ] } ] }
Request Response
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "emr-serverless:CancelJobRun" ], "Resource": [ "arn:aws:emr-serverless:{{region}}:{{accountId}}:/applications/[[applicationId]]/jobruns/[[jobRunId]]" ] } ] }
Recursos dinámicos

Los siguientes son ejemplos IAM de políticas para recursos dinámicos cuando se utiliza una máquina de estados con un CancelJobRun Estado del flujo de trabajo de tareas estado.

Run a Job (.sync)
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "emr-serverless:CancelJobRun", "emr-serverless:GetJobRun" ], "Resource": [ "arn:aws:emr-serverless:{{region}}:{{accountId}}:/applications/*" ] }, { "Effect": "Allow", "Action": [ "events:PutTargets", "events:PutRule", "events:DescribeRule" ], "Resource": [ "arn:aws:events:{{region}}:{{accountId}}:rule/StepFunctionsGetEventsForEMRServerlessJobRule" ] } ] }
Request Response
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "emr-serverless:CancelJobRun" ], "Resource": [ "arn:aws:emr-serverless:{{region}}:{{accountId}}:/applications/*" ] } ] }