Crie e gerencie Amazon EMR Serverless aplicativos com Step Functions - AWS Step Functions

As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.

Crie e gerencie Amazon EMR Serverless aplicativos com Step Functions

Saiba como criar, iniciar, parar e excluir aplicativos no EMR Serverless usando o Step Functions. Esta página lista os Task estados suportados APIs e fornece exemplos para realizar casos de uso comuns.

Para saber mais sobre a integração com AWS serviços em Step Functions, consulte e. Integração de produtos da Passando parâmetros para um serviço API em Step Functions

Principais recursos do Optimized EMR Serverless ETL zero
  • O otimizado EMR Serverless a integração de serviços tem um conjunto personalizado APIsque envolve o subjacente EMR Serverless APIs. Devido a essa personalização, o otimizado EMR Serverless a integração difere significativamente da AWS SDKintegração de serviços.

  • Além disso, o otimizado EMR Serverless a integração suporta o padrão de Executar um trabalho (.sync) integração.

  • O padrão de Aguarde um retorno de chamada com o token de tarefa integração não é suportado.

EMR Serverless integração de serviços APIs

Para integrar AWS Step Functions with EMR Serverless, você pode usar os seguintes seis EMR Serverless integração de serviçosAPIs. Essas integrações de serviços APIs são semelhantes às correspondentes EMR Serverless APIs, com algumas diferenças nos campos que são passados e nas respostas que são retornadas.

A tabela a seguir descreve as diferenças entre cada EMR Serverless integração de serviços API e seus correspondentes EMR Serverless API.

EMR Serverless integração de serviços API Correspondente EMR Serverless API Diferenças

createApplication

Cria um aplicativo.

EMR Serverless está vinculado a um tipo único de IAM função conhecida como função vinculada ao serviço. Para que createApplication e createApplication.sync funcionem, você deve ter configurado as permissões necessárias para criar a função vinculada ao serviço AWS ServiceRoleForAmazonEMRServerless. Para obter mais informações sobre isso, incluindo uma declaração que você pode adicionar ao seu IAM política de permissões, consulte Uso de funções vinculadas a serviços para EMR Serverless.

CreateApplication Nenhum

createApplication.sync

Cria um aplicativo.

CreateApplication

Não há diferenças entre as solicitações e respostas do EMR Serverless APIe EMR Serverless integração de serviçosAPI. No entanto, createApplication.sync espera que o aplicativo alcance o CREATED estado.

startApplication

Inicia um aplicativo especificado e inicializa a capacidade inicial do aplicativo, se configurado.

StartApplication

A ferramenta EMR Serverless APIa resposta não contém nenhum dado, mas o EMR Serverless a API resposta de integração de serviços inclui os seguintes dados.

{ "ApplicationId": "string" }

startApplication.sync

Inicia um aplicativo especificado e inicializa a capacidade inicial do aplicativo, se configurado.

StartApplication

A ferramenta EMR Serverless APIa resposta não contém nenhum dado, mas o EMR Serverless a API resposta de integração de serviços inclui os seguintes dados.

{ "ApplicationId": "string" }

Além disso, startApplication.sync espera que o aplicativo alcance o STARTED estado.

stopApplication

Interrompe um aplicativo especificado e libera a capacidade inicial, se configurada. Todas as tarefas programadas e em execução devem ser concluídas ou canceladas antes de interromper um aplicativo.

StopApplication

A ferramenta EMR Serverless APIa resposta não contém nenhum dado, mas o EMR Serverless a API resposta de integração de serviços inclui os seguintes dados.

{ "ApplicationId": "string" }

stopApplication.sync

Interrompe um aplicativo especificado e libera a capacidade inicial, se configurada. Todas as tarefas programadas e em execução devem ser concluídas ou canceladas antes de interromper um aplicativo.

StopApplication

A ferramenta EMR Serverless APIa resposta não contém nenhum dado, mas o EMR Serverless a API resposta de integração de serviços inclui os seguintes dados.

