Creación y administración de aplicaciones Amazon EMR Serverless con Step Functions - AWS Step Functions

Creación y administración de aplicaciones Amazon EMR Serverless con Step Functions

Aprenda a crear, iniciar, detener y eliminar aplicaciones en EMR sin servidor mediante Step Functions. En esta página se enumeran las API compatibles y se proporcionan estados Task de ejemplo para realizar casos de uso comunes.

Para obtener más información sobre la integración con los servicios de AWS en Step Functions, consulte Integración de los servicios de y Cómo pasar parámetros a una API de servicio en Step Functions.

Características principales de la integración optimizada de EMR Serverless
  • 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 integración de EMR Serverless optimizada difiere considerablemente de la integración del servicio del SDK de AWS.

  • 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 de EMR Serverless y sus 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 y createApplication.sync funcionen, tiene que tener configurados los permisos necesarios para crear el rol vinculado a servicios AWSServiceRoleForAmazonEMRServerless. Para obtener más información al respecto, incluida una instrucción que puede añadir a la política de permisos de IAM, consulte Uso de roles vinculados a servicios para EMR Serverless.

CreateApplication Ninguno

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

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.

{ "ApplicationId": "string" }

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.

{ "ApplicationId": "string" }

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

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.

{ "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 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.

{ "ApplicationId": "string" }

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

deleteApplication

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

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.

{ "ApplicationId": "string" }

deleteApplication.sync

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

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.

{ "ApplicationId": "string" }

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

startJobRun

Inicia una ejecución de trabajo.

StartJobRun Ninguno

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

cancelJobRun

Cancela una ejecución de trabajo.

CancelJobRun Ninguno

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

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 solicitudes de StartJobRun, todas las cuales utilizan la misma aplicación. En los siguientes ejemplos de estados Estado de un flujo de trabajo de 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 estado que se integre con EMR Serverless para ejecutar varios trabajos, consulte Ejecutar un trabajo de EMR Serverless.

Para obtener información acerca de cómo configurar permisos de IAM cuando se utiliza Step Functions con otros servicios de AWS, consulte Generación de políticas de IAM para servicios integrados por Steps Functions.

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, sustituya yourApplicationId por el ID de la aplicación de EMR Serverless, por ejemplo 00yv7iv71inak893.

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", "Arguments": { "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", "Arguments": { "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", "Arguments": { "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", "Arguments": { "ApplicationId": "yourApplicationId" }, "End": true }

Iniciar un trabajo en una aplicación

En el siguiente ejemplo de estado Task se inicia un trabajo en una aplicación mediante la API de integración del servicio StartJobrun.sync.

"Start_Job": { "Type": "Task", "Resource": "arn:aws:states:::emr-serverless:startJobRun.sync", "Arguments": { "ApplicationId": "yourApplicationId", "ExecutionRoleArn": "arn:aws:iam::account-id: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

En el siguiente ejemplo de estado Task se cancela un trabajo en una aplicación mediante la API de integración del servicio CancelJobrun.sync.

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

Políticas de IAM para las llamadas a Amazon EMR Serverless

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

En estas plantillas de ejemplo, se muestra cómo AWS Step Functions genera políticas de IAM basadas en los recursos de la definición de la máquina de estado. Para obtener más información, consulte Generación de políticas de IAM para servicios integrados por Steps Functions y Descubrimiento de los patrones de integración de servicios en Step Functions.

Le recomendamos que, al crear políticas de IAM, 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 políticas de PassRole en los roles 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.

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

Ejemplo de política de IAM para CreateApplication

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

nota

Debe especificar los permisos CreateServiceLinkedrole en las políticas de IAM 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 información acerca de CreateServiceLinkedRole, consulte CreateServiceLinkedRole en https://docs.aws.amazon.com/IAM/latest/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:us-east-1:123456789012:/*" ] }, { "Effect": "Allow", "Action": [ "emr-serverless:GetApplication", "emr-serverless:DeleteApplication" ], "Resource": [ "arn:aws:emr-serverless:us-east-1:123456789012:/applications/*" ] }, { "Effect": "Allow", "Action": [ "events:PutTargets", "events:PutRule", "events:DescribeRule" ], "Resource": [ "arn:aws:events:us-east-1:123456789012:rule/StepFunctionsGetEventsForEMRServerlessApplicationRule" ] }, { "Effect": "Allow", "Action": "iam:CreateServiceLinkedRole", "Resource": "arn:aws:iam::123456789012:role/aws-service-role/ops.emr-serverless.amazonaws.com/AWSServiceRoleForAmazonEMRServerless*", "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:us-east-1:123456789012:/*" ] }, { "Effect": "Allow", "Action": "iam:CreateServiceLinkedRole", "Resource": "arn:aws:iam::123456789012:role/aws-service-role/ops.emr-serverless.amazonaws.com/AWSServiceRoleForAmazonEMRServerless*", "Condition": { "StringLike": { "iam:AWSServiceName": "ops.emr-serverless.amazonaws.com" } } } ] }

Ejemplo de política de IAM para StartApplication

Recursos estáticos

A continuación, se muestran ejemplos de políticas de IAM para recursos estáticos cuando se utiliza una máquina de estado con un estado Estado de un flujo de trabajo de tarea de StartApplication.

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:us-east-1:123456789012:/applications/applicationId" ] }, { "Effect": "Allow", "Action": [ "events:PutTargets", "events:PutRule", "events:DescribeRule" ], "Resource": [ "arn:aws:events:us-east-1:123456789012:rule/StepFunctionsGetEventsForEMRServerlessApplicationRule" ] } ] }
Request Response
{ "Version":"2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "emr-serverless:StartApplication" ], "Resource": [ "arn:aws:emr-serverless:us-east-1:123456789012:/applications/applicationId" ] } ] }
Recursos dinámicos

A continuación, se muestran ejemplos de políticas de IAM para recursos dinámicos cuando se utiliza una máquina de estado con un estado Estado de un flujo de trabajo de tarea de StartApplication.

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:us-east-1:123456789012:/applications/*" ] }, { "Effect": "Allow", "Action": [ "events:PutTargets", "events:PutRule", "events:DescribeRule" ], "Resource": [ "arn:aws:events:us-east-1:123456789012:rule/StepFunctionsGetEventsForEMRServerlessApplicationRule" ] } ] }
Request Response
{ "Version":"2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "emr-serverless:StartApplication" ], "Resource": [ "arn:aws:emr-serverless:us-east-1:123456789012:/applications/*" ] } ] }

Ejemplo de política de IAM para StopApplication

Recursos estáticos

A continuación, se muestran ejemplos de políticas de IAM para recursos estáticos cuando se utiliza una máquina de estado con un estado Estado de un flujo de trabajo de tarea de StopApplication.

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

A continuación, se muestran ejemplos de políticas de IAM para recursos dinámicos cuando se utiliza una máquina de estado con un estado Estado de un flujo de trabajo de tarea de StopApplication.

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

Ejemplo de política de IAM para DeleteApplication

Recursos estáticos

A continuación, se muestran ejemplos de políticas de IAM para recursos estáticos cuando se utiliza una máquina de estado con un estado Estado de un flujo de trabajo de tarea de DeleteApplication.

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

A continuación, se muestran ejemplos de políticas de IAM para recursos dinámicos cuando se utiliza una máquina de estado con un estado Estado de un flujo de trabajo de tarea de DeleteApplication.

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

Ejemplo de política de IAM para StartJobrun

Recursos estáticos

A continuación, se muestran ejemplos de políticas de IAM para recursos estáticos cuando se utiliza una máquina de estado con un estado Estado de un flujo de trabajo de tarea de StartJobRun.

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

A continuación, se muestran ejemplos de políticas de IAM para recursos dinámicos cuando se utiliza una máquina de estado con un estado Estado de un flujo de trabajo de tarea de StartJobRun.

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:us-east-1:123456789012:/applications/*" ] }, { "Effect": "Allow", "Action": "iam:PassRole", "Resource": [ "arn:aws:iam::123456789012:role/jobExecutionRoleArn" ], "Condition": { "StringEquals": { "iam:PassedToService": "emr-serverless.amazonaws.com" } } }, { "Effect": "Allow", "Action": [ "events:PutTargets", "events:PutRule", "events:DescribeRule" ], "Resource": [ "arn:aws:events:us-east-1:123456789012:rule/StepFunctionsGetEventsForEMRServerlessJobRule" ] } ] }
Request Response
{ "Version":"2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "emr-serverless:StartJobRun" ], "Resource": [ "arn:aws:emr-serverless:us-east-1:123456789012:/applications/*" ] }, { "Effect": "Allow", "Action": "iam:PassRole", "Resource": [ "arn:aws:iam::123456789012:role/jobExecutionRoleArn" ], "Condition": { "StringEquals": { "iam:PassedToService": "emr-serverless.amazonaws.com" } } } ] }

Ejemplo de política de IAM para CancelJobRun

Recursos estáticos

A continuación, se muestran ejemplos de políticas de IAM para recursos estáticos cuando se utiliza una máquina de estado con un estado Estado de un flujo de trabajo de tarea de CancelJobRun.

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

A continuación, se muestran ejemplos de políticas de IAM para recursos dinámicos cuando se utiliza una máquina de estado con un estado Estado de un flujo de trabajo de tarea de CancelJobRun.

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