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
Argomenti
Prerequisiti
Prima di iniziare questo tutorial, assicurati di avere quanto segue.
-
Il AWS CLI. Se devi installarla, segui la guida all’installazione della AWS CLI. Puoi anche usare AWS CloudShell, che include il AWS CLI.
-
Hai configurato il tuo AWS CLI con le credenziali appropriate. Esegui
aws configurese non hai ancora configurato le credenziali. -
Familiarità di base con le interfacce a riga di comando e i concetti di containerizzazione.
-
Come AWS Batch funziona con IAMper creare e gestire AWS Batch risorse, ruoli IAM e risorse VPC nel tuo. Account AWS
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-groups AWS 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 --jobs1509xmpl-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
Fasi successive
Ora che hai completato questo tutorial, puoi esplorare funzionalità più avanzate: AWS Batch
-
Job queues— Scopri la pianificazione delle code di lavoro e la gestione delle priorità
-
Definizioni del lavoro— Esplora configurazioni avanzate di definizione dei processi, tra cui variabili di ambiente, volumi e strategie di riprova
-
Ambienti di calcolo per AWS Batch— Comprendi i diversi tipi di ambiente di calcolo e le diverse opzioni di scalabilità
-
Lavori paralleli multinodo— Esegui processi che si estendono su più nodi di elaborazione
-
Lavori di array— Invia un gran numero di lavori simili in modo efficiente
-
Le migliori pratiche per AWS Batch— Impara le tecniche di ottimizzazione per i carichi di lavoro di produzione