Criar e gerenciar clusters do Amazon EMR no EKS com o AWS 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á.

Criar e gerenciar clusters do Amazon EMR no EKS com o AWS Step Functions

Saiba como integrar o AWS Step Functions ao Amazon EMR no EKS utilizando as APIs de integração de serviços do Amazon EMR no EKS. As APIs de integração de serviços são iguais às APIs correspondentes do Amazon EMR no EKS, mas nem todas as APIs oferecem suporte a todos os padrões de integração, conforme mostrado na tabela a seguir.

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.

Como a integração otimizada do Amazon EMR no EKS é diferente da integração do SDK do Amazon EMR no EKS da AWS
nota

Para integração com o Amazon EMR, o Step Functions tem uma frequência de pesquisa de trabalhos de codificação rígida de 60 segundos para os primeiros 10 minutos e 300 segundos depois disso.

API Resposta de solicitação Executar um trabalho (.sync)
CreateVirtualCluster Compatível Não compatível
DeleteVirtualCluster Compatível Compatível
StartJobRun Compatível Compatível

Compatível com as APIs do Amazon EMR no EKS:

Cota para dados de entrada ou resultado

Ao enviar ou receber dados entre serviços, o máximo de entrada ou resultado de uma tarefa é 256 KiB de dados como uma string codificada em UTF-8. Consulte Cotas relacionadas a execuções de máquina de estado.

Veja a seguir um estado Task que cria um cluster virtual.

"Create_Virtual_Cluster": { "Type": "Task", "Resource": "arn:aws:states:::emr-containers:createVirtualCluster", "Arguments": { "Name": "MyVirtualCluster", "ContainerProvider": { "Id": "EKSClusterName", "Type": "EKS", "Info": { "EksInfo": { "Namespace": "Namespace" } } } }, "End": true }

Veja a seguir um Task estado que envia um trabalho a um cluster virtual e aguarde até que ele seja concluído.

"Submit_Job": { "Type": "Task", "Resource": "arn:aws:states:::emr-containers:startJobRun.sync", "Arguments": { "Name": "MyJobName", "VirtualClusterId": "{% $VirtualClusterId %}", "ExecutionRoleArn": "arn:aws:iam::<accountId>:role/job-execution-role", "ReleaseLabel": "emr-6.2.0-latest", "JobDriver": { "SparkSubmitJobDriver": { "EntryPoint": "s3://<amzn-s3-demo-bucket>/jobs/trip-count.py", "EntryPointArguments": [ "60" ], "SparkSubmitParameters": "--conf spark.driver.cores=2 --conf spark.executor.instances=10 --conf spark.kubernetes.pyspark.pythonVersion=3 --conf spark.executor.memory=10G --conf spark.driver.memory=10G --conf spark.executor.cores=1 --conf spark.dynamicAllocation.enabled=false" } }, "ConfigurationOverrides": { "ApplicationConfiguration": [ { "Classification": "spark-defaults", "Properties": { "spark.executor.instances": "2", "spark.executor.memory": "2G" } } ], "MonitoringConfiguration": { "PersistentAppUI": "ENABLED", "CloudWatchMonitoringConfiguration": { "LogGroupName": "MyLogGroupName", "LogStreamNamePrefix": "MyLogStreamNamePrefix" }, "S3MonitoringConfiguration": { "LogUri": "s3://<amzn-s3-demo-logging-bucket1>" } } }, "Tags": { "taskType": "jobName" } }, "End": true }

Veja a seguir um Task estado que exclui um cluster virtual e aguarde a conclusão da exclusão.

"Delete_Virtual_Cluster": { "Type": "Task", "Resource": "arn:aws:states:::emr-containers:deleteVirtualCluster.sync", "Arguments": { "Id": "{% $states.input.VirtualClusterId %}", }, "End": true }

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.