Esegui attività su Amazon ECS o Fargate con Step Functions - AWS Step Functions

Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.

Esegui attività su Amazon ECS o Fargate con Step Functions

Scopri come integrare Step Functions con Amazon ECS o Fargate per eseguire e gestire le attività. In AmazonECS, un'attività è l'unità di calcolo fondamentale. Le attività sono definite da una definizione di attività che specifica come deve essere eseguito un contenitore Docker, inclusa l'immagine del contenitore, i limiti di memoria, CPU la configurazione di rete e altri parametri. Questa pagina elenca le ECS API azioni Amazon disponibili e fornisce istruzioni su come trasferire dati a un'ECSattività Amazon utilizzando Step Functions.

Per saperne di più sull'integrazione con AWS servizi in Step Functions, vedere Integrazione dei servizi e. Passaggio di parametri a un servizio API in Step Functions

Caratteristiche principali dell'integrazione ottimizzata tra Amazon e ECS Fargate
  • Il modello di Esegui un processo (.sync) integrazione è supportato.

  • ecs:runTaskpuò restituire una risposta HTTP 200, ma ha un Failures campo non vuoto come segue:

    • Richiesta di risposta: restituisci la risposta e non fallire l'operazione. Ciò equivale a nessuna ottimizzazione.

    • Esegui un Job o Task Token: se viene rilevato un Failures campo non vuoto, l'operazione fallisce con un AmazonECS.Unknown errore.

Amazon ECS /Fargate supportati APIs

Parametri in Step Functions sono espressi in PascalCase

Anche se il servizio nativo API è attivocamelCase, ad esempio l'APIazionestartSyncExecution, si specificano i parametri in PascalCase, ad esempio:StateMachineArn.

Trasferimento di dati a un Amazon ECS Task

Per saperne di più sull'integrazione con AWS servizi in Step Functions, vedere Integrazione dei servizi e. Passaggio di parametri a un servizio API in Step Functions

Puoi usarlo overrides per sovrascrivere il comando predefinito per un contenitore e passare l'input alle tue ECS attività Amazon. Per informazioni, consulta ContainerOverride. Nell'esempio, abbiamo passato JsonPath valori Task dall'input allo Task stato.

Quanto segue include uno Task stato che esegue un'ECSattività Amazon e attende che venga completata.

{ "StartAt": "Run an ECS Task and wait for it to complete", "States": { "Run an ECS Task and wait for it to complete": { "Type": "Task", "Resource": "arn:aws:states:::ecs:runTask.sync", "Parameters": { "Cluster": "cluster-arn", "TaskDefinition": "job-id", "Overrides": { "ContainerOverrides": [ { "Name": "container-name", "Command.$": "$.commands" } ] } }, "End": true } } }

La riga "Command.$": "$.commands" in ContainerOverrides passa i comandi dall'input di stato al container.

Per l'esempio precedente, ciascuno dei comandi verrà trasferito come sostituzione di container se l'input per l'esecuzione è il seguente.

{ "commands": [ "test command 1", "test command 2", "test command 3" ] }

Quanto segue include uno Task stato che esegue un'ECSattività Amazon e quindi attende la restituzione del token dell'attività. Per informazioni, consulta Attendi una richiamata con Task Token.

{ "StartAt":"Manage ECS task", "States":{ "Manage ECS task":{ "Type":"Task", "Resource":"arn:aws:states:::ecs:runTask.waitForTaskToken", "Parameters":{ "LaunchType":"FARGATE", "Cluster":"cluster-arn", "TaskDefinition":"job-id", "Overrides":{ "ContainerOverrides":[ { "Name":"container-name", "Environment":[ { "Name":"TASK_TOKEN_ENV_VARIABLE", "Value.$":"$$.Task.Token" } ] } ] } }, "End":true } } }

IAMpolitiche per le chiamate ad AmazonECS/AWS Fargate

I seguenti modelli di esempio mostrano come AWS Step Functions genera IAM politiche basate sulle risorse nella definizione della macchina a stati. Per ulteriori informazioni, consulta In che modo Step Functions genera IAM politiche per servizi integrati e Scopri i modelli di integrazione dei servizi in Step Functions.

Poiché il valore di non TaskId è noto fino all'invio dell'attività, Step Functions crea una "Resource": "*" politica più privilegiata.

Nota

Puoi interrompere solo le attività di Amazon Elastic Container Service (AmazonECS) avviate da Step Functions, nonostante la "*" IAM politica.

Run a Job (.sync)

Risorse statiche

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "ecs:RunTask" ], "Resource": [ "arn:aws:ecs:[[region]]: [[accountId]]:task-definition/[[taskDefinition]]:[[revisionNumber]]" ] }, { "Effect": "Allow", "Action": [ "ecs:StopTask", "ecs:DescribeTasks" ], "Resource": "*" }, { "Effect": "Allow", "Action": [ "events:PutTargets", "events:PutRule", "events:DescribeRule" ], "Resource": [ "arn:aws:events:[[region]]: [[accountId]]:rule/StepFunctionsGetEventsForECSTaskRule" ] } ] }

Risorse dinamiche

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "ecs:RunTask", "ecs:StopTask", "ecs:DescribeTasks" ], "Resource": "*" }, { "Effect": "Allow", "Action": [ "events:PutTargets", "events:PutRule", "events:DescribeRule" ], "Resource": [ "arn:aws:events:[[region]]: [[accountId]]:rule/StepFunctionsGetEventsForECSTaskRule" ] } ] }
Request Response and Callback (.waitForTaskToken)

Risorse statiche

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "ecs:RunTask" ], "Resource": [ "arn:aws:ecs:[[region]]: [[accountId]]:task-definition/[[taskDefinition]]:[[revisionNumber]]" ] } ] }

Risorse dinamiche

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "ecs:RunTask" ], "Resource": "*" } ] }

Se le tue ECS attività Amazon pianificate richiedono l'uso di un ruolo di esecuzione di attività, un ruolo di attività o un'eccezione di ruolo dell'attività, devi aggiungere iam:PassRole le autorizzazioni per ogni ruolo di esecuzione dell'attività, ruolo dell'attività o sovrascrittura del ruolo dell'attività al IAM ruolo CloudWatch Events dell'entità chiamante, che in questo caso è Step Functions.