Saltar al contenido

¿Cómo puedo crear y utilizar AMI personalizadas en Amazon ECS?

6 minutos de lectura
0

Quiero configurar y usar una imagen de máquina de Amazon (AMI) personalizada basada en CentOS, SUSE Enterprise Server o RHEL en un clúster de Amazon Elastic Container Service (Amazon ECS).

Breve descripción

Para crear una AMI personalizada y usarla con Amazon ECS, siga estos pasos:

  1. Cree una AMI.
  2. Instale Docker para su sistema operativo.
  3. Instale el paquete ecs-init.
  4. (Opcional) Instale AWS Systems Manager Agent (SSM Agent) para ECS.
  5. Active el servicio de ECS y confirme que el agente de contenedor de ECS esté activo.
  6. Limpie la imagen para usarla en el futuro.
  7. Cree una nueva imagen de Amazon Elastic Compute Cloud (Amazon EC2).
  8. Inicie una instancia de contenedor de Amazon ECS Linux y añada los datos de usuario necesarios al ejecutarla para configurar el archivo ecs.config.

Resolución

Creación de una AMI

Existen tres opciones para crear una AMI:

Instalación de Docker

Para instalar la versión de Docker adecuada para el sistema operativo y la arquitectura del sistema, consulte las instrucciones Instalación del motor de Docker en el sitio web de Docker.

Instalación del paquete ecs-int

1.    Ejecute el siguiente comando para descargar el paquete ecs-int de Amazon para CentOS, SUSE Enterprise Server o RHEL:

Nota: Sustituya la región existente por la región de AWS en la que haya iniciado la instancia.

Para x86_64 CentOS 7/8, SUSE Enterprise Server 15 o RHEL 7:

$ curl -o amazon-ecs-init.rpm https://s3.<region>.amazonaws.com/amazon-ecs-agent-<region>/amazon-ecs-init-latest.x86_64.rpm

Para aarch64 CentOS 7/8 o RHEL 7:

$ curl -o amazon-ecs-init.rpm https://s3.<region>.amazonaws.com/amazon-ecs-agent-<region>/amazon-ecs-init-latest.aarch64.rpm

2.    Ejecute uno de los siguientes comandos para instalar el paquete rpm que haya descargado para la instancia:

Para paquetes rpm de CentOS 7/8 y RHEL 7:

$ sudo yum install -y ./amazon-ecs-init.rpm

Para paquetes rpm de SUSE Enterprise Server 15:

$ sudo zypper install -y --allow-unsigned-rpm ./amazon-ecs-init.rpm

(Opcional) Instale SSM Agent para ECS

Para utilizar la característica Amazon ECS Exec para for depurar, debe instalar SSM Agent para Amazon ECS.

1.    Ejecute el siguiente comando para descargar y extraer los archivos binarios de SSM Agent:

$ mkdir -p ssm-binaries && cd ssm-binaries

2.    Ejecute uno de los siguientes comandos para CentOS, SUSE Enterprise Server o RHEL:

Nota: Sustituya la región existente por la región en la que haya iniciado la instancia.

Para x86_64 CentOS 7/8, SUSE Enterprise Server 15 o RHEL 7:

$ curl -o amazon-ssm-agent.tar.gz https://amazon-ssm-<region>.s3.<region>.amazonaws.com/latest/linux_amd64/amazon-ssm-agent-binaries.tar.gz

Para aarch64 CentOS 7/8 o RHEL 7:

$ curl -o amazon-ssm-agent.tar.gz https://amazon-ssm-<region>.s3.<region>.amazonaws.com/latest/linux_arm64/amazon-ssm-agent-binaries.tar.gz

3.    Ejecute el siguiente comando para extraer los archivos del agente:

$ tar -xzvf amazon-ssm-agent.tar.gz

4.    Obtenga la versión de SSM Agent y, a continuación, cree un directorio en /var/lib/ecs/deps/execute-command/bin/. Asigne un nombre al directorio con la versión de SSM Agent. A continuación tiene un ejemplo de comando para obtener la versión de SSM Agent:

$ ./amazon-ssm-agent -version  

SSM Agent version: 3.2.286.0  

$ export SSM_VERSION=3.2.286.0  

$ sudo mkdir -p /var/lib/ecs/deps/execute-command/bin/$SSM_VERSION

5.    Ejecute los siguientes comandos para copiar los archivos binarios de SSM Agent al directorio:

$ sudo cp amazon-ssm-agent /var/lib/ecs/deps/execute-command/bin/$SSM_VERSION/amazon-ssm-agent  

$ sudo cp ssm-agent-worker /var/lib/ecs/deps/execute-command/bin/$SSM_VERSION/ssm-agent-worker  

$ sudo cp ssm-session-worker /var/lib/ecs/deps/execute-command/bin/$SSM_VERSION/ssm-session-worker

6.    Ejecute el siguiente comando para copiar los certificados TLS de SSM Agent:

$ sudo mkdir -p /var/lib/ecs/deps/execute-command/certs  

$ sudo cp /etc/pki/ca-trust/extracted/pem/tls-ca-bundle.pem /var/lib/ecs/deps/execute-command/certs/tls-ca-bundle.pem  

$ sudo chmod 400 /var/lib/ecs/deps/execute-command/certs/tls-ca-bundle.pem

Activación del servicio de ECS y confirmación de que el agente de contenedor de ECS está activo

1.    Para activar el servicio de ECS, ejecute el siguiente comando:

$ sudo systemctl enable --now ecs

2.    Ejecute el siguiente comando para confirmar que el servicio de ECS está activado y que el agente de contenedor de ECS está activo:

$ sudo systemctl status ecs

$ sudo docker ps

Los resultados tienen un aspecto similar al siguiente:

ecs.service - Amazon Elastic Container Service - container agent
     Loaded: loaded (/lib/systemd/system/ecs.service; enabled; vendor preset: enabled)
     Active: active (running) since Tue 2022-02-22 08:39:02 UTC; 11min ago
(...)
CONTAINER ID   IMAGE                            COMMAND    CREATED         STATUS                   PORTS     NAMES
108cfb8a10d2   amazon/amazon-ecs-agent:latest   "/agent"   9 minutes ago   Up 9 minutes (healthy)             ecs-agent

Limpieza de la imagen

1.    Para limpiar la imagen para usarla en el futuro, ejecute el siguiente comando para detener el paquete ecs-init y los procesos de Docker:

$ sudo systemctl stop ecs
$ sudo systemctl stop docker

2.    Elimine todos los archivos de registro de la instancia actual para evitar que se mantengan al guardar la imagen. Utilice el script de ejemplo que figura en Prácticas de seguridad recomendadas para el generador de imágenes de EC2 para limpiar los diferentes archivos de la instancia.

3.    Para limpiar los datos específicos de ECS, ejecute los siguientes comandos:

$ sudo rm -rf /var/log/ecs/*
$ sudo rm /var/lib/ecs/data/agent.db

Creación de una nueva imagen de Amazon EC2

Ejecute el siguiente comando para usar la imagen configurada en el paso anterior y crear una nueva imagen:

$ aws ec2 create-image --description "My ECS Image" --instance-id i-012345678910 --name Custom-ECS-Image --reboot

El resultado es similar al siguiente:

{
    "ImageId": "ami-01234567890101"
}

Inicio de una instancia

Para iniciar una instancia, consulte Inicio de una instancia de contenedor de Amazon ECS Linux.

Con la nueva AMI, ejecute el siguiente comando para confirmar que los datos de usuario contienen el comando necesario para escribir en el archivo ecs.config:

**Nota:**Sustituya your_cluster_name por el correspondiente nombre del clúster.

#!/bin/bash
echo ECS_CLUSTER=your_cluster_name >> /etc/ecs/ecs.config
OFICIAL DE AWSActualizada hace 3 años