Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.
Amazon ECS en AWS Fargate
La tecnología AWS Fargate se puede utilizar en Amazon ECS para ejecutar contenedores
Al ejecutar las tareas y servicios con el tipo de lanzamiento de Fargate, la aplicación se empaqueta en contenedores, se especifican los requisitos de CPU y de memoria, se definen las políticas de IAM y de redes y se lanza la aplicación. Cada tarea de Fargate tiene su propio límite de aislamiento y no comparte el kernel subyacente, los recursos de CPU, los recursos de memoria ni la interfaz de red elástica con otra tarea.
Fargate ofrece versiones de plataforma para las ediciones Full y Core de Amazon Linux 2 y Microsoft Windows 2019 Server. A menos que se especifique lo contrario, la información de esta página se aplica a todas las plataformas Fargate.
En este tema, se describen los diferentes componentes de las tareas y los servicios de Fargate, y se mencionan consideraciones especiales para el uso de Fargate con Amazon ECS.
Para obtener información acerca de las regiones que admiten contenedores Linux, consulte Regiones compatibles para contenedores Linux en AWS Fargate.
Para obtener información acerca de las regiones que admiten contenedores de Windows en Fargate, consulte Regiones compatibles para contenedores Windows en AWS Fargate.
Definiciones de tareas
Las tareas de Amazon ECS alojadas en AWS Fargate no admiten todos los parámetros de definición de tareas disponibles. Algunos parámetros no son compatibles, y otros se comportan de forma distinta para tareas de Fargate.
Los siguientes parámetros de definición de tareas no son válidos en tareas de Fargate:
-
disableNetworking
-
dnsSearchDomains
-
dnsServers
-
dockerSecurityOptions
-
extraHosts
-
gpu
-
ipcMode
-
links
-
pidMode
-
placementConstraints
-
privileged
-
systemControls
-
maxSwap
-
swappiness
Los siguientes parámetros de definición de tareas son válidos en tareas de Fargate, pero presentan limitaciones que se deben tener en cuenta:
-
linuxParameters
: al especificar opciones específicas de Linux que se aplican al contenedor, encapabilities
no se admite el parámetroadd
. No se admiten los parámetrosdevices
,sharedMemorySize
ytmpfs
. Para obtener más información, consulte Parámetros de Linux. -
volumes
: las tareas de Fargate solo admiten volúmenes de host de montaje vinculado, por lo que no se admite el parámetrodockerVolumeConfiguration
. Para obtener más información, consulte Volúmenes. -
cpu
: para contenedores Windows en AWS Fargate, el valor no puede ser inferior a 1 vCPU.
A fin de garantizar que la definición de tareas sea válida para su utilización con Fargate, puede especificar lo siguiente al registrar la definición de tareas:
-
En la AWS Management Console, en el campo Requires Compatibilities (Requiere compatibilidades), especifique
FARGATE
. -
En la AWS CLI, especifique la opción
--requires-compatibilities
. -
En la API de Amazon ECS, especifique el indicador
requiresCompatibilities
.
Modo de red
Las definiciones de tareas de Amazon ECS para AWS Fargate requieren que el modo de red se establezca en awsvpc
. El modo de red awsvpc
proporciona a cada tarea su propia interfaz de red elástica. Para obtener más información, consulte Redes de tareas de AWS Fargate en la Guía del usuario de Amazon Elastic Container Service para AWS Fargate.
También se necesita una configuración de red al crear un servicio o ejecutar tareas manualmente. Para obtener más información, consulte Redes de tareas de AWS Fargate en la Guía del usuario de Amazon Elastic Container Service para AWS Fargate.
Sistemas operativos de tarea
Al configurar una definición de tarea y contenedor para AWS Fargate, debe especificar el sistema operativo que ejecuta el contenedor. Se admiten los siguientes sistemas operativos para AWS Fargate:
-
Amazon Linux 2
-
Windows Server 2019 Full
-
Windows Server 2019 Core
-
Windows Server 2022 Full
-
Windows Server 2022 Core
Arquitectura de CPU de tarea
Hay 2 arquitecturas disponibles para la definición de tareas de Amazon ECS, ARM y X86_64.
Cuando ejecuta contenedores de Windows en AWS Fargate, debe tener la arquitectura de CPU X86_64.
Cuando ejecuta contenedores Linux en AWS Fargate, puede utilizar la arquitectura de CPU X86_64 o la arquitectura ARM64 para las aplicaciones basadas en ARM. Para obtener más información, consulte Uso de cargas de trabajo de ARM de 64 bits en Amazon ECS.
Memoria y CPU de tarea
Las definiciones de tareas de Amazon ECS para AWS Fargate requieren que especifique la CPU y la memoria en el nivel de tarea. Si bien también puede especificar la CPU y la memoria en el nivel de contenedor para tareas de Fargate, es opcional. La mayoría de casos de uso solo se cumplen especificando estos recursos en el nivel de tarea. En la siguiente tabla se muestran las combinaciones válidas de CPU y memoria de nivel de tarea.
Valor de CPU |
Valor de memoria |
Sistemas operativos admitidos por AWS Fargate |
---|---|---|
256 (0,25 vCPU) |
512 MiB, 1 GB, 2 GB |
Linux |
512 (0,5 vCPU) |
1 GB, 2 GB, 3 GB, 4 GB |
Linux |
1024 (1 vCPU) |
2 GB, 3 GB, 4 GB, 5 GB, 6 GB, 7 GB, 8 GB |
Linux, Windows |
2048 (2 vCPU) |
Entre 4 GB y 16 GB en incrementos de 1 GB |
Linux, Windows |
4096 (4 vCPU) |
Entre 8 GB y 30 GB en incrementos de 1 GB |
Linux, Windows |
8192 (8 vCPU) notaEsta opción requiere una plataforma Linux |
Entre 16 GB y 60 GB en incrementos de 4 GB |
Linux |
16 384 (16 vCPU) notaEsta opción requiere una plataforma Linux |
Entre 32 GB y 120 GB en incrementos de 8 GB |
Linux |
Límites de recursos de tareas
Las definiciones de tareas de Amazon ECS para contenedores Linux en AWS Fargate admiten el parámetro ulimits
para definir los límites de recursos que se van a establecer en un contenedor.
Las definiciones de tareas de Amazon ECS para Windows en AWS Fargate admiten el parámetro ulimits
para definir los límites de recursos que se van a establecer en un contenedor.
Las tareas de Amazon ECS alojadas en Fargate utilizan los valores de los límites de recursos predeterminados, a excepción del parámetro de límite de recursos nofile
que Fargate anula. El límite de recursos nofile
define una restricción en el número de archivos abiertos que puede utilizar un contenedor. El límite flexible nofile
predeterminado es 1024
y el límite invariable es 4096
. Puede establecer los valores de ambos límites hasta1048576
.
El siguiente es un fragmento de código de definición de tareas de ejemplo que muestra cómo definir un límite nofile
personalizado que se ha duplicado:
"ulimits": [
{
"name": "nofile",
"softLimit": 2048
,
"hardLimit": 8192
}
]
Para obtener más información acerca de los otros límites de recursos que se pueden ajustar, consulte Límites de recursos.
Registro
Las definiciones de tareas de Amazon ECS para AWS Fargate admiten los controladores de registros awslogs
, splunk
y awsfirelens
para la configuración de registros.
El controlador deawslogs
registros configura las tareas de Fargate para que envíen información de registro a AmazonCloudWatch Logs. A continuación se muestra un fragmento de definición de tarea donde se configura el controlador de registros awslogs
:
"logConfiguration": {
"logDriver": "awslogs",
"options": {
"awslogs-group" : "/ecs/fargate-task-definition",
"awslogs-region": "us-east-1",
"awslogs-stream-prefix": "ecs"
}
}
Para obtener más información acerca de la utilización del controlador deawslogs
registros en una definición de tareas para que envíe registros de contenedor aCloudWatch Logs, consulteUso del controlador de registros awslogs.
Para obtener más información acerca de cómo utilizar el controlador de registros de awsfirelens
en una definición de tarea, consulte Enrutamiento de registros personalizados.
Para obtener más información acerca de cómo utilizar el controlador de registros de splunk
en una definición de tarea, consulte Ejemplo: controlador de registros splunk.
Rol de IAM de ejecución de tareas de Amazon ECS
Hay un rol de IAM de ejecución de tareas opcional que puede especificar con Fargate para permitir que las tareas de Fargate realicen llamadas a la API de Amazon ECR. Las llamadas a la API extraen imágenes de contenedor además de llamar a CloudWatch para almacenar los registros de la aplicación de contenedor. Para obtener más información, consulte Rol de IAM de ejecución de tareas de Amazon ECS.
Ejemplo de definición de tarea de Amazon Linux 2
A continuación, se muestra un ejemplo de definición de tareas que configura un servidor web utilizando el tipo de lanzamiento de Fargate con un sistema operativo Amazon Linux 2:
{ "containerDefinitions": [ { "command": [ "/bin/sh -c \"echo '<html> <head> <title>Amazon ECS Sample App</title> <style>body {margin-top: 40px; background-color: #333;} </style> </head><body> <div style=color:white;text-align:center> <h1>Amazon ECS Sample App</h1> <h2>Congratulations!</h2> <p>Your application is now running on a container in Amazon ECS.</p> </div></body></html>' > /usr/local/apache2/htdocs/index.html && httpd-foreground\"" ], "entryPoint": [ "sh", "-c" ], "essential": true, "image": "httpd:2.4", "logConfiguration": { "logDriver": "awslogs", "options": { "awslogs-group" : "/ecs/fargate-task-definition", "awslogs-region": "us-east-1", "awslogs-stream-prefix": "ecs" } }, "name": "sample-fargate-app", "portMappings": [ { "containerPort": 80, "hostPort": 80, "protocol": "tcp" } ] } ], "cpu": "256", "executionRoleArn": "arn:aws:iam::
012345678910
:role/ecsTaskExecutionRole", "family": "fargate-task-definition", "runtimePlatform": { "operatingSystemFamily": "LINUX" }, "memory": "512", "networkMode": "awsvpc", "requiresCompatibilities": [ "FARGATE" ] }
Ejemplo de definición de tareas de Windows
A continuación, se muestra un ejemplo de definición de tareas que configura un servidor web utilizando el tipo de lanzamiento de Fargate con un sistema operativo Windows 2019 Server.
{ "containerDefinitions": [ { "command": [ "New-Item -Path C:\\inetpub\\wwwroot\\index.html -Type file -Value '<html> <head> <title>Amazon ECS Sample App</title> <style>body {margin-top: 40px; background-color: #333;} </style> </head><body> <div style=color:white;text-align:center> <h1>Amazon ECS Sample App</h1> <h2>Congratulations!</h2> <p>Your application is now running on a container in Amazon ECS.</p>'; C:\\ServiceMonitor.exe w3svc" ], "entryPoint": [ "powershell", "-Command" ], "essential": true, "cpu": 2048, "memory": 4096, "image": "mcr.microsoft.com/windows/servercore/iis:windowsservercore-ltsc2019", "logConfiguration": { "logDriver": "awslogs", "options": { "awslogs-group": "/ecs/fargate-windows-task-definition", "awslogs-region": "us-east-1", "awslogs-stream-prefix": "ecs" } }, "name": "sample_windows_app", "portMappings": [ { "hostPort": 80, "containerPort": 80, "protocol": "tcp" } ] } ], "memory": "4096", "cpu": "2048", "networkMode": "awsvpc", "family": "windows-simple-iis-2019-core", "executionRoleArn": "arn:aws:iam::
012345678910
:role/ecsTaskExecutionRole", "runtimePlatform": { "operatingSystemFamily": "WINDOWS_SERVER_2019_CORE" }, "requiresCompatibilities": [ "FARGATE" ] }
Almacenamiento de tareas
Para las tareas de Amazon ECS alojadas en Fargate, se admiten los siguientes tipos de almacenamiento:
-
Volúmenes de Amazon EFS para almacenamiento persistente. Para obtener más información, consulte Volúmenes de Amazon EFS.
-
Montajes vinculados para almacenamiento efímero. Para obtener más información, consulte Montajes de enlace.
Tareas y servicios
Después de preparar las definiciones de tareas de Amazon ECS para AWS Fargate, deben tomarse algunas decisiones a la hora de crear el servicio.
Integración en red de las tareas
Las tareas de Amazon ECS para AWS Fargate requieren el modo de red awsvpc
, que proporciona a cada tarea una interfaz de red elástica. Cuando se ejecuta una tarea o se crea un servicio con este modo de red, debe especificar una o más subredes para asociar la interfaz de red y uno o más grupos de seguridad para aplicarlo a la interfaz de red.
Si va a usar subredes públicas, decida si desea proporcionar una dirección IP pública para la interfaz de red. Para que las tareas de Fargate de una subred pública extraigan imágenes de contenedor, es necesario asignar una dirección IP pública a la interfaz de red elástica de la tarea con una ruta a Internet o una gateway NAT que pueda dirigir las solicitudes a Internet. Para que las tareas de Fargate de una subred privada extraigan imágenes de contenedor, debe haber una gateway NAT en la subred para dirigir las solicitudes a Internet. Cuando aloja las imágenes de contenedor en Amazon ECR, puede configurar Amazon ECR para que utilice un punto de enlace de la VPC de interfaz. En este caso, la dirección IPv4 privada de la tarea se utiliza para extraer la imagen. Para obtener más información acerca de los puntos de enlace de la interfaz de Amazon ECR, consulte Puntos de enlace de la VPC de interfaz de Amazon ECR (AWS PrivateLink) en la Guía del usuario de Amazon Elastic Container Registry.
A continuación, se muestra un ejemplo de la sección networkConfiguration para un servicio de Fargate:
"networkConfiguration": {
"awsvpcConfiguration": {
"assignPublicIp": "ENABLED",
"securityGroups": [ "sg-12345678
" ],
"subnets": [ "subnet-12345678
" ]
}
}
Equilibrio de carga de los servicios
El servicio Amazon ECS en AWS Fargate se puede configurar opcionalmente para que utilice Elastic Load Balancing a fin de distribuir el tráfico de manera uniforme entre las tareas del servicio.
Los servicios Amazon ECS alojados en AWS Fargate admiten tipos de balanceador de carga Application Load Balancer y Network Load Balancer. Los Application Load Balancers se utilizan para dirigir el tráfico HTTP/HTTPS (o de capa 7). Los Network Load Balancers se utilizan para dirigir el tráfico TCP o UDP (o de capa 4). Para obtener más información, consulte Tipos de balanceadores de carga.
Al crear un grupo de destino para estos servicios, se debe elegir ip
como tipo de destino, no instance
. Esto se debe a que las tareas que utilizan el modo de red awsvpc
están asociadas a una interfaz de red elástica, no a una instancia de Amazon EC2. Para obtener más información, consulte Equilibrio de carga de los servicios.
El uso de un equilibrador de carga de red para direccionar el tráfico UDP a las tareas de Amazon ECS en AWS Fargate solo es compatible cuando se utiliza la versión 1.4 o posterior de la plataforma.
Autenticación de registros privados
Las tareas de Amazon ECS para AWS Fargate pueden autenticarse en registros de imágenes privados, incluido Docker Hub, mediante autenticación básica. Cuando se habilita la autenticación de registros privados, puede utilizar las imágenes de Docker privadas en sus definiciones de tareas.
Para utilizar la autenticación de registros privados, debe crear un secreto con AWS Secrets Manager que contenga las credenciales del registro privado. A continuación, en la definición de contenedor, deberá especificar repositoryCredentials
con el ARN completo del secreto que ha creado. El siguiente fragmento de definición de tarea muestra los parámetros necesarios:
"containerDefinitions": [
{
"image": "private-repo/private-image
",
"repositoryCredentials": {
"credentialsParameter: "arn:aws:secretsmanager:region
:aws_account_id
:secret:secret_name
"
}
}
]
Para obtener más información, consulte Autenticación de registros privados para tareas.
Clústeres
Los clústeres pueden contener tareas que utilicen los tipos de lanzamiento de Fargate y EC2. Al visualizar los clústeres en la AWS Management Console, los recuentos de tareas de Fargate y EC2 se muestran por separado.
Para obtener más información acerca de los clústeres de Amazon ECS, incluso una explicación para crear un clúster, consulte Clústeres de Amazon ECS.
Fargate Spot
Los proveedores de capacidad de Amazon ECS le permiten utilizar la capacidad de AWS Fargate y de Fargate Spot para las tareas de Amazon ECS.
Contenedores de Windows en AWS Fargate no puede utilizar el proveedor de capacidad de Fargate Spot.
Con Fargate Spot, puede ejecutar tareas de Amazon ECS tolerantes a interrupciones con un descuento respecto al precio de AWS Fargate. Fargate Spot ejecuta las tareas en la capacidad de cómputo adicional. Cuando AWS necesita recuperar esa capacidad, las tareas se interrumpen previa advertencia con dos minutos de antelación. Para obtener más información, consulte Proveedores de capacidad de AWS Fargate.
Métricas de uso
PuedeCloudWatch utilizar las métricas de su cuenta. Utilice estas métricas para visualizar el uso actual del servicio en paneles y gráficos de CloudWatch.
Las métricas de uso de AWS Fargate se corresponden con las cuotas de servicio de AWS. Puede configurar alarmas que le avisen cuando su uso se acerque a una cuota de servicio. Para obtener más información acerca de las cuotas de servicio de AWS Fargate, consulteCuotas de servicio de AWS Fargate.
Para obtener más información acerca de las métricas de uso de AWS Fargate, consulte Métricas de uso de AWS Fargate en la Guía del usuario de Amazon Elastic Container Service para AWS Fargate.
Mantenimiento de tareas
Cuando AWS determina que se necesita una actualización de seguridad o de infraestructura para una tarea de Amazon ECS alojada en AWS Fargate, se deben detener las tareas y lanzar nuevas tareas para sustituirlas. Para obtener más información, consulte Mantenimiento de tareas en la Guía del usuario de Amazon Elastic Container Service para AWS Fargate.
En la tabla siguiente, se describen estos escenarios.
Tipo de tarea | Problema | Acción |
---|---|---|
Tarea independiente |
Problema del host |
Se envía un aviso de retiro de tareas a través de AWS Health Dashboard |
Vulnerabilidad de la seguridad |
Se envía un aviso de retiro de tareas a través de AWS Health Dashboard |
|
Tarea de servicio |
Problema del host |
AWS detuvo la tarea y el programador de servicios lanzará una nueva tarea en un intento por mantener el recuento deseado del servicio. No se envía ninguna notificación. |
Vulnerabilidad de la seguridad |
Se envía un aviso de retiro de tareas a través de AWS Health Dashboard |
Savings Plans
Los Savings Plans son un modelo flexible de precios que ofrece un ahorro importante en el uso de AWS. Usted se compromete a una cantidad de uso constante, en USD por hora, durante un período de uno o tres años, y recibe un precio inferior por ese uso. Para obtener más información, consulte la Guía del usuario de Savings Plans.
Para crear un Savings Plan para la utilización de AWS Fargate, utilice el tipo Compute Savings Plans. Para comenzar, consulte Introducción a Savings Plans en la Guía del usuario de Savings Plans.
Contenedores de Windows en las consideraciones sobre Fargate de AWS Fargate
Los contenedores de Windows en Fargate de AWS son compatibles con los siguientes sistemas operativos:
-
Windows Server 2019 Full
-
Windows Server 2019 Core
-
Windows Server 2022 Full
-
Windows Server 2022 Core
AWS gestiona la administración de licencias del sistema operativo, por lo que no necesita ninguna licencia de Microsoft Windows Server adicional.
Los contenedores de Windows en Fargate de AWS son compatibles con el controlador awslogs. Para obtener más información, consulte Uso del controlador de registros awslogs.
Sus tareas pueden ejecutar contenedores Linux o contenedores Windows. En caso de que se ejecuten ambos tipos de contenedores, debe crear tareas independientes.
Las siguientes características no son compatibles en los contenedores de Windows en Fargate:
-
Cuentas de servicio administradas por grupos (gMSA)
-
Amazon FSx
-
Enlace troncal de ENI
-
Integración de proxy y servicio App Mesh para tareas
-
Integración de enrutador de registro Firelens para tareas
-
Volúmenes de EFS
-
Los siguientes parámetros de definición de tareas:
-
maxSwap
-
swappiness
-
-
El proveedor de capacidad de Fargate Spot
-
Volúmenes de imágenes
La opción Dockerfile
volume
se omite. En cambio, use un montaje de enlace en la definición de tarea. Para obtener más información, consulte Montajes de enlace.