

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.

# Gestión de las aplicaciones de contenedores en las instalaciones mediante la configuración de Amazon ECS Anywhere con AWS CDK
<a name="manage-on-premises-container-applications-by-setting-up-amazon-ecs-anywhere-with-the-aws-cdk"></a>

*Dr. Rahul Sharad Gaikwad, Amazon Web Services*

## Resumen
<a name="manage-on-premises-container-applications-by-setting-up-amazon-ecs-anywhere-with-the-aws-cdk-summary"></a>

[Amazon ECS Anywhere](https://aws.amazon.com/ecs/anywhere/) es una extensión de Amazon Elastic Container Service (Amazon ECS). Puede usar ECS Anywhere para implementar tareas nativas de Amazon ECS en un entorno en las instalaciones o administrado por el cliente. Esta característica ayuda a reducir los costos y a mitigar la compleja orquestación y las operaciones de los contenedores locales. Puede usar ECS Anywhere para implementar y ejecutar aplicaciones de contenedor tanto en entornos en las instalaciones como en la nube. Evita que su equipo tenga que aprender varios dominios y conjuntos de habilidades, o administrar software complejo por su cuenta.

Este patrón muestra los pasos para configurar ECS Anywhere mediante pilas del AWS Cloud Development Kit ([AWS CDK](https://aws.amazon.com/cdk/)).

## Requisitos previos y limitaciones
<a name="manage-on-premises-container-applications-by-setting-up-amazon-ecs-anywhere-with-the-aws-cdk-prereqs"></a>

**Requisitos previos**
+ Una cuenta de AWS activa.
+ Interfaz de la línea de comandos de AWS (AWS CLI) instalada y configurada. (Consulte [Instalación, actualización y desinstalación de la CLI de AWS](https://docs.aws.amazon.com/cli/latest/userguide/cli-chap-install.html) en la documentación de la CLI de AWS). 
+ Kit de herramientas de AWS CDK, instalado y configurado. (Consulte [Kit de Herramientas CDK de AWS](https://docs.aws.amazon.com/cdk/v2/guide/cli.html) en la documentación de AWS CDK y siga las instrucciones para instalar la versión 2 de forma global).
+ Administrador de paquetes de nodos (npm), instalado y configurado para la AWS CDK en. TypeScript (Consulte [Descargar e instalar Node.js y npm](https://docs.npmjs.com/downloading-and-installing-node-js-and-npm) en la documentación de npm).

**Limitaciones**
+ Para ver las limitaciones y consideraciones, consulte [Instancias externas (Amazon ECS Anywhere)](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/ecs-anywhere.html#ecs-anywhere-considerations) en la documentación de Amazon ECS.

**Versiones de producto**
+ Kit de Herramientas CDK de AWS, versión 2
+ npm versión 7.20.3 o posterior
+ Node.js versión 16.6.1 o posterior

## Arquitectura
<a name="manage-on-premises-container-applications-by-setting-up-amazon-ecs-anywhere-with-the-aws-cdk-architecture"></a>

**Pila de tecnología de destino**
+ AWS CloudFormation
+ AWS CDK
+ Amazon ECS Anywhere
+ AWS Identity y Access Management (IAM)

**Arquitectura de destino**

El siguiente diagrama ilustra una arquitectura de sistema de alto nivel de la configuración de ECS Anywhere que utiliza la AWS CDK con TypeScript, tal como se implementa mediante este patrón.

1. Al implementar la pila de CDK de AWS, se crea una CloudFormation pila en AWS.

1. La CloudFormation pila aprovisiona un clúster de Amazon ECS y los recursos de AWS relacionados.

1. Para registrar una instancia externa en un clúster de Amazon ECS, debe instalar AWS Systems Manager Agent (SSM Agent) en su máquina virtual (VM) y registrar la VM como instancia administrada por AWS Systems Manager. 

1. También debe instalar el agente de contenedores de Amazon ECS y Docker en su máquina virtual para registrarla como instancia externa en el clúster de Amazon ECS.

1. Cuando la instancia externa está ya registrada y configurada con el clúster de Amazon ECS, puede ejecutar varios contenedores en su máquina virtual, registrada como instancia externa.

![\[Configuración de ECS Anywhere mediante AWS CDK con TypeScript.\]](http://docs.aws.amazon.com/es_es/prescriptive-guidance/latest/patterns/images/pattern-img/3ed63c00-40e7-4831-bb9d-63049c3490aa/images/ff7dc774-830d-4b9f-8262-7314afe7a033.png)


 

**Automatización y escala**

El [GitHub repositorio](https://github.com/aws-samples/amazon-ecs-anywhere-cdk-samples/) que se proporciona con este patrón utiliza la CDK de AWS como herramienta de infraestructura como código (IaC) para crear la configuración de esta arquitectura. AWS CDK le ayuda a orquestar los recursos y configurar ECS Anywhere.

## Tools (Herramientas)
<a name="manage-on-premises-container-applications-by-setting-up-amazon-ecs-anywhere-with-the-aws-cdk-tools"></a>
+ [AWS Cloud Development Kit (AWS CDK)](https://docs.aws.amazon.com/cdk/latest/guide/home.html) es un marco de desarrollo de software que le ayuda a definir y aprovisionar la infraestructura de la nube de AWS en código.
+ La [interfaz de la línea de comandos de AWS (AWS CLI)](https://docs.aws.amazon.com/cli/latest/userguide/cli-chap-welcome.html) es una herramienta de código abierto que le permite interactuar con los servicios de AWS mediante comandos en su intérprete de comandos de línea de comandos.

**Código**

El código fuente de este patrón está disponible en el GitHub repositorio de [muestras de CDK de Amazon ECS Anywhere](https://github.com/aws-samples/amazon-ecs-anywhere-cdk-samples). Para clonar y utilizar el repositorio, siga las instrucciones de la siguiente sección.

## Epics
<a name="manage-on-premises-container-applications-by-setting-up-amazon-ecs-anywhere-with-the-aws-cdk-epics"></a>

### Verificar la configuración de AWS CDK
<a name="verify-aws-cdk-configuration"></a>


| Tarea | Descripción | Habilidades requeridas | 
| --- | --- | --- | 
| Verifique la versión de AWS CDK. | Compruebe la versión del kit de herramientas de AWS CDK mediante el siguiente comando:<pre>cdk --version</pre>Este patrón requiere la versión 2 de AWS CDK. Si tiene una versión anterior de AWS CDK siga las instrucciones de la [documentación de AWS CDK](https://docs.aws.amazon.com/cdk/v2/guide/cli.html) para actualizarla. | DevOps ingeniero | 
| Configure las credenciales de AWS. | Para configurar las credenciales, ejecute el comando `aws configure` y siga las instrucciones:<pre>$aws configure<br />AWS Access Key ID [None]: <your-access-key-ID><br />AWS Secret Access Key [None]: <your-secret-access-key><br />Default region name [None]: <your-Region-name><br />Default output format [None]:</pre> | DevOps ingeniero | 

### Inicie el entorno de AWS CDK
<a name="bootstrap-the-aws-cdk-environment"></a>


| Tarea | Descripción | Habilidades requeridas | 
| --- | --- | --- | 
| Clonar el repositorio de código de AWS CDK. | Clona el repositorio de GitHub código de este patrón mediante el comando:<pre>git clone https://github.com/aws-samples/amazon-ecs-anywhere-cdk-samples.git</pre> | DevOps ingeniero | 
| Arranque el entorno de . | Para implementar la CloudFormation plantilla de AWS en la cuenta y la región de AWS que desee usar, ejecute el siguiente comando:<pre>cdk bootstrap <account-number>/<Region></pre>Para obtener más información, consulte [Proceso de arranque](https://docs.aws.amazon.com/cdk/latest/guide/bootstrapping.html) en la documentación de AWS CDK. | DevOps ingeniero | 

### Crear e implementar el proyecto
<a name="build-and-deploy-the-project"></a>


| Tarea | Descripción | Habilidades requeridas | 
| --- | --- | --- | 
| Instale las dependencias de los paquetes y compile TypeScript los archivos. | Instale las dependencias del paquete y compile los TypeScript archivos ejecutando los siguientes comandos:<pre>$cd amazon-ecs-anywhere-cdk-samples<br />$npm install<br />$npm fund </pre>Estos comandos instalan todos los paquetes del repositorio de muestra. Si se muestra algún error acerca de paquetes que faltan, utilice uno de los siguientes comandos:<pre>$npm ci   </pre>—o—<pre>$npm install -g @aws-cdk/<package_name></pre>Para obtener más información, consulte [npm ci](https://docs.npmjs.com/cli/v7/commands/npm-ci) y [npm install](https://docs.npmjs.com/cli/v7/commands/npm-install) en la documentación de npm. | DevOps ingeniero | 
| Compilar el proyecto. | Ejecute el siguiente comando para compilar el código del proyecto:<pre>npm run build</pre>Para obtener más información sobre la compilación e implementación del proyecto, consulte [Su primera aplicación de AWS CDK](https://docs.aws.amazon.com/cdk/latest/guide/hello_world.html#:~:text=the%20third%20parameter.-,Synthesize%20an%20AWS%20CloudFormation%20template,-Synthesize%20an%20AWS) en la documentación de AWS CDK. | DevOps ingeniero | 
| Implementar el proyecto. | Para implementar el código del proyecto, ejecute el comando:<pre>cdk deploy</pre> | DevOps ingeniero | 
| Verifique la creación y el resultado de la pila. | Abra la CloudFormation consola de AWS en [https://console.aws.amazon.com/cloudformation****](https://console.aws.amazon.com/cloudformation/) y elija la `EcsAnywhereStack` pila. La pestaña **Salidas** muestra los comandos que se deben ejecutar en su máquina virtual externa. | DevOps ingeniero | 

### Configuración de una máquina en las instalaciones
<a name="set-up-an-on-premises-machine"></a>


| Tarea | Descripción | Habilidades requeridas | 
| --- | --- | --- | 
| Configure su máquina virtual mediante Vagrant. | Con fines de demostración, puede usar [HashiCorp Vagrant](https://www.vagrantup.com/) para crear una máquina virtual. Vagrant es una utilidad de código abierto para compilar y mantener entornos de desarrollo de software virtual portátiles. Cree una máquina virtual Vagrant ejecutando el comando `vagrant up` desde el directorio raíz donde se encuentra Vagrantfile. Para obtener más información, consulte la [documentación de Vagrant](https://www.vagrantup.com/docs/cli/up). | DevOps ingeniero | 
| Registre su máquina virtual como instancia externa. | 1. Inicie sesión en la máquina virtual de Vagrant mediante el comando `vagrant ssh`. Para obtener más información, consulte la [documentación de Vagrant](https://www.vagrantup.com/docs/cli/ssh).2. Cree un código de activación y una ID que usará para registrar su máquina virtual en AWS Systems Manager y activar su instancia externa. El resultado de este comando incluye valores `ActivationId` y `ActivationCode`: <pre>aws ssm create-activation --iam-role EcsAnywhereInstanceRole | tee ssm-activation.json</pre>3. Exporte el ID de activación y los valores del código:<pre>export ACTIVATION_ID=<activation-ID><br />export ACTIVATION_CODE=<activation-code></pre>4. Descargar el script de instalación en el servidor ubicado en las instalaciones o en la máquina virtual (VM):<pre>curl -o "ecs-anywhere-install.sh" "https://amazon-ecs-agent.s3.amazonaws.com/ecs-anywhere-install-latest.sh" && sudo chmod +x ecs-anywhere-install.sh</pre>5. Ejecute el script de instalación en el servidor ubicado en las instalaciones o en la máquina virtual (VM).<pre>sudo ./ecs-anywhere-install.sh \<br />    --cluster test-ecs-anywhere \<br />     --activation-id $ACTIVATION_ID \<br />     --activation-code $ACTIVATION_CODE \<br />    --region <Region></pre>Para obtener más información sobre la configuración y el registro de su máquina virtual, consulte [Registrar una instancia externa en un clúster](https://docs.amazonaws.cn/en_us/AmazonECS/latest/developerguide/ecs-anywhere-registration.html) en la documentación de Amazon ECS. | DevOps ingeniero | 
| Verifique el estado de ECS Anywhere y de la máquina virtual externa. | Para verificar si su caja virtual está conectada al plano de control de Amazon ECS y en funcionamiento, utilice los siguientes comandos:<pre>aws ssm describe-instance-information<br />aws ecs list-container-instances --cluster $CLUSTER_NAME</pre> | DevOps ingeniero | 

### Limpieza
<a name="clean-up"></a>


| Tarea | Descripción | Habilidades requeridas | 
| --- | --- | --- | 
| Limpie y elimine recursos. | Después de seguir este patrón, debe eliminar los recursos que ha creado para evitar incurrir en cargos adicionales. Para limpiar, ejecute el comando:<pre>cdk destroy</pre> | DevOps ingeniero | 

## Recursos relacionados
<a name="manage-on-premises-container-applications-by-setting-up-amazon-ecs-anywhere-with-the-aws-cdk-resources"></a>
+ [Documentación de Amazon ECS Anywhere](https://aws.amazon.com/ecs/anywhere/) 
+ [Amazon ECS Anywhere Demo](https://www.youtube.com/watch?v=-eud6yUXsJM)
+ [Muestras de talleres sobre Amazon ECS Anywhere](https://github.com/aws-samples/aws-ecs-anywhere-workshop-samples)