{ "ApplicationId": "string" }

Além disso, stopApplication.sync espera que o aplicativo alcance o STOPPED estado.

deleteApplication

Exclui um aplicativo. Um aplicativo deve estar no estado STOPPED ou CREATED para ser excluído.

DeleteApplication

A ferramenta EMR Serverless APIa resposta não contém nenhum dado, mas o EMR Serverless a API resposta de integração de serviços inclui os seguintes dados.

{ "ApplicationId": "string" }

deleteApplication.sync

Exclui um aplicativo. Um aplicativo deve estar no estado STOPPED ou CREATED para ser excluído.

DeleteApplication

A ferramenta EMR Serverless APIa resposta não contém nenhum dado, mas o EMR Serverless a API resposta de integração de serviços inclui os seguintes dados.

{ "ApplicationId": "string" }

Além disso, stopApplication.sync espera que o aplicativo alcance o TERMINATED estado.

startJobRun

Inicia uma execução de tarefa.

StartJobRun Nenhum

startJobRun.sync

Inicia uma execução de tarefa.

StartJobRun

Não há diferenças entre as solicitações e respostas do EMR Serverless APIe EMR Serverless integração de serviçosAPI. No entanto, startJobRun.sync espera que o aplicativo alcance o SUCCESS estado.

cancelJobRun

Cancela uma execução de tarefa.

CancelJobRun Nenhum

cancelJobRun.sync

Cancela uma execução de tarefa.

CancelJobRun

Não há diferenças entre as solicitações e respostas do EMR Serverless APIe EMR Serverless integração de serviçosAPI. No entanto, cancelJobRun.sync espera que o aplicativo alcance o CANCELLED estado.

EMRCasos de uso de integração sem servidor

Para os otimizados EMR Serverless integração de serviços, recomendamos que você crie um único aplicativo e, em seguida, use esse aplicativo para executar vários trabalhos. Por exemplo, em uma única máquina de estado, você pode incluir várias startJobRunsolicitações, todas usando o mesmo aplicativo. Os exemplos de Estado do fluxo de trabalho da tarefa estado a seguir mostram casos de uso para integrar EMR Serverless APIscom Step Functions. Para obter informações sobre outros casos de uso do EMR Serverless, veja O que é Amazon EMR Serverless.

dica

Para implantar um exemplo de uma máquina de estado que se integra com EMR Serverless para executar vários trabalhos em seu Conta da AWS, consulte Execute um EMR Serverless trabalho.

Para saber mais sobre a configuração IAM permissões ao usar Step Functions com outros AWS serviços, vejaComo o Step Functions gera IAM políticas para serviços integrados.

Nos exemplos mostrados nos casos de uso a seguir, substitua o italicized texto com as informações específicas do seu recurso. Por exemplo, substitua yourApplicationId com o ID do seu EMR Serverless aplicativo, como00yv7iv71inak893.

Cria uma aplicação

O exemplo de estado da tarefa a seguir cria um aplicativo usando a integração API do serviço 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 o aplicativo

O exemplo de estado da tarefa a seguir inicia um aplicativo usando a integração API do serviço startApplication.sync.

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

Interromper um aplicativo

O exemplo de estado da tarefa a seguir interrompe um aplicativo usando a integração API do serviço stopApplication.sync.

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

Deleta o aplicativo

O exemplo de estado da tarefa a seguir exclui um aplicativo usando a integração do serviço deleteApplication.sync. API

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

Inicia uma tarefa em um aplicativo

O exemplo de estado da tarefa a seguir inicia um trabalho em um aplicativo usando a integração API do serviço 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://<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 }

Cancela uma tarefa em um aplicativo

O exemplo de estado da tarefa a seguir cancela um trabalho em um aplicativo usando a integração do serviço cancelJobRun.sync. API

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

IAMpolíticas para chamadas Amazon EMR Serverless

