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

4 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. Habilite el servicio de ECS y confirme que el agente de contenedores de ECS esté activo.
  5. Limpie la imagen para usarla en el futuro.
  6. Cree una nueva imagen de Amazon Elastic Compute Cloud (Amazon EC2).
  7. 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.

Solució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 Instalación del motor de Docker.

Instalación del paquete ecs-int

1.    Para descargar el paquete ecs-int de Amazon para CentOS, SUSE Enterprise Server o RHEL, ejecute uno de los siguientes comandos:

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.    Para instalar el paquete rpm que haya descargado para la instancia, ejecute uno de los siguientes comandos:

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

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

Para paquetes rpm para SUSE Enterprise Server 15:

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

Habilitar el servicio de ECS y confirmar que el agente de contenedores de ECS esté activo

1.    Para habilitar 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é habilitado y que el agente de contenedores 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, detenga el paquete ecs-init y los procesos de Docker mediante los siguientes comandos:

$ 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

Utilice la imagen configurada en el paso anterior para crear una nueva imagen mediante el siguiente comando:

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

El resultado es similar al siguiente ejemplo:

{
    "ImageId": "ami-01234567890101"
}

Iniciar una instancia

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

A continuación, mediante la nueva AMI, asegúrese de que UserData contenga el comando que hay que escribir en el archivo ecs.config. Para ello, ejecute el siguiente comando: **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 AWS
OFICIAL DE AWSActualizada hace 2 años