

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
<a name="getting-started-with-fargate-using-the-aws-cli"></a>

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

**Topics**
+ [Prerequisiti](#prerequisites)
+ [Crea un ruolo di esecuzione IAM](#tutorial-fargate-using-the-aws-cli-create-an-iam-execution-role)
+ [Crea un ambiente di elaborazione](#create-a-compute-environment)
+ [Crea una coda di lavoro](#cli-create-a-job-queue)
+ [Creazione di una definizione di processo](#cli-create-a-job-definition)
+ [Invia e monitora un lavoro](#cli-submit-and-monitor-a-job)
+ [Visualizza i risultati del lavoro](#cli-view-job-output)
+ [Eseguire la pulizia delle risorse](#cli-clean-up-resources)
+ [Passa alla produzione](#cli-going-to-production)
+ [Fasi successive](#cli-next-steps)

## Prerequisiti
<a name="prerequisites"></a>

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](https://docs.aws.amazon.com/cli/latest/userguide/getting-started-install.html). Puoi anche [usare AWS CloudShell](https://docs.aws.amazon.com/cloudshell/latest/userguide/welcome.html), che include il AWS CLI.

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

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

1. [Come AWS Batch funziona con IAM](security_iam_service-with-iam.md)per creare e gestire AWS Batch risorse, ruoli IAM e risorse VPC nel tuo. Account AWS

1. 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](https://docs.aws.amazon.com/vpc/latest/userguide/create-vpc.html). *Per ulteriori informazioni sull'utilizzo di per recuperare queste risorse IDs, vedere [describe-subnets](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/ec2/describe-subnets.html) e nel Command Reference. AWS CLI [describe-security-groups](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/ec2/describe-security-groups.html)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](https://aws.amazon.com/fargate/pricing/)

## Crea un ruolo di esecuzione IAM
<a name="tutorial-fargate-using-the-aws-cli-create-an-iam-execution-role"></a>

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
<a name="create-a-compute-environment"></a>

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](#prerequisites)

```
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 visualizzato`VALID`, l'ambiente di elaborazione è pronto per accettare lavori.

## Crea una coda di lavoro
<a name="cli-create-a-job-queue"></a>

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
<a name="cli-create-a-job-definition"></a>

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. `123456789012`Sostituiscilo 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'`assignPublicIp`impostazione è abilitata in modo che il contenitore possa estrarre l'immagine busybox da Docker Hub.

## Invia e monitora un lavoro
<a name="cli-submit-and-monitor-a-job"></a>

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: `SUBMITTED``PENDING`,`RUNNABLE`,`STARTING`,`RUNNING`, e infine `SUCCEEDED` o`FAILED`.

```
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 visualizzato`SUCCEEDED`, il processo è stato completato con successo.

## Visualizza i risultati del lavoro
<a name="cli-view-job-output"></a>

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
<a name="cli-clean-up-resources"></a>

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
<a name="cli-going-to-production"></a>

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](https://aws.amazon.com/architecture/well-architected/) Framework and Security Best Practices.AWS](https://aws.amazon.com/architecture/security-identity-compliance/)

## Fasi successive
<a name="cli-next-steps"></a>

Ora che hai completato questo tutorial, puoi esplorare funzionalità più avanzate: AWS Batch 
+ [Code di processi](job_queues.md)— Scopri la pianificazione delle code di lavoro e la gestione delle priorità
+ [Definizioni dei processi](job_definitions.md)— Esplora configurazioni avanzate di definizione dei processi, tra cui variabili di ambiente, volumi e strategie di riprova
+ [Ambienti di calcolo per AWS Batch](compute_environments.md)— Comprendi i diversi tipi di ambiente di calcolo e le diverse opzioni di scalabilità
+ [Multi-node lavori paralleli](multi-node-parallel-jobs.md)— Esegui processi che si estendono su più nodi di elaborazione
+ [Lavori di matrice](array_jobs.md)— Invia un gran numero di lavori simili in modo efficiente
+ [Le migliori pratiche per AWS Batch](best-practices.md)— Impara le tecniche di ottimizzazione per i carichi di lavoro di produzione