Guida introduttiva AWS Batch e Fargate all'utilizzo di AWS CLI - AWS Batch

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à.

Guida introduttiva AWS Batch e Fargate all'utilizzo di AWS CLI

Questo tutorial dimostra come configurare AWS Batch l' AWS Fargate orchestrazione ed eseguire un semplice job «Hello World» utilizzando il comando (). AWS Command Line Interface AWS CLI Imparerai come creare ambienti di calcolo, code di lavoro, definizioni di lavoro e inviare lavori a. AWS Batch

Prerequisiti

Prima di iniziare questo tutorial, assicurati di avere quanto segue.

  1. Il AWS CLI. Se devi installarla, segui la guida all’installazione della AWS CLI. Puoi anche usare AWS CloudShell, che include il AWS CLI.

  2. Hai configurato il tuo AWS CLI con le credenziali appropriate. Esegui aws configure se non hai ancora configurato le credenziali.

  3. Familiarità di base con le interfacce a riga di comando e i concetti di containerizzazione.

  4. Come AWS Batch funziona con IAMper creare e gestire AWS Batch risorse, ruoli IAM e risorse VPC nel tuo. Account AWS

  5. Un ID di sottorete e un ID di gruppo di sicurezza da un VPC nel tuo. Account AWS Se non disponi di un VPC, puoi crearne uno. Per ulteriori informazioni sull'utilizzo di per recuperare queste risorse IDs, vedere describe-subnets e nel Command Reference. AWS CLI describe-security-groupsAWS CLI

Tempo richiesto: circa 15-20 minuti per completare questo tutorial.

Costo: questo tutorial utilizza le risorse di calcolo Fargate. Il costo stimato per il completamento di questo tutorial è inferiore a 0,01 USD, supponendo che seguiate le istruzioni di pulizia per eliminare le risorse subito dopo il completamento. I prezzi di Fargate si basano sulle risorse di vCPU e memoria consumate, addebitati al secondo con un minimo di 1 minuto. Per informazioni aggiornate sui prezzi, consulta la sezione prezzi.AWS Fargate

Crea un ruolo di esecuzione IAM

AWS Batch richiede un ruolo di esecuzione che consenta agli agenti di Amazon Elastic Container Service (Amazon ECS) di AWS effettuare chiamate API per tuo conto. Questo ruolo è necessario per le attività di Fargate per estrarre le immagini dei container e scrivere i log su Amazon. CloudWatch

Crea un documento relativo alla politica di fiducia

Innanzitutto, crea una politica di fiducia che consenta al servizio Amazon ECS Tasks di assumere il ruolo.

cat > batch-execution-role-trust-policy.json << EOF { "Version":"2012-10-17", "Statement": [ { "Sid": "", "Effect": "Allow", "Principal": { "Service": "ecs-tasks.amazonaws.com" }, "Action": "sts:AssumeRole" } ] } EOF

Crea il ruolo di esecuzione

Il comando seguente crea un ruolo IAM denominato BatchEcsTaskExecutionRoleTutorial utilizzando la policy di fiducia appena creata.

aws iam create-role \ --role-name BatchEcsTaskExecutionRoleTutorial \ --assume-role-policy-document file://batch-execution-role-trust-policy.json

Allega la policy richiesta

Allega la policy AWS gestita che fornisce le autorizzazioni necessarie per l'esecuzione delle attività di Amazon ECS.

aws iam attach-role-policy \ --role-name BatchEcsTaskExecutionRoleTutorial \ --policy-arn arn:aws:iam::aws:policy/service-role/AmazonECSTaskExecutionRolePolicy

Il ruolo è ora pronto per essere utilizzato AWS Batch per l'esecuzione delle attività di Fargate.

Crea un ambiente di elaborazione

Un ambiente di elaborazione definisce le risorse di elaborazione su cui verranno eseguiti i processi in batch. In questo tutorial, creerai un ambiente di calcolo Fargate gestito che fornisce e ridimensiona automaticamente le risorse in base ai requisiti del lavoro.

Crea l'ambiente di elaborazione

Il comando seguente crea un ambiente di calcolo Fargate. Sostituisci la sottorete e il gruppo di sicurezza di esempio IDs con i tuoi per. Prerequisiti

aws batch create-compute-environment \ --compute-environment-name my-fargate-compute-env \ --type MANAGED \ --state ENABLED \ --compute-resources type=FARGATE,maxvCpus=128,subnets=subnet-a123456b,securityGroupIds=sg-a12b3456

Di seguito viene illustrato l'aspetto dell'output quando il comando viene eseguito correttamente.

{ "computeEnvironmentName": "my-fargate-compute-env", "computeEnvironmentArn": "arn:aws:batch:us-west-2:123456789012:compute-environment/my-fargate-compute-env" }

