Amazon Elastic Container Service (ECS) le permite ejecutar y administrar fácilmente aplicaciones con contenedores de Docker en un clúster de instancias de Amazon EC2. Las aplicaciones empaquetadas como contenedores a nivel local se implementarán y ejecutarán de la misma forma que los contenedores administrados por Amazon ECS. Amazon ECS elimina la necesidad de instalar, operar y escalar su propia infraestructura de administración de clústeres, y le permite programar aplicaciones compatibles con Docker en su clúster, según sus necesidades de recursos y requisitos de disponibilidad. Amazon ECS le permite pasar de un solo contenedor a miles de contenedores en cientos de instancias sin incrementar la complejidad de la ejecución de su aplicación. Puede ejecutar cualquier elemento: aplicaciones, trabajos por lotes o microservicios. Amazon ECS elimina la complejidad de la infraestructura, de manera que puede concentrarse en diseñar, crear y ejecutar aplicaciones con contenedores.

Con Amazon ECS, dispone de una visibilidad y un control absolutos del clúster, desde la creación y terminación de contenedores de Docker hasta la visualización de información detallada sobre el estado del clúster. Puede integrar y usar su propio programador de contenedores o conectar Elastic Container Service al proceso de entrega de software existente (por ejemplo, sistemas de entrega e integración continuas).

Amazon Elastic Container Service

Introducción

Disfrute de doce meses de acceso a la capa de uso gratuita de AWS y de otras características del nivel Basic de AWS Support, entre otras, un servicio ininterrumpido de soporte al cliente, foros de soporte y muchas más.

AmazonEC2ContainerService_ProductDetail

Amazon Elastic Container Service es compatible con Docker y le permite ejecutar y administrar contenedores de Docker en un clúster de instancias de Amazon EC2. Cada instancia EC2 de un clúster administrado por Amazon ECS ejecuta un demonio de Docker, por lo que cualquier aplicación empaquetada como contenedor a nivel local se implementará y ejecutará en Amazon ECS sin necesidad de realizar ningún cambio de configuración.

La administración de una infraestructura propia de administración de contenedores implica instalar, utilizar y escalar software de administración de clústeres, sistemas de administración de la configuración y soluciones de monitorización propios. Resulta complicado diseñar y administrar la disponibilidad y escalabilidad de estos sistemas. Amazon Elastic Container Service elimina la complejidad de la administración de contenedores. Con Amazon ECS, basta con lanzar un clúster de instancias de contenedor y especificar las tareas que desea ejecutar. Amazon se encarga de toda la administración de los clústeres.

Amazon Elastic Container Service le permite definir tareas a través de una plantilla JSON declarativa denominada definición de tareas. En una definición de tareas, puede especificar el contenedor o contenedores necesarios para dicha tarea, así como el repositorio de Docker, los requisitos de imagen, memoria y CPU, los volúmenes de datos compartidos y la forma en que los contenedores están vinculados entre sí. Puede lanzar tantas tareas como desee a partir de un archivo único de definición de tareas que puede registrar en el servicio. Los archivos de definición de tareas le permiten controlar la versión de la especificación de su aplicación.

Amazon Elastic Container Service incorpora programadores que colocan los contenedores en sus clústeres de acuerdo con sus necesidades de recursos (p. ej., CPU o RAM) y requisitos de disponibilidad. Haciendo uso de los programadores disponibles, puede programar aplicaciones y servicios de larga ejecución, así como trabajos por lotes. Las API de Amazon ECS también proporcionan información completa del estado de los clústeres, que le permite escribir sus propios programadores o integrar programadores de terceros (p. ej., Marathon). Amazon ECS es un sistema de simultaneidad optimista y estado compartido que presenta el estado del clúster al completo a todos los programadores. Puede desarrollar sus propios programadores o integrar programadores de terceros utilizando las API de Amazon ECS o Blox, una colección de proyectos de código abierto para la administración y organización de contenedores. Para obtener más información, consulte la página de Blox GitHub.

Recuperación automática de los contenedores
El programador de Amazon ECS recuperará automáticamente los contenedores en mal estado, para asegurarse de que dispone de la cantidad deseada de contenedores para su aplicación.

Implementaciones de contenedores
Amazon ECS le permite actualizar con facilidad las versiones de sus contenedores. Puede cargar una versión nueva de la definición de tareas de su aplicación y el programador de Amazon ECS iniciará contenedores nuevos automáticamente a partir de la imagen actualizada, y eliminará los contenedores que ejecuten la versión anterior. Amazon ECS activará y anulará automáticamente el registro de sus contenedores del ELB asociado.

