¿Qué es Amazon Elastic Container Service? - Amazon Elastic Container Service

¿Qué es Amazon Elastic Container Service?

Amazon Elastic Container Service (Amazon ECS) es un servicio de administración de contenedores altamente escalable y rápido que facilita la tarea de ejecutar, detener y administrar contenedores de Docker en un clúster. Puede alojar el clúster en una infraestructura sin servidor administrada por Amazon ECS. Para ello, lance los servicios o las tareas con el tipo de lanzamiento Fargate. Si desea más control sobre su infraestructura, puede alojar las tareas en un clúster de instancias de Amazon Elastic Compute Cloud (Amazon EC2) que usted administre mediante el tipo de lanzamiento EC2. Para obtener más información acerca de los tipos de lanzamiento, consulte Tipos de lanzamiento de Amazon ECS.

Amazon ECS le permite lanzar y detener aplicaciones basadas en contenedores con llamadas a la API sencillas, le permite obtener el estado del clúster desde un servicio centralizado y le ofrece acceso a muchas características familiares de Amazon EC2.

Puede utilizar Amazon ECS para programar la ubicación de los contenedores en el clúster en función de sus necesidades de recursos, políticas de aislamiento y requisitos de disponibilidad. Amazon ECS elimina la necesidad de operar sus propios sistemas de administración de clústeres y administración de configuración o de preocuparse del escalado de su infraestructura de administración.

Amazon ECS se puede utilizar para crear una experiencia de implementación y creación coherente, administrar y escalar lotes y cargas de trabajo de Extracción, transformación y carga (ETL) y crear arquitecturas de aplicación sofisticadas en un modelo de microservicios. Para obtener más información acerca de los casos de uso y situaciones de Amazon ECS, consulte Casos de uso de contenedor.

AWS Elastic Beanstalk también se puede utilizar para desarrollar, probar e implementar rápidamente contenedores de Docker conjuntamente con otros componentes de su infraestructura de aplicaciones; no obstante, si utiliza Amazon ECS directamente obtendrá un control más preciso y acceso a un conjunto más numeroso de casos de uso. Para obtener más información, consulte AWS Elastic Beanstalk Developer Guide.

El equipo de servicios de contenedores de AWS mantiene una hoja de ruta pública en GitHub. Contiene información acerca del trabajo actual de los equipos y permite a todos los clientes de AWS dar retroalimentación de forma directa. Para obtener más información, consulte Guía de contenedores de AWS.

Características de Amazon ECS

Amazon ECS es un servicio regional que simplifica la ejecución de contenedores de aplicación con alta disponibilidad en diversas zonas de disponibilidad dentro de una región. Puede crear clústeres de Amazon ECS dentro de una VPC nueva o existente. Después de que el clúster esté activo y en ejecución, puede definir servicios y definiciones de tareas que especifican las imágenes de contenedores Docker que ejecutar en los clústeres. Las imágenes de contenedor se almacenan y se extraen desde registros de contenedor, que podrían existir dentro o fuera de la infraestructura de AWS.

En el siguiente diagrama, se muestra la arquitectura de un entorno de Amazon ECS que utiliza el tipo de lanzamiento Fargate:

Las siguientes secciones profundizan en detalle en estos elementos individuales de la arquitectura de Amazon ECS.

Contenedores e imágenes

Para implementar aplicaciones en Amazon ECS, los componentes de la aplicación se deben diseñar para ejecutarse en contenedores. Un contenedor Docker es una unidad estandarizada de desarrollo de software que contiene todo lo que la aplicación de software necesita para ejecutarse: código, tiempo de ejecución, herramientas del sistema, bibliotecas del sistema, etc. Los contenedores se crean a partir de una plantilla de solo lectura denominada imagen.

Las imágenes se crean normalmente a partir de un Dockerfile, un archivo de texto sin formato que especifica todos los componentes incluidos en el contenedor. Estas imágenes se almacenan a continuación en un registro desde el que se pueden descargar y ejecutar en el clúster. Para obtener más información sobre la tecnología de contenedor, consulte Conceptos básicos de Docker para Amazon ECS.

Definiciones de tareas