Attendi che l'ambiente di calcolo sia pronto

Controlla lo stato del tuo ambiente di elaborazione per assicurarti che sia pronto prima di procedere.

aws batch describe-compute-environments \ --compute-environments my-fargate-compute-env \ --query 'computeEnvironments[0].status'
"VALID"

Quando lo stato viene visualizzatoVALID, l'ambiente di elaborazione è pronto per accettare lavori.

Crea una coda di lavoro

Una coda di lavoro memorizza i lavori inviati fino a quando lo AWS Batch scheduler non li esegue sulle risorse del tuo ambiente di elaborazione. I lavori vengono elaborati in ordine di priorità all'interno della coda.

Crea la coda dei lavori

Il comando seguente crea una coda di lavoro con priorità 900 che utilizza l'ambiente di calcolo Fargate.

aws batch create-job-queue \ --job-queue-name my-fargate-job-queue \ --state ENABLED \ --priority 900 \ --compute-environment-order order=1,computeEnvironment=my-fargate-compute-env

Di seguito viene illustrato l'aspetto dell'output quando il comando viene eseguito correttamente.

{ "jobQueueName": "my-fargate-job-queue", "jobQueueArn": "arn:aws:batch:us-west-2:123456789012:job-queue/my-fargate-job-queue" }

Verifica che la coda dei lavori sia pronta

Verifica che la tua coda di lavoro sia nello ENABLED stato attuale e sia pronta per accettare offerte di lavoro.

aws batch describe-job-queues \ --job-queues my-fargate-job-queue \ --query 'jobQueues[0].state' "ENABLED"

Creazione di una definizione di processo

Una definizione di processo specifica come devono essere eseguiti i lavori, inclusa l'immagine Docker da utilizzare, i requisiti di risorse e altri parametri. Per Fargate, utilizzerai i requisiti di risorse anziché i tradizionali parametri di vCPU e memoria.

Crea la definizione del lavoro

Il comando seguente crea una definizione di processo che esegue un semplice comando «hello world» utilizzando l'immagine del contenitore busybox. 123456789012Sostituiscilo con il tuo Account AWS ID attuale e sostituisci l'esempio Regione AWS con il tuo.

aws batch register-job-definition \ --job-definition-name my-fargate-job-def \ --type container \ --platform-capabilities FARGATE \ --container-properties '{ "image": "busybox", "resourceRequirements": [ {"type": "VCPU", "value": "0.25"}, {"type": "MEMORY", "value": "512"} ], "command": ["echo", "hello world"], "networkConfiguration": { "assignPublicIp": "ENABLED" }, "executionRoleArn": "arn:aws:iam::123456789012:role/BatchEcsTaskExecutionRoleTutorial" }, { "jobDefinitionName": "my-fargate-job-def", "jobDefinitionArn": "arn:aws:batch:us-west-2:123456789012:job-definition/my-fargate-job-def:1", "revision": 1 }'

La definizione del processo specifica 0,25 vCPU e 512 MB di memoria, che sono le risorse minime per un'attività Fargate. L'assignPublicIpimpostazione è abilitata in modo che il contenitore possa estrarre l'immagine busybox da Docker Hub.

Invia e monitora un lavoro

Ora che hai tutti i componenti necessari, puoi inviare un lavoro alla tua coda e monitorarne l'avanzamento.

Invia un lavoro

Il comando seguente invia un lavoro alla coda utilizzando la definizione di processo creata.

aws batch submit-job \ --job-name my-hello-world-job \ --job-queue my-fargate-job-queue \ --job-definition my-fargate-job-def

Di seguito viene illustrato l'aspetto dell'output quando il comando viene eseguito correttamente.

{ "jobArn": "arn:aws:batch:us-west-2:123456789012:job/my-hello-world-job", "jobName": "my-hello-world-job", "jobId": "1509xmpl-4224-4da6-9ba9-1d1acc96431a" }

Prendi nota del risultato jobId restituito nella risposta, poiché lo utilizzerai per monitorare l'avanzamento del lavoro.

Monitora lo stato del lavoro

Usa l'ID del lavoro per controllare lo stato del tuo lavoro. Il lavoro procederà attraverso diversi stati: SUBMITTEDPENDING,RUNNABLE,STARTING,RUNNING, e infine SUCCEEDED oFAILED.

aws batch describe-jobs --jobs 1509xmpl-4224-4da6-9ba9-1d1acc96431a

Di seguito viene illustrato l'aspetto dell'output quando il comando viene eseguito correttamente.

