

Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.

# Cómo empezar a AWS Batch usar Fargate el AWS CLI
<a name="getting-started-with-fargate-using-the-aws-cli"></a>

En este tutorial se muestra cómo configurar AWS Batch la AWS Fargate orquestación y cómo ejecutar un sencillo trabajo de «Hello World» con la AWS Command Line Interface tecla ().AWS CLI Aprenderá a crear entornos de computación, colas de trabajos, definiciones de trabajos y enviar trabajos a AWS Batch.

**Topics**
+ [Requisitos previos](#prerequisites)
+ [Creación de un rol de ejecución de IAM](#tutorial-fargate-using-the-aws-cli-create-an-iam-execution-role)
+ [Creación de un entorno de computación](#create-a-compute-environment)
+ [Cree una cola de trabajos](#cli-create-a-job-queue)
+ [crear una definición de trabajo,](#cli-create-a-job-definition)
+ [Envío y supervisión de un trabajo](#cli-submit-and-monitor-a-job)
+ [Visualización de la salida de un trabajo](#cli-view-job-output)
+ [Eliminar recursos](#cli-clean-up-resources)
+ [Paso a la producción](#cli-going-to-production)
+ [Siguientes pasos](#cli-next-steps)

## Requisitos previos
<a name="prerequisites"></a>

Antes de comenzar este tutorial, asegúrese de tener lo siguiente:

1. El AWS CLI. Si necesita instalarla, siga la [guía de instalación de la AWS CLI](https://docs.aws.amazon.com/cli/latest/userguide/getting-started-install.html). También puede [usar AWS CloudShell](https://docs.aws.amazon.com/cloudshell/latest/userguide/welcome.html), que incluye el AWS CLI.

1. Lo configuró AWS CLI con las credenciales adecuadas. Si aún no ha configurado sus credenciales, ejecute `aws configure`

1. Conocimiento básico de las interfaces de línea de comandos y los conceptos de contenedorización

1. [¿Cómo AWS Batch funciona con IAM](security_iam_service-with-iam.md)para crear y gestionar AWS Batch recursos, funciones de IAM y recursos de VPC en su. Cuenta de AWS

1. Un ID de subred y un ID de grupo de seguridad de una VPC de su. Cuenta de AWS Si no dispone de una VPC, puede [crear una](https://docs.aws.amazon.com/vpc/latest/userguide/create-vpc.html). *Para obtener más información sobre cómo usar el recurso AWS CLI para recuperar estos recursos IDs, consulte [describe-subnets](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/ec2/describe-subnets.html) y en la Referencia de comandos. [describe-security-groups](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/ec2/describe-security-groups.html)AWS CLI *

**Tiempo necesario**: Este tutorial se completa entre aproximadamente 15 y 20 minutos.

**Costo**: Este tutorial utiliza los recursos de computación de Fargate. El costo estimado para completar este tutorial es menos de 0,01 USD, siempre que siga las instrucciones de eliminación para eliminar los recursos inmediatamente después de completarlo. Los precios de Fargate se basan en los recursos de vCPU y memoria consumidos, y se cobran por segundo con un mínimo de 1 minuto. Para obtener información acerca de los precios, consulte [Precios de AWS Fargate](https://aws.amazon.com/fargate/pricing/).

## Creación de un rol de ejecución de IAM
<a name="tutorial-fargate-using-the-aws-cli-create-an-iam-execution-role"></a>

AWS Batch requiere una función de ejecución que permita a los agentes de Amazon Elastic Container Service (Amazon ECS) AWS realizar llamadas a la API en su nombre. Esta función es necesaria para que Fargate extraiga imágenes de contenedores y escriba registros para Amazon. CloudWatch

**Creación de un documento de política de confianza**

Primero, cree una política de confianza que permita al servicio de Amazon ECS asumir el rol.

```
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
```

**Cree el rol de ejecución**

El siguiente comando crea un rol de IAM con el nombre `BatchEcsTaskExecutionRoleTutorial` mediante la política de confianza que usted creó.

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

**Asociación de la política requerida**

Adjunte la política AWS gestionada que proporciona los permisos necesarios para la ejecución de las tareas de Amazon ECS.

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

La función ya está lista para ser utilizada en la ejecución AWS Batch de tareas de Fargate.

## Creación de un entorno de computación
<a name="create-a-compute-environment"></a>

Un entorno de computación define los recursos de computación en los que se ejecutarán los trabajos por lotes. Para este tutorial, creará un entorno de computación administrado por Fargate que aprovisione y escale automáticamente los recursos según los requisitos del trabajo.

**Creación de un entorno de computación**

El siguiente comando crea un entorno de computación para Fargate. Sustituya la subred y el grupo de seguridad de ejemplo por IDs los suyos propios según el. [Requisitos previos](#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}}
```

A continuación, se muestra cómo se ve la salida cuando el comando se ejecuta correctamente.

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

**Espera del entorno de computación hasta que esté listo**

Compruebe el estado de su entorno de computación para asegurarse de que esté listo antes de continuar.

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

```
"VALID"
```

Cuando se muestre el estado `VALID`, su entorno de computación estará preparado para aceptar trabajos.

## Cree una cola de trabajos
<a name="cli-create-a-job-queue"></a>

Una cola de trabajos almacena los trabajos enviados hasta que el AWS Batch programador los ejecute en los recursos de su entorno informático. Los trabajos se procesan en orden de prioridad dentro de la cola.

**Creación de una cola de trabajos**

El siguiente comando crea una cola de trabajos con prioridad 900 que utiliza su entorno informático de 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
```

A continuación, se muestra cómo se ve la salida cuando el comando se ejecuta correctamente.

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

**Comprobación de que la cola de trabajos esté lista**

Compruebe que la cola de trabajos está en el estado `ENABLED` y lista para aceptar trabajos.

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

## crear una definición de trabajo,
<a name="cli-create-a-job-definition"></a>

Una definición de trabajo especifica cómo se ejecutan los trabajos, como la imagen de Docker que se va a usar, los requisitos de recursos y otros parámetros. Para Fargate, utilizará los requisitos de recursos en lugar de los parámetros tradicionales de vCPU y memoria.

**Creación de la definición de trabajo**

El siguiente comando crea una definición de trabajo que ejecuta un comando simple de “Hola, mundo” utilizando la imagen del contenedor de busybox. `123456789012`Sustitúyelo por su Cuenta de AWS ID real y sustituya el ejemplo por el Región de AWS suyo propio.

```
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 definición del trabajo especifica 0,25 vCPU y 512 MB de memoria, que son los recursos mínimos para una tarea de Fargate. La configuración `assignPublicIp` está habilitada para que el contenedor pueda extraer la imagen de Busybox de Docker Hub.

## Envío y supervisión de un trabajo
<a name="cli-submit-and-monitor-a-job"></a>

Ahora que tiene todos los componentes necesarios, puede enviar un trabajo a la cola y supervisar su progreso.

**Envía un trabajo**

El siguiente comando envía un trabajo a la cola utilizando la definición de trabajo que ha creado.

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

A continuación, se muestra cómo se ve la salida cuando el comando se ejecuta correctamente.

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

Observe el `jobId` devuelto en la respuesta, ya que lo utilizará para supervisar el progreso del trabajo.

**Supervisión del estado de trabajo**

Utilice el ID del trabajo para verificar el estado del trabajo. El trabajo progresará a través de diversos estados: `SUBMITTED`, `PENDING`, `RUNNABLE`, `STARTING`, `RUNNING`, y finalmente, `SUCCEEDED` o `FAILED`.

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

A continuación, se muestra cómo se ve la salida cuando el comando se ejecuta correctamente.

```
{
    "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"
        }
    ]
}
```

Cuando se muestra el estado `SUCCEEDED`, el trabajo se habrá completado correctamente.

## Visualización de la salida de un trabajo
<a name="cli-view-job-output"></a>

Una vez finalizado el trabajo, podrás ver su resultado en Amazon CloudWatch Logs.

**Obtención del nombre del flujo de registro**

En primer lugar, recupere el nombre del flujo de registro desde los detalles del trabajo. Sustituya el ID de trabajo de ejemplo por el suyo.

```
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
```

**Visualización de los registros de trabajo**

Utilice el nombre del flujo de registro para recuperar el resultado del trabajo desde 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
```

La salida muestra “Hola, mundo”, lo que confirma que su trabajo se ha ejecutado correctamente.

## Eliminar recursos
<a name="cli-clean-up-resources"></a>

Elimine los recursos que haya creado en este tutorial para evitar cargos recurrentes. Debe eliminar los recursos en el orden correcto debido a las dependencias.

**Deshabilite y elimine la cola de trabajos**

En primer lugar, deshablite la cola de trabajos y, a continuación, elimínela.

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

```
aws batch delete-job-queue \
    --job-queue my-fargate-job-queue
```

**Deshabilite y elimine el entorno de computación**

Una vez eliminada la cola de trabajos, deshabilite y elimine el entorno de computación.

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

```
aws batch delete-compute-environment \
    --compute-environment my-fargate-compute-env
```

**Elimine el rol de IAM**

Elimine la asociación de la política y elimine el rol de 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
```

**Elimine los archivos temporales**

Elimine el archivo de política de confianza que creó.

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

Todos los recursos se han eliminado correctamente.

## Paso a la producción
<a name="cli-going-to-production"></a>

Este tutorial está diseñado para ayudarle a entender cómo AWS Batch funciona con Fargate. Para las implementaciones de producción, tenga en cuenta los siguientes requisitos adicionales:

**Consideraciones de seguridad:**
+ Crear grupos de seguridad dedicados con un acceso mínimo obligatorio en lugar de utilizar los grupos de seguridad predeterminados.
+ Utilizar subredes privadas con la puerta de enlace NAT en lugar de asignar direcciones IP públicas para los contenedores.
+ Almacenar imágenes de contenedor en Amazon ECR en lugar de usar repositorios públicos.
+ Implemente puntos finales de VPC para la comunicación del AWS servicio a fin de evitar el tráfico de Internet

**Consideraciones de arquitectura:**
+ Desplegar en varias zonas de disponibilidad para lograr una alta disponibilida.
+ Implementar estrategias de reintentos de tareas y colas de mensajes fallidos para gestionar los errores.
+ Utilizar varias colas de trabajos con diferentes prioridades para la administración de la carga de trabajo.
+ Configurar políticas de escalado automático según la profundidad de las colas y la utilización de los recursos.
+ Implementar la supervisión y las alertas en caso de que se produzcan errores en los trabajos y se utilicen los recursos.

**Consideraciones operativas:**
+ Configure CloudWatch paneles y alarmas para la supervisión
+ Implementar registros y registros de auditoría adecuados.
+ Utilice CloudFormation o la AWS CDK infraestructura como código
+ Establecer procedimientos de copia de seguridad y recuperación ante desastres.

Para obtener una guía completa sobre arquitecturas listas para producción, consulte [Maro de AWS Well-Architected](https://aws.amazon.com/architecture/well-architected/) y [AWS Security Best Practices](https://aws.amazon.com/architecture/security-identity-compliance/).

## Siguientes pasos
<a name="cli-next-steps"></a>

Ahora que ha completado este tutorial, puede explorar AWS Batch funciones más avanzadas:
+ [Colas de trabajos](job_queues.md): obtenga información sobre la programación de colas de trabajos y la administración de prioridades
+ [Definiciones de trabajo](job_definitions.md): conozca las configuraciones avanzadas de definición de trabajos, como las variables de entorno, los volúmenes y las estrategias de reintento
+ [Entornos informáticos para AWS Batch](compute_environments.md): comprenda los diferentes tipos de entornos de computación y las opciones de escalado
+ [Multi-node trabajos paralelos](multi-node-parallel-jobs.md): ejecute trabajos que abarquen varios nodos de computación
+ [Trabajos de matrices](array_jobs.md): envíe un gran número de trabajos similares de manera eficiente
+ [Mejores prácticas para AWS Batch](best-practices.md): aprenda técnicas de optimización para las cargas de trabajo de producción