¿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. Los contenedores se definen en una definición de tareas que se utiliza para ejecutar tareas individuales o tareas dentro de un servicio. En este contexto, un servicio es una configuración que le permite ejecutar y mantener un número determinado de tareas simultáneamente en un clúster. Las tareas y los servicios se pueden ejecutar en una infraestructura sin servidor administrada por AWS Fargate. Si desea más control sobre su infraestructura, puede ejecutar las tareas y los servicios en un clúster de instancias de Amazon EC2 que usted administre.

Amazon ECS le permite lanzar y detener sus aplicaciones basadas en contenedores mediante simples llamadas a la API. También puede recuperar el estado del clúster desde un servicio centralizado y obtener acceso a muchas funciones conocidas de Amazon EC2.

Puede programar la ubicación de los contenedores en el clúster en función de las necesidades de recursos, las políticas de aislamiento y los requisitos de disponibilidad. Con Amazon ECS, no tiene que operar sus propios sistemas de administración de clústeres y administración de configuración ni 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 contenedores.

El equipo de servicios de contenedores de AWS mantiene una hoja de ruta pública en GitHub. La hoja de ruta 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 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 crear definiciones de tareas que especifican las imágenes de contenedores que se ejecutan en los clústeres. Las definiciones de tareas se utilizan para ejecutar tareas o crear servicios. Las imágenes de contenedor se almacenan en registros de contenedores y se extraen de ellos, por ejemplo, el Amazon Elastic Container Registry.

En el siguiente diagrama, se muestra la arquitectura de un entorno de Amazon ECS que se ejecuta en AWS Fargate.


                Diagrama que muestra la arquitectura de un entorno de Amazon ECS que utiliza el tipo de lanzamiento de Fargate.

En las siguientes secciones, se profundizan 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 es una unidad estandarizada de desarrollo de software que contiene todo lo que la aplicación de software necesita para ejecutarse, incluido el respectivo código, tiempo de ejecución, herramientas del sistema y bibliotecas del sistema. 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. Una vez creadas, las imágenes se almacenan 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.


                    Diagrama que muestra la creación y el registro de imágenes de Docker dentro de un entorno de Amazon ECS.

Definiciones de tareas

Para preparar la aplicación para que se ejecute en Amazon ECS, debe crear una definición de tareas. La definición de tareas 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 la definición de tareas es un plan de la aplicación. Especifican diversos parámetros para la aplicación. Por ejemplo, estos parámetros se pueden utilizar para indicar qué contenedores se deben utilizar, qué puertos se deben abrir para la aplicación, así como qué volúmenes de datos se deben utilizar con los contenedores en la tarea. Los parámetros específicos disponibles para la definición de tareas dependerán de las necesidades de la aplicación específica. Para obtener más información sobre la creación de definiciones de tareas, consulte Definiciones de tareas de Amazon ECS.

A continuación, se muestra un ejemplo de una definición de tareas que contiene un único contenedor que ejecuta un servidor web NGINX con el tipo de lanzamiento de 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 tarea.