Si desea preparar su aplicación para que se ejecute en Amazon ECS, cree una definición de tarea. La definición de tarea es un archivo de texto, en formato JSON, que describe uno o más contenedores (hasta un máximo de diez) que forman la aplicación. Podemos decir que es un plan de la aplicación. Las definiciones de tareas especifican diversos parámetros para la aplicación. Ejemplos de parámetros de definición de tareas son los contenedores que se van a utilizar, el tipo de lanzamiento que se va a usar, los puertos que se deben abrir para la aplicación, así como los volúmenes de datos que se deben utilizar con los contenedores en la tarea. Los parámetros específicos disponibles para la definición de tarea dependerán del tipo de lanzamiento que se utilice. Para obtener más información sobre la creación de definiciones de tareas, consulte Definiciones de tareas de Amazon ECS.

A continuación, mostramos un ejemplo de una definición de tarea que contiene un único contenedor que ejecuta un servidor web NGINX con el tipo de lanzamiento Fargate. Para un ejemplo más amplio que muestra el uso de varios contenedores en una definición de tarea, consulte Ejemplos de definiciones de tareas.

{ "family": "webserver", "containerDefinitions": [ { "name": "web", "image": "nginx", "memory": "100", "cpu": "99" }, ], "requiresCompatibilities": [ "FARGATE" ], "networkMode": "awsvpc", "memory": "512", "cpu": "256", }

Tareas y programación

Una tarea es la instancia creada de una definición de tarea dentro de un clúster. Después de haber creado una definición de tareas para su aplicación dentro de Amazon ECS, puede especificar el número de tareas que se ejecutarán en su clúster.

Cada tarea que usa el tipo de lanzamiento Fargate tiene su propio límite de aislamiento y no comparte el kernel subyacente, los recursos de CPU, los recursos de memoria o la interfaz de red elástica con otra tarea.

El programador de tareas de Amazon ECS es responsable de colocar tareas dentro del clúster. Dispone de varias opciones de programación diferentes. Por ejemplo, puede definir un servicio que ejecuta y mantiene un número especificado de tareas de forma simultánea. Para obtener más información sobre las distintas opciones de programación disponibles, consulte Programación de tareas de Amazon ECS.

Clústeres

Cuando se ejecutan tareas utilizando Amazon ECS, estas se colocan en un clúster, que es una agrupación lógica de recursos. Si utiliza el tipo de lanzamiento Fargate con tareas dentro del clúster, Amazon ECS administra los recursos del clúster. Si utiliza el tipo de lanzamiento EC2, entonces los clústeres serán un grupo de instancias de contenedor administradas por usted. Una instancia de contenedor de Amazon ECS es una instancia Amazon EC2 que ejecuta el agente de contenedor de Amazon ECS. Amazon ECS descarga las imágenes del contenedor desde el registro que se especifique y las ejecuta dentro del clúster.

Para obtener más información sobre la creación de clústeres, consulte Clústeres de Amazon ECS. Si utiliza el tipo de lanzamiento EC2, puede obtener información sobre la creación de instancias de contenedor en Instancias de contenedor de Amazon ECS.

Agente de contenedor

El agente de contenedor se ejecuta en cada recurso de la infraestructura incluido en un clúster de Amazon ECS. Envía información a Amazon ECS sobre el uso de recursos y las tareas actualmente en ejecución en cada recurso. Además, inicia y detiene tareas cada vez que recibe una solicitud desde Amazon ECS. Para obtener más información, consulte Agente de contenedor de Amazon ECS.

Primeros pasos con Amazon ECS

Si está utilizando Amazon ECS por primera vez, la Consola de administración de AWS para Amazon ECS proporciona un asistente de primera ejecución que le guía durante el proceso de definición de tareas para un servidor web, la configuración de un servicio y el lanzamiento del primer clúster de Fargate. El asistente de primera ejecución es muy recomendable para usuarios que no tienen experiencia previa con Amazon ECS. Para obtener más información, consulte el tutorial Introducción al uso de Amazon ECS con Fargate.

Como opción, puede instalar la AWS Command Line Interface (AWS CLI) para utilizar Amazon ECS. Para obtener más información, consulte Configuración con Amazon ECS.

Amazon ECS se puede utilizar junto con los servicios de AWS siguientes:

AWS Identity and Access Management