{ "jobs": [ { "jobArn": "arn:aws:batch:us-west-2:123456789012:job/my-hello-world-job", "jobName": "my-hello-world-job", "jobId": "1509xmpl-4224-4da6-9ba9-1d1acc96431a", "jobQueue": "arn:aws:batch:us-west-2:123456789012:job-queue/my-fargate-job-queue", "status": "SUCCEEDED", "createdAt": 1705161908000, "jobDefinition": "arn:aws:batch:us-west-2:123456789012:job-definition/my-fargate-job-def:1" } ] }

Quando lo stato viene visualizzatoSUCCEEDED, il processo è stato completato con successo.

Visualizza i risultati del lavoro

Una volta completato il processo, puoi visualizzarne l'output in Amazon CloudWatch Logs.

Ottieni il nome del flusso di log

Innanzitutto, recupera il nome del flusso di registro dai dettagli del lavoro. Sostituisci l'ID del lavoro di esempio con il tuo.

aws batch describe-jobs --jobs 1509xmpl-4224-4da6-9ba9-1d1acc96431a \ --query 'jobs[0].attempts[0].containers[0].logStreamName' \ --output text
my-fargate-job-def/default/1509xmpl-4224-4da6-9ba9-1d1acc96431a

Visualizza i registri dei lavori

Utilizzate il nome del flusso di log per recuperare l'output del lavoro da CloudWatch Logs.

aws logs get-log-events \ --log-group-name /aws/batch/job \ --log-stream-name my-fargate-job-def/default/1509xmpl-4224-4da6-9ba9-1d1acc96431a \ --query 'events[*].message' \ --output text

L'output mostra «hello world», a conferma che il processo è stato eseguito correttamente.

Eseguire la pulizia delle risorse

Per evitare addebiti continui, ripulisci le risorse che hai creato in questo tutorial. È necessario eliminare le risorse nell'ordine corretto a causa delle dipendenze.

Disabilita ed elimina la coda dei lavori

Innanzitutto, disabilita la coda dei lavori, quindi eliminala.

aws batch update-job-queue \ --job-queue my-fargate-job-queue \ --state DISABLED
aws batch delete-job-queue \ --job-queue my-fargate-job-queue

Disabilita ed elimina l'ambiente di calcolo

Dopo aver eliminato la coda dei lavori, disabilita ed elimina l'ambiente di calcolo.

aws batch update-compute-environment \ --compute-environment my-fargate-compute-env \ --state DISABLED
aws batch delete-compute-environment \ --compute-environment my-fargate-compute-env

Pulisci il ruolo IAM

Rimuovi l'allegato alla policy ed elimina il ruolo IAM.

aws iam detach-role-policy \ --role-name BatchEcsTaskExecutionRoleTutorial \ --policy-arn arn:aws:iam::aws:policy/service-role/AmazonECSTaskExecutionRolePolicy
aws iam delete-role \ --role-name BatchEcsTaskExecutionRoleTutorial

Rimuovi i file temporanei

Elimina il file dei criteri di attendibilità che hai creato.

rm batch-execution-role-trust-policy.json

Tutte le risorse sono state pulite con successo.

Passa alla produzione

Questo tutorial è stato progettato per aiutarti a capire come AWS Batch funziona con Fargate. Per le implementazioni di produzione, considera i seguenti requisiti aggiuntivi:

Considerazioni sulla sicurezza:
  • Crea gruppi di sicurezza dedicati con un accesso minimo richiesto invece di utilizzare gruppi di sicurezza predefiniti

  • Utilizza sottoreti private con NAT Gateway anziché l'assegnazione di IP pubblici per i contenitori

  • Archivia le immagini dei container in Amazon ECR anziché utilizzare repository pubblici

  • Implementa gli endpoint VPC per la comunicazione di AWS servizio per evitare il traffico Internet

Considerazioni sull'architettura:
  • Implementa su più zone di disponibilità per un'elevata disponibilità

  • Implementa strategie di riprova di lavoro e code con lettere morte per la gestione degli errori

  • Utilizza più code di lavoro con priorità diverse per la gestione del carico di lavoro

  • Configura le politiche di scalabilità automatica in base alla profondità della coda e all'utilizzo delle risorse

  • Implementa il monitoraggio e la generazione di avvisi in caso di errori di lavoro e utilizzo delle risorse

Considerazioni operative:
  • Configura CloudWatch dashboard e allarmi per il monitoraggio

  • Implementa la registrazione e gli audit trail corretti

  • Usa CloudFormation or the AWS CDK for infrastructure come codice

  • Stabilisci procedure di backup e disaster recovery

Per una guida completa sulle architetture pronte per la produzione, consulta il AWS Well-Architected Framework and Security Best Practices.AWS

Fasi successive

Ora che hai completato questo tutorial, puoi esplorare funzionalità più avanzate: AWS Batch