{ "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 la aplicación dentro de Amazon ECS, puede especificar el número de tareas que se ejecutarán en el clúster.

El programador de tareas de Amazon ECS es responsable de ubicar las 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.


                    Diagrama que muestra la programación y la ubicación de las tareas dentro de un entorno de Amazon ECS mediante el tipo de lanzamiento de Fargate.

Clusters

Un clúster de Amazon ECS es una agrupación lógica de tareas o servicios. Puede registrar una o varias instancias de Amazon EC2 (también conocidas como Instancias de contenedor) en el clúster para ejecutar tareas en ellas. O bien, puede utilizar la infraestructura sin servidor que proporciona Fargate para ejecutar tareas. Cuando las tareas se ejecutan en Fargate, Fargate también administra los recursos del clúster.

Cuando se utiliza Amazon ECS por primera vez, se crea un clúster predeterminado. Puede crear clústeres adicionales en una cuenta para mantener los recursos separados.

Para obtener más información sobre la creación de clústeres, consulte Clústeres de Amazon ECS. Para obtener más información acerca del lanzamiento de instancias de contenedor y su registro en los clústeres, consulte Instancias de contenedor de Amazon ECS.

Agente de contenedores

El agente de contenedor se ejecuta en cada instancia de contenedor dentro de un clúster de Amazon ECS. El agente envía información a Amazon ECS acerca de la utilización de recursos y las tareas actualmente en ejecución en cada recurso. Envía y detiene tareas cada vez que recibe una solicitud proveniente de Amazon ECS. Para obtener más información, consulte Agente de contenedor de Amazon ECS.


                    Diagrama que muestra las tareas del agente de contenedor dentro de un entorno de Amazon ECS.

Introducción a Amazon ECS

Para obtener más información acerca de las herramientas para desarrolladores disponibles para la utilización de Amazon ECS, consulte Información general sobre herramientas para desarrolladores de Amazon ECS.

Si está utilizando Amazon ECS por primera vez, la AWS Management Console de Amazon ECS proporciona un asistente de primer uso que lo 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. Recomendamos utilizar el asistente de primer uso si tiene poca o ninguna experiencia previa con Amazon ECS. Para obtener más información, consulte Introducción a Amazon ECS.

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 mediante Amazon ECS.

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

AWS Identity and Access Management

Identity and Access Management (IAM) es un servicio de administración de accesos que le ayuda a controlar de forma segura el acceso a los recursos de AWS. Puede utilizar IAM para controlar quién está autenticado (ha iniciado sesión) y autorizado (tiene permisos) para consultar o realizar acciones específicas en recursos. En Amazon ECS, puede utilizar IAM para controlar el acceso en el nivel de instancia de contenedor mediante roles de IAM y en el nivel de tarea mediante roles de IAM para tareas. Para obtener más información, consulte Identity and Access Management para Amazon Elastic Container Service.

Amazon EC2 Auto Scaling

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

Elastic Load Balancing

El servicio Elastic Load Balancing distribuye de forma automática el tráfico entrante de las aplicaciones entre varias tareas del servicio de Amazon ECS. Esto permite conseguir niveles superiores de tolerancia a errores en las aplicaciones y proporcionar la capacidad de equilibrio de carga necesaria para distribuir el tráfico de las aplicaciones sin inconvenientes. 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 Equilibrio de carga de los servicios.

Amazon Elastic Container Registry

Amazon ECR es un servicio de registro seguro, escalable, fiable y administrado de AWS Docker. Amazon ECR admite repositorios privados de Docker con permisos de nivel de recurso que utilizan IAM para que determinadas tareas o usuarios 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 la Guía del usuario de Amazon Elastic 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. Para ser más específicos, hace que el aprovisionamiento y la actualización de recursos sean más ordenados y predecibles. 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 Referencia de la plantilla de AWS CloudFormation.

Pricing

Los precios de Amazon ECS dependerán de si utiliza AWS Fargate o la infraestructura de Amazon EC2 para alojar sus cargas de trabajo en contenedores. Cuando se utiliza Amazon ECS alojado en AWS Outposts, los precios siguen el mismo modelo que cuando se utiliza Amazon EC2. Para obtener más información, consulte Precios de Amazon ECS.

Amazon ECS y Fargate también ofrecen Savings Plans que proporcionan ahorros significativos en función de la utilización de AWS. Para obtener más información, consulte la Guía del usuario de Savings Plan de AWS.

Para ver su factura, vaya al Panel de Billing and Cost Management en la consola de AWS Billing and Cost Management. La factura contiene enlaces a informes de uso que ofrecen detalles sobre la cuenta. Para obtener más información acerca de la facturación de las cuentas de AWS, consulte Facturación de cuentas de AWS.

Si tiene alguna pregunta sobre los eventos, las cuentas y la facturación de AWS, póngase en contacto con AWS Support.

Para obtener información general de Trusted Advisor, un servicio que ayuda a optimizar los costos, la seguridad y el rendimiento del entorno de AWS, consulte AWS Trusted Advisor.