Criar e gerenciar aplicações do Amazon EMR Serverless com o Step Functions - AWS Step Functions

Criar e gerenciar aplicações do Amazon EMR Serverless com o Step Functions

Saiba como criar, iniciar, interromper e excluir aplicações no EMR Sem Servidor usando o Step Functions. Esta página lista as APIs aceitas e fornece exemplos de estados Task para executar casos de uso comuns.

Para saber mais sobre a integração com serviços da AWS no Step Functions, consulte Integração de produtos da e Transmitir parâmetros a uma API de serviço no Step Functions.

Principais recursos da integração otimizada ao EMR Serverless
  • A integração otimizada de serviços EMR Serverless tem um conjunto personalizado de APIs que agrupam as APIs EMR Serverless subjacentes. Em virtude dessa personalização, a integração otimizada do EMR Serverless difere de forma significativa da integração do serviço de SDK da AWS.

  • Além disso, a integração otimizada do EMR Serverless é compatível com o padrão de integração do Executar um trabalho (.sync).

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

APIs de integração de serviço do EMR Serverless

Para integrar o AWS Step Functions ao EMR Serverless, use as seis APIs de integração de serviço do EMR Serverless apresentadas a seguir. As APIs de integração de serviço são semelhantes às APIs correspondentes do EMR Serverless, com algumas diferenças nos campos que são passados e nas respostas retornadas.

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

API de integração de serviço do EMR Serverless API do EMR Serverless correspondente Diferenças

createApplication

Cria um aplicativo.

O EMR Serverless está vinculado a um tipo exclusivo de função do IAM 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 AWSServiceRoleForAmazonEMRServerless. Para obter mais informações sobre isso, incluindo uma instrução de que você pode adicionar à política de permissões do IAM, consulte Usar funções vinculadas ao serviço para o EMR Serverless.

CreateApplication Nenhum

createApplication.sync

Cria um aplicativo.

CreateApplication

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

startApplication

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

StartApplication

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

{ "ApplicationId": "string" }

startApplication.sync

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

StartApplication

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

{ "ApplicationId": "string" }

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

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 resposta da API do EMR Serverless não contém nenhum dado, mas a resposta da API de integração de serviços do EMR Serverless 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 resposta da API do EMR Serverless não contém nenhum dado, mas a resposta da API de integração de serviços do EMR Serverless inclui os seguintes dados.

{ "ApplicationId": "string" }

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

deleteApplication

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

DeleteApplication

A resposta da API do EMR Serverless não contém nenhum dado, mas a resposta da API de integração de serviços do EMR Serverless 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 resposta da API do EMR Serverless não contém nenhum dado, mas a resposta da API de integração de serviços do EMR Serverless inclui os seguintes dados.

{ "ApplicationId": "string" }

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

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 as respostas da API do EMR Serverless e da API de integração de serviços do EMR Serverless. No entanto, startJobRun.sync espera que o aplicativo alcance o estado de SUCCESS.

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 as respostas da API do EMR Serverless e da API de integração de serviços do EMR Serverless. No entanto, cancelJobRun.sync espera que o aplicativo alcance o estado de CANCELLED.

Casos de uso da integração do EMR sem servidor

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

dica

Para implementar um exemplo de uma máquina de estado que se integra ao EMR Serverless para executar várias tarefas, consulte Executar uma tarefa do EMR Serverless.

Para saber mais sobre como configurar as permissões do IAM ao usar o Step Functions com outros serviços da AWS, consulte Como o Step Functions gera políticas do IAM para serviços integrados.

Nos exemplos mostrados nos casos de uso a seguir, substitua o texto em itálico pelas informações específicas do seu recurso. Por exemplo, substitua yourApplicationId pelo ID do seu aplicativo EMR Serverless, como 00yv7iv71inak893.

Cria uma aplicação

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

Inicia o aplicativo

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

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

Interrompe o aplicativo

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

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

Deleta o aplicativo

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

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

Inicia uma tarefa em um aplicativo

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

Cancela uma tarefa em um aplicativo

O exemplo de estado da Tarefa a seguir cancela um aplicativo usando a API de integração do serviço 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 do IAM para chamar o Amazon EMR Serverless

Ao criar uma máquina de estado usando o console, o Step Functions cria automaticamente um perfil de execução para a máquina de estado com os privilégios mínimos necessários. Esses perfis do IAM gerados automaticamente são válidos para a Região da AWS na qual você cria a máquina de estado.

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

Recomendamos não incluir curingas ao criar políticas do IAM. 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 políticas passRole nos perfis 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.

Exemplos de políticas do IAM para integração do EMR sem servidor com o Step Functions

Exemplo de política do IAM para CreateApplication

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

nota

É necessário especificar as permissões CreateServiceLinkedRole nas políticas do IAM durante a criação do primeiro aplicativo em sua conta. Depois disso, não será necessário adicionar essa permissão. Para ver mais informações sobre CreateServiceLinkedRole, consulte CreateServiceLinkedRole em https://docs.aws.amazon.com/IAM/latest/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: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" } } } ] }

Exemplo de política do IAM para StartApplication

Recursos estáticos

Veja a seguir exemplos de políticas do IAM para recursos estáticos ao usar uma máquina de estado com um estado StartApplication Estado de tarefa do fluxo de trabalho.

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

Veja a seguir exemplos de políticas do IAM para recursos dinâmicos ao usar uma máquina de estado com um estado StartApplication Estado de tarefa do fluxo de trabalho.

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

Exemplo de política do IAM para StopApplication

Recursos estáticos

Veja a seguir exemplos de políticas do IAM para recursos estáticos ao usar uma máquina de estado com um estado StopApplication Estado de tarefa do fluxo de trabalho.

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

Veja a seguir exemplos de políticas do IAM para recursos dinâmicos ao usar uma máquina de estado com um estado StopApplication Estado de tarefa do fluxo de trabalho.

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

Exemplo de política do IAM para DeleteApplication

Recursos estáticos

Veja a seguir exemplos de políticas do IAM para recursos estáticos ao usar uma máquina de estado com um estado DeleteApplication Estado de tarefa do fluxo de trabalho.

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

Veja a seguir exemplos de políticas do IAM para recursos dinâmicos ao usar uma máquina de estado com um estado DeleteApplication Estado de tarefa do fluxo de trabalho.

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

Exemplo de política do IAM para StartJobRun

Recursos estáticos

Veja a seguir exemplos de políticas do IAM para recursos estáticos ao usar uma máquina de estado com um estado StartJobRun Estado de tarefa do fluxo de trabalho.

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

Veja a seguir exemplos de políticas do IAM para recursos dinâmicos ao usar uma máquina de estado com um estado StartJobRun Estado de tarefa do fluxo de trabalho.

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

Exemplo de política do IAM para CancelJobRun

Recursos estáticos

Veja a seguir exemplos de políticas do IAM para recursos estáticos ao usar uma máquina de estado com um estado CancelJobRun Estado de tarefa do fluxo de trabalho.

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

Veja a seguir exemplos de políticas do IAM para recursos dinâmicos ao usar uma máquina de estado com um estado CancelJobRun Estado de tarefa do fluxo de trabalho.

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