Amazon Elastic Container Service le ofrece un conjunto de API sencillas que le permiten integrar y ampliar el servicio. Las API le permiten crear y eliminar clústeres, registrar tareas y anular su registro, lanzar y eliminar contenedores de Docker y ofrecer información detallada sobre el estado del clúster y de sus instancias. También puede usar AWS CloudFormation para aprovisionar clústeres de Amazon ECS, registrar definiciones de tareas y programar contenedores.

Amazon Elastic Container Service es compatible con las redes de Docker y se integra con Amazon VPC para brindar aislamiento a contenedores. Esto le brinda control sobre la manera en la que los contenedores se conectan con otros servicios y con tráfico externo. Con Amazon ECS, puede elegir entre cuatro modos de red para los contenedores que se adaptan a diferentes casos de uso:
 
  • Task Networking/awsvpc: este modo asigna a cada tarea de ECS en ejecución una interfaz de red elástica exclusiva, lo que permite utilizar todas las características de red en una VPC, como las instancias EC2.
  • Bridge: este modo crea un puente de Linux que conecta todos los contenedores en ejecución en el host de una red virtual local, a la cual se puede obtener acceso mediante la conexión de red predeterminada del host.
  • Host: este modo añade contenedores directamente a la pila de red del host, lo que expone los contenedores en la red del host sin aislamiento.
  • None: este modo deshabilita la red externa para contendores.

Amazon Elastic Container Service se integra con Elastic Load Balancing (ELB), lo que permite distribuir el tráfico entre sus contenedores. Solo debe especificar la definición de tarea y el ELB que desea utilizar, y el programador del Servicio ECS de Amazon agregará y eliminará contenedores del ELB automáticamente. Puede especificar un puerto dinámico en la definición de tarea, que asigna a su contenedor un puerto no utilizado cuando se programa en una instancia de EC2. Puede utilizar el enrutamiento basado en ruta para compartir un ELB con varios servicios.

Amazon Elastic Container Service puede utilizarse con cualquier registro de Docker privado accesible o de terceros o con Docker Hub, un repositorio alojado de imágenes de Docker. Lo único que debe especificar es el repositorio en la definición de tareas y Amazon ECS recuperará las imágenes correspondientes a las aplicaciones.

Puede enviar los logs de agente de ECS pertenecientes a cada instancia y los logs de contenedor de Docker a Logs de Amazon CloudWatch para simplificar el diagnóstico de problemas. También puede registrar todas las llamadas al API de Amazon ECS y recibir los archivos de log mediante AWS CloudTrail. La información registrada incluye la identidad del intermediario del API, la hora a la que se produce la llamada, la dirección IP de origen del intermediario, los parámetros de solicitud y los elementos de respuesta enviados por Amazon ECS. CloudTrail le proporciona un historial de las llamadas realizadas al API desde la consola de administración de Amazon ECS, los AWS SDK y la CLI de AWS. Además, le permite realizar un análisis de la seguridad, un seguimiento de los cambios en los recursos y auditorías de conformidad.

Amazon Elastic Container Service proporciona capacidades de monitorización para los contenedores y clústeres. Con Amazon CloudWatch, puede monitorizar el uso medio y total de la CPU y la memoria durante la ejecución de tareas, y agruparlas por definición de tarea, servicio o clúster. También puede configurar alarmas de CloudWatch que le avisen cuando sea necesario incrementar o reducir la capacidad de los contenedores o clústeres.

La CLI de Amazon Elastic Container Service (Amazon ECS CLI) permite simplificar la experiencia de desarrollo local y configurar fácilmente un clúster de Amazon ECS junto con los recursos asociados (como una instancia EC2). Amazon ECS CLI soporta Docker Compose, una herramienta de código abierto que sirve para definir y ejecutar aplicaciones multicontenedor. Puede aplicar la misma definición de Compose usada para definir una aplicación multicontenedor en la máquina de desarrollo y en la fase de producción. Amazon ECS CLI es de código abierto y se puede descargar aquí.

Amazon Elastic Container Service permite especificar una función de IAM para cada tarea de ECS. Esto permite que las instancias de contenedor de ECS tengan una función mínima, respetando la política de acceso de “Último privilegio” y permitiéndole administrar la función de la instancia y la función de la tarea por separado. También ganará visibilidad en cuanto a qué tarea está utilizando qué función, lo cual se rastrea en los logs de CloudTrail.