Executar workloads do AWS Batch com o Step Functions - AWS Step Functions

Executar workloads do AWS Batch com o Step Functions

É possível integrar o Step Functions ao AWS Batch para executar workloads de computação em lote na Nuvem AWS. Esta página lista as APIs do AWS Batch aceitas e fornece um exemplo de estado Task para realizar uma tarefa de processamento em lote.

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 AWS Batch

Observe que não há otimizações específicas para os padrões de integração Resposta de solicitação ou Aguardar um retorno de chamada com um token de tarefa.

Veja a seguir um estado de exemplo Task que envia um trabalho do AWS Batch e aguarda até que ele seja concluído. Muitos dos argumentos exibidos são opcionais.

"Submit Batch Job": { "Type": "Task", "Resource": "arn:aws:states:::batch:submitJob.sync", "Arguments": { "JobName": "BATCH_NAME", "JobQueue": "BATCH_QUEUE_ARN", "JobDefinition": "BATCH_JOB_DEFINITION_ARN", "ArrayProperties": { "Size": 10 }, "ContainerOverrides": { "ResourceRequirements": [ { "Type": "VCPU", "Value": "4" } ] }, "DependsOn": [ { "JobId": "myJobId", "Type": "SEQUENTIAL" } ], "PropagateTags": true, "Arguments": { "Key1": "value1", "Key2": 100 }, "RetryStrategy": { "Attempts": 1 }, "Tags": { "Tag": "TAG" }, "Timeout": { "AttemptDurationSeconds": 10 } } }

APIs otimizadas do AWS Batch:

Os parâmetros no Step Functions são expressos em PascalCase

Mesmo que a API do serviço nativo esteja em camelCase (por exemplo, a ação de API startSyncExecution), é necessário especificar os parâmetros em PascalCase, como StateMachineArn.

Políticas do IAM para chamar o AWS Batch

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.

Como os IDs de trabalho para SubmitJob e TerminateJob são gerados e, portanto, conhecidos apenas em runtime, não é possível criar uma política que restrinja o acesso com base em um recurso específico.

Dica para acesso refinado

Para adicionar acesso refinado a SubmitJob e TerminateJob, considere usar tags para trabalhos e criar uma política que limite o acesso com base em tags. Além disso, a fila de trabalhos, a definição e os recursos consumíveis podem ser restringidos para SubmitJob com recursos conhecidos.

Run a Job (.sync)
{ "Version":"2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "batch:SubmitJob", "batch:DescribeJobs", "batch:TerminateJob" ], "Resource": "*" }, { "Effect": "Allow", "Action": [ "events:PutTargets", "events:PutRule", "events:DescribeRule" ], "Resource": [ "arn:aws:events:us-east-1:123456789012:rule/StepFunctionsGetEventsForBatchJobsRule" ] } ] }
Request Response
{ "Version":"2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "batch:SubmitJob" ], "Resource": "*" } ] }