Quando você cria uma máquina de estado usando o console, Step Functions cria automaticamente uma função de execução para sua máquina de estado com o mínimo de privilégios necessários. Estes são gerados automaticamente IAM as funções são válidas para o Região da AWS na qual você cria a máquina de estado.

Os modelos de exemplo a seguir mostram como AWS Step Functions gera IAM políticas com base nos recursos em sua definição de máquina de estado. Para ter mais informações, consulte Como o Step Functions gera IAM políticas para serviços integrados e Descubra padrões de integração de serviços em Step Functions.

Recomendamos que, ao criar IAM políticas, não inclua curingas nas políticas. Como prática recomendada de segurança, você deve definir o escopo de suas políticas o máximo possível. Use políticas dinâmicas somente quando determinados parâmetros de entrada não forem conhecidos durante o runtime.

Além disso, os usuários administradores devem ter cuidado ao conceder perfis de execução a usuários não administradores para executar as máquinas de estado. Recomendamos que você inclua passRole políticas nas funções de execução se estiver criando políticas por conta própria. Também recomendamos que você adicione as chaves de contexto aws:SourceARN e aws:SourceAccount e nos perfis de execução.

IAMexemplos de políticas para integração EMR sem servidor com Step Functions

IAMexemplo de política para CreateApplication

Veja a seguir um exemplo IAM de política para uma máquina de estado com um CreateApplication Estado do fluxo de trabalho da tarefa estado.

nota

Você precisa especificar as CreateServiceLinkedRole permissões em suas IAM políticas durante a criação do primeiro aplicativo em sua conta. Depois disso, não será necessário adicionar essa permissão. Para obter informações sobre CreateServiceLinkedRole, consulte as mais CreateServiceLinkedRole https://docs.aws.amazon.com/IAM/recentes/ /. APIReference

Os recursos estáticos e dinâmicos para as políticas a seguir são os mesmos.

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" } } } ] }

IAMexemplo de política para StartApplication

Recursos estáticos

Veja a seguir exemplos IAM de políticas para recursos estáticos quando você usa uma máquina de estado com um StartApplication Estado do fluxo de trabalho da tarefa 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

Veja a seguir exemplos IAM de políticas para recursos dinâmicos quando você usa uma máquina de estado com um StartApplication Estado do fluxo de trabalho da tarefa 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/*" ] } ] }

IAMexemplo de política para StopApplication

Recursos estáticos

Veja a seguir exemplos IAM de políticas para recursos estáticos quando você usa uma máquina de estado com um StopApplication Estado do fluxo de trabalho da tarefa 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

Veja a seguir exemplos IAM de políticas para recursos dinâmicos quando você usa uma máquina de estado com um StopApplication Estado do fluxo de trabalho da tarefa 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/*" ] } ] }

IAMexemplo de política para DeleteApplication

Recursos estáticos

Veja a seguir exemplos IAM de políticas para recursos estáticos quando você usa uma máquina de estado com um DeleteApplication Estado do fluxo de trabalho da tarefa 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

Veja a seguir exemplos IAM de políticas para recursos dinâmicos quando você usa uma máquina de estado com um DeleteApplication Estado do fluxo de trabalho da tarefa 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/*" ] } ] }

IAMexemplo de política para StartJobRun

Recursos estáticos

Veja a seguir exemplos IAM de políticas para recursos estáticos quando você usa uma máquina de estado com um StartJobRun Estado do fluxo de trabalho da tarefa 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

Veja a seguir exemplos IAM de políticas para recursos dinâmicos quando você usa uma máquina de estado com um StartJobRun Estado do fluxo de trabalho da tarefa 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" } } } ] }

IAMexemplo de política para CancelJobRun

Recursos estáticos

Veja a seguir exemplos IAM de políticas para recursos estáticos quando você usa uma máquina de estado com um CancelJobRun Estado do fluxo de trabalho da tarefa 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

Veja a seguir exemplos IAM de políticas para recursos dinâmicos quando você usa uma máquina de estado com um CancelJobRun Estado do fluxo de trabalho da tarefa 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/*" ] } ] }