IAM es un servicio web que ayuda a controlar de forma segura el acceso de los usuarios a los recursos de AWS. Utilice IAM para controlar quién puede usar los recursos de AWS (autenticación), así como cuáles de ellos pueden usar y cómo pueden hacerlo (autorización). En Amazon ECS, IAM se puede utilizar para controlar el acceso en el nivel de instancia de contenedor utilizando roles de IAM y en el nivel de tarea utilizando roles de tarea de IAM. Para obtener más información, consulte Administración de identidad y acceso en Amazon Elastic Container Service.

Amazon EC2 Auto Scaling

Auto Scaling es un servicio web que le permite aumentar o reducir la escala de las tareas de manera automática de acuerdo con políticas definidas por el usuario, controles del estado de salud y programas. Puede utilizar Auto Scaling con una tarea de Fargate dentro de un servicio para modificar la escala en respuesta a una serie de métricas, o bien con una tarea de EC2 para modificar la escala de las instancias de contenedor dentro del clúster. Para obtener más información, consulte Auto Scaling de servicios.

Elastic Load Balancing

Elastic Load Balancing distribuye automáticamente el tráfico entrante de las aplicaciones entre las tareas del servicio de Amazon ECS. Esto le permite conseguir niveles superiores de tolerancia a errores en sus aplicaciones, proporcionando sin problemas la capacidad de equilibrio de carga necesaria para distribuir el tráfico de las aplicaciones. Puede utilizar Elastic Load Balancing para crear un punto de enlace que balancee el tráfico entre servicios en un clúster. Para obtener más información, consulte Balanceo de carga de los servicios.

Amazon EC2 Container Registry

Amazon ECR es un servicio de registro de Docker de AWS administrado seguro, escalable y fiable. Amazon ECR admite repositorios privados de Docker con permisos de nivel de recurso que utilicen de IAM, de forma que instancias de o usuarios concretos puedan acceder a los repositorios y a las imágenes. Los desarrolladores pueden utilizar la CLI de Docker para diseñar, insertar, extraer y administrar imágenes. Para obtener más información, consulte Guía del usuario de Amazon EC2 Container Registry.

AWS CloudFormation

AWS CloudFormation ofrece a desarrolladores y administradores de sistemas un método sencillo de crear y administrar una colección de recursos de AWS relacionados entre sí, aprovisionándolos y actualizándolos de una manera ordenada y predecible. Puede definir clústeres, definiciones de tareas y servicios como entidades en un script de AWS CloudFormation. Para obtener más información, consulte la Plantilla de referencia de AWS CloudFormation.

Acceso a Amazon ECS

Puede trabajar con Amazon ECS de las siguientes formas:

Consola de administración de AWS

La consola es una interfaz basada en navegador para administrar los recursos de Amazon ECS. Para ver un tutorial que le oriente a través de la consola, consulte Introducción al uso de Amazon ECS con Amazon EC2.

Herramientas de línea de comando de AWS

Puede usar las herramientas de línea de comandos de AWS para emitir comandos en la línea de comandos del sistema para realizar tareas de Amazon ECS y AWS. Esto puede resultar más rápido y eficaz que utilizar la consola. Las herramientas de línea de comandos también son útiles para crear scripts que realicen tareas de AWS.

AWS proporciona dos conjuntos de herramientas de línea de comandos: AWS Command Line Interface (AWS CLI) y la Herramientas de AWS para Windows PowerShell. Para obtener más información, consulte la AWS Command Line Interface Guía del usuario y la Guía del usuario de las Herramientas de AWS para Windows PowerShell.

CLI de Amazon ECS

Además de utilizar la AWS CLI para obtener acceso a los recursos de Amazon ECS, puede utilizar la CLI de Amazon ECS, que proporciona comandos de alto nivel para simplificar la creación, actualización y monitorización de clústeres y tareas desde un entorno de desarrollo local utilizando Docker Compose. Para obtener más información, consulte Uso de la interfaz de línea de comandos de Amazon ECS.

SDK de AWS

También proporcionamos SDK que le permiten tener acceso a Amazon ECS mediante diversos lenguajes de programación. Los SDK se encargan automáticamente de tareas tales como:

  • Firmar criptográficamente sus solicitudes de servicio

  • Reintentar solicitudes

  • Tratar las respuestas a errores

Para obtener más información sobre los SDK disponibles, consulte Herramientas para Amazon Web Services.