Parámetros de definición de tarea
Las definiciones de tareas se dividen en partes independientes: la familia de tareas, el rol de tarea de IAM, el modo de red, las definiciones de contenedor, los volúmenes, las restricciones de ubicación de tareas y los tipos de lanzamiento. La familia y las definiciones de contenedor son obligatorias en una definición de tarea, mientras que el rol de tarea, el modo de red, los volúmenes, las restricciones de ubicación de tareas y el tipo de lanzamiento son opcionales.
Puede utilizar estos parámetros en un archivo JSON para configurar la definición de tarea. Para obtener más información, consulte Ejemplos de definiciones de tarea .
A continuación, se muestran las descripciones de cada uno de los parámetros de definición de tareas.
Familia
family
-
Tipo: String
Obligatorio: sí
Cuando se registra una definición de tarea, se le da una familia, que es similar a un nombre para varias versiones de la definición de tarea, especificado con un número de revisión. A la primera definición de tarea que se registra en una familia particular se le da una revisión de 1 y a cualquier definición de tarea registrada después se le da un número de revisión secuencial.
Tipos de lanzamiento
Cuando se registre una definición de tareas, puede especificar un tipo de lanzamiento con respecto al cual Amazon ECS debe validar la definición de tareas. Si la definición de tareas no se valida con respecto a las compatibilidades especificadas, se devuelve una excepción de cliente. Para obtener más información, consulte Tipos de lanzamiento de Amazon ECS .
El siguiente parámetro está permitido en una definición de tarea:
requiresCompatibilities
-
Tipo: matriz de cadenas
Requerido: no
Valores válidos:
EC2
|FARGATE
|EXTERNAL
Los tipos de lanzamiento con respecto a los cuales se validó la definición de tareas. Esto permite una comprobación para garantizar que todos los parámetros usados en la definición de tareas cumplen los requisitos del tipo de lanzamiento.
Rol de la tarea
taskRoleArn
-
Tipo: cadena
Requerido: no
Cuando se registra una definición de tareas, se puede proporcionar un rol de tarea para un rol de IAM que permita a los contenedores del permiso de tareas llamar en su nombre a las API de AWS especificadas en sus políticas asociadas. Para obtener más información, consulte Roles de IAM para las tareas .
Los roles de IAM para las tareas de Windows requieren que se haya establecido la opción
-EnableTaskIAMRole
al lanzar la AMI de Windows Server optimizada para Amazon ECS. Los contenedores deben ejecutar también código de configuración para aprovechar la característica. Para obtener más información, consulte Configuración adicional para los roles de IAM para las tareas de Windows .
Rol de ejecución de tareas
executionRoleArn
-
Tipo: cadena
Requerido: no
El nombre de recurso de Amazon (ARN) del rol de ejecución de tarea que concede permiso al agente de contenedor de Amazon ECS para realizar llamadas a la API de AWS en su nombre. El rol de IAM de ejecución de tareas es necesario en función de los requisitos de la tarea. Para obtener más información, consulte Rol de IAM de ejecución de tareas de Amazon ECS .
Modo de red
networkMode
-
Tipo: cadena
Requerido: no
El modo de red de Docker que utilizar para los contenedores en la tarea. Para las tareas de Amazon ECS alojadas en instancias de Linux de Amazon EC2, los valores válidos son
none
,bridge
,awsvpc
yhost
. Si no se especifica ningún modo de red, el modo de red predeterminado esbridge
. Para las tareas de Amazon ECS alojadas en instancias de Windows de Amazon EC2, los valores válidos sondefault
yawsvpc
. Si no se especifica ningún modo de red, se utiliza el mododefault
.Si el modo de red se establece en
none
, no puede especificar el mapeo de puertos en la definición del contenedor y los contenedores de tarea no tienen conectividad externa.Si el modo de red es
bridge
, la tarea de Docker utiliza la red virtual integrada que se ejecuta dentro de cada instancia de contenedor.Si el modo de red es
host
, la tarea omite la red virtual integrada de Docker y los puertos del contenedor se mapean directamente a la interfaz de red de la instancia de Amazon EC2. En este modo, no puede ejecutar varias instancias de la misma tarea en una instancia de contenedor única cuando se utiliza el mapeo de puertos.importante Cuando utilice el modo de red
host
, no debe ejecutar contenedores con el usuario raíz (UID 0). Se considera una práctica recomendada utilizar un usuario que no sea root.Si el modo de red es
awsvpc
, a la tarea se le asigna una interfaz de red elástica y debe especificarNetworkConfiguration
al crear un servicio o ejecutar una tarea con la definición de tarea. Para obtener más información, consulte Integración en red de las tareas de Amazon ECS . En la actualidad, solo las AMI optimizadas para Amazon ECS, otras variantes de Amazon Linux con el paqueteecs-init
o la infraestructura Fargate de AWS admiten el modo de redawsvpc
.Los modos de red
host
yawsvpc
ofrecen el rendimiento de redes más alto para contenedores dado que utilizan la pila de redes de Amazon EC2 en lugar de la pila de redes virtualizada que proporciona el modobridge
. Con los modos de redhost
yawsvpc
, los puertos de contenedor expuestos se asignan directamente al puerto de host correspondiente (para el modo de redhost
) o al puerto de interfaz de red elástica asociado (para el modo de redawsvpc
), por tanto no puede aprovechar los mapeos de puerto de host dinámico.Si se usa el tipo de lanzamiento Fargate, es necesario el modo de red
awsvpc
. Si se usa el tipo de lanzamiento EC2, el modo de red permitido depende del sistema operativo de la instancia EC2 subyacente. Si es Linux, se puede usar cualquier modo de red. Si es Windows, se pueden usar los modosdefault
yawsvpc
.
Plataforma de tiempo de ejecución
Para los tipos de lanzamiento de Fargate, se requiere el siguiente parámetro.
operatingSystemFamily
-
Tipo: String
Required: Conditional
Predeterminado: LINUX
Este parámetro es necesario para las tareas de Amazon ECS alojadas en Fargate.
Cuando se registra una definición de tarea, especifica la familia de sistemas operativos.
Los valores válidos para las tareas de Amazon ECS alojadas en Fargate son
LINUX
,WINDOWS_SERVER_2019_FULL
yWINDOWS_SERVER_2019_CORE
.Los valores válidos para las tareas de Amazon ECS alojadas en EC2 son
LINUX
,WINDOWS_SERVER_2022_CORE
,WINDOWS_SERVER_2022_FULL
,WINDOWS_SERVER_2019_FULL
yWINDOWS_SERVER_2019_CORE
,WINDOWS_SERVER_2016_FULL
,WINDOWS_SERVER_2004_CORE
yWINDOWS_SERVER_20H2_CORE
.Todas las definiciones de tareas que se utilizan en un servicio deben tener el mismo valor para este parámetro.
Cuando una definición de tarea forma parte de un servicio, este valor debe coincidir con el valor
platformFamily
de servicio. cpuArchitecture
-
Tipo: String
Required: Conditional
Predeterminado: X86_64
Este parámetro es necesario para las tareas de Amazon ECS alojadas en Fargate.
Cuando se registra una definición de tarea, especifica la arquitectura de CPU. Los valores válidos son
X86_64
yARM64
.Todas las definiciones de tareas que se utilizan en un servicio deben tener el mismo valor para este parámetro.
Cuando tiene tareas Linux para el tipo de lanzamiento de Fargate o el tipo de lanzamiento de EC2, puede establecer el valor en
ARM64
. Para obtener más información, consulte Uso de cargas de trabajo de ARM de 64 bits en Amazon ECS .
Tamaño de tarea
Cuando se registra una definición de tarea, puede especificar la cantidad total de CPU y memoria usada para la tarea. Es distinto de los valores cpu
y memory
en el nivel de definición de contenedor. Para las tareas alojadas en instancias de Amazon EC2, estos campos son opcionales. Para las tareas alojadas en Fargate (tanto en Linux como en Windows), estos campos son obligatorios y se admiten valores específicos para cpu
y memory
.
Los parámetros de CPU y memoria de nivel de tarea se omiten para los contenedores de Windows. Le recomendamos que especifique recursos de nivel de contenedor para los contenedores de Windows.
El siguiente parámetro está permitido en una definición de tarea:
cpu
-
Tipo: cadena
Obligatorio: condicional
nota Este parámetro no es compatible con contenedores Windows.
El límite máximo de unidades de CPU que presentar para la tarea. Puede expresarse como un número entero que especifique las unidades de CPU (por ejemplo
1024
) o como una cadena que especifique las CPU virtuales (por ejemplo1 vCPU
o1 vcpu
), en una definición de tarea. Cuando se registra la definición de tarea, el valor de una CPU virtual se convierte en un entero que indica las unidades de CPU.Para las tareas alojadas en instancias de Amazon EC2, este campo es opcional. Si el clúster no tiene registradas instancias de contenedor con las unidades de CPU solicitadas disponibles, la tarea no funcionará. Los valores admitidos están entre
128
unidades de CPU (0.125
vCPU) y10240
unidades de CPU (10
vCPU).Para las tareas alojadas en Fargate (tanto contenedores de Linux como de Windows), este campo es obligatorio y debe utilizar uno de los siguientes valores, lo que determina el intervalo de valores válidos para el parámetro
memory
:Valor de CPU Valor de memoria Sistemas operativos compatibles con Fargate 256 (0,25 vCPU) 512 MB, 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
memory
-
Tipo: String
Obligatorio: condicional
nota Este parámetro no es compatible con contenedores Windows.
El límite máximo de memoria (en MiB) que presentar a la tarea. Puede expresarse como un número entero que especifique MiB (por ejemplo
1024
) o como una cadena que especifique GB (por ejemplo1GB
o1 GB
), en una definición de tarea. Cuando se registra la definición de tarea, el valor de GB se convierte en un entero que indica el número de MiB.Para las tareas alojadas en instancias de Amazon EC2, este campo es opcional y se puede usar cualquier valor. Si se especifica un valor de memoria de nivel de tarea, el valor de memoria de nivel de contenedor es opcional. Si el clúster no tiene registrada ninguna instancia de contenedor con la memoria solicitada disponible, la tarea no funcionará. Si está intentando maximizar la utilización de los recursos proporcionando a las tareas la mayor cantidad de memoria posible para un tipo de instancia determinado, consulte Administración de la memoria de los de las instancias de contenedor.
Para las tareas alojadas en Fargate (tanto contenedores de Linux como de Windows), este campo es obligatorio y debe utilizar uno de los siguientes valores, lo que determina el intervalo de valores válidos para el parámetro
cpu
:Valor de memoria (MiB)
Valor de CPU
Sistemas operativos compatibles con Fargate 512 (0,5 GB), 1024 (1 GB), 2048 (2 GB)
256 (0,25 vCPU)
Linux 1024 (1 GB), 2048 (2 GB), 3072 (3 GB), 4096 (4 GB)
512 (0,5 vCPU)
Linux 2048 (2 GB), 3072 (3 GB), 4096 (4GB), 5120 (5 GB), 6144 (6 GB), 7168 (7 GB), 8192 (8 GB)
1024 (1 vCPU)
Linux, Windows Entre 4096 (4 GB) y 16384 (16 GB) en incrementos de 1024 (1 GB)
2048 (2 vCPU)
Linux, Windows Entre 8192 (8 GB) y 30720 (30 GB) en incrementos de 1024 (1 GB)
4096 (4 vCPU)
Linux, Windows
Definiciones de contenedores
Al registrar una definición de tarea, debe especificar una lista de definiciones de contenedor que se transfieren al daemon de Docker en una instancia de contenedor. Los siguientes parámetros están permitidos en una definición de contenedor.
Temas
Parámetros de definición de contenedor estándar
Los siguientes parámetros de definición de tarea son obligatorios o utilizados en la mayoría de definiciones de contenedor.
Nombre
name
-
Tipo: String
Obligatorio: sí
El nombre de un contenedor. Se admiten hasta 255 letras (mayúsculas y minúsculas), números, guiones y caracteres de subrayado. Si está vinculando varios contenedores conjuntamente en una definición de tarea, el
name
de un contenedor se puede introducir en loslinks
de otro contenedor para conectar los contenedores.
Imagen
image
-
Tipo: String
Obligatorio: sí
La imagen que se utiliza para iniciar un contenedor. Esta cadena se transfiere directamente al daemon de Docker. Las imágenes del registro de Docker Hub están disponibles de forma predeterminada. También puede especificar otros repositorios con
orepository-url
/image
:tag
. Se permiten hasta 255 letras (mayúsculas y minúsculas), números, guiones, caracteres de subrayado, comas, puntos, barras diagonales y signos numéricos. Este parámetro se asigna arepository-url
/image
@digest
Image
en la sección Create a container(Crear un contenedor) de la API remota de Docker y el parámetro IMAGE
de docker run. -
Cuando se inicia una tarea nueva, el agente de contenedor de Amazon ECS extrae la última versión de la imagen y la etiqueta especificadas para que las utilice el contenedor. Sin embargo, las actualizaciones realizadas posteriormente en un repositorio de imágenes no se propagan a la tareas en ejecución.
-
Se admiten las imágenes de registros privados. Para obtener más información, consulte Autenticación de registros privados para tareas .
-
Para especificar imágenes de los repositorios de Amazon ECR, se puede utilizar la convención de nomenclatura completa
registry/repository:tag
oregistry/repository@digest
. Por ejemplo,aws_account_id
.dkr.ecr.region
.amazonaws.com/
omy-web-app
:latest
aws_account_id
.dkr.ecr.region
.amazonaws.com/
my-web-app
@sha256:94afd1f2e64d908bc90dbca0035a5b567EXAMPLE
-
Las imágenes de los repositorios oficiales de Docker Hub utilizan un solo nombre (por ejemplo,
ubuntu
omongo
). -
Las imágenes de otros repositorios de Docker Hub se identifican con un nombre de organización (por ejemplo,
amazon/amazon-ecs-agent
). -
Las imágenes de otros repositorios online se cualifican más con un nombre de dominio (por ejemplo,
quay.io/assemblyline/ubuntu
).
-
Memoria
memory
-
Tipo: número entero
Obligatorio: condicional
La cantidad (en MiB) de memoria que se presenta al contenedor. Si su contenedor intenta superar la memoria especificada aquí, se cancela el contenedor. La cantidad total de memoria reservada para todos los contenedores dentro de una tarea debe ser menor que el valor
memory
de la tarea, si se especifica. Este parámetro se asigna aMemory
en la sección Crear un contenedorde la API remota de Docker y con la opción --memory
de docker run. Si se utiliza el tipo de lanzamiento Fargate, este parámetro es opcional.
Si se utiliza el tipo de lanzamiento EC2, debe especificar un valor de memoria de nivel de tarea o un valor de memoria de nivel de contenedor. Si especifica un valor de
memory
y un valor dememoryReservation
en el nivel de contenedor,memory
debe ser mayor quememoryReservation
. Si especificamemoryReservation
, entonces el valor se resta de los recursos de memoria disponibles para la instancia de contenedor en la que se coloca el contenedor. De lo contrario, se utiliza el valor dememory
.El daemon de Docker 20.10.0 o posterior reserva un mínimo de 6 MiB de memoria para un contenedor, por tanto no debería especificar menos de 6 MiB de memoria para sus contenedores.
El daemon de Docker 19.03.13-ce o anterior reserva un mínimo de 4 MiB de memoria para un contenedor, por tanto no debería especificar menos de 4 MiB de memoria para sus contenedores.
nota Si está intentando maximizar la utilización de los recursos proporcionando a las tareas la mayor cantidad de memoria posible para un tipo de instancia determinado, consulte Administración de la memoria de los de las instancias de contenedor.
memoryReservation
-
Tipo: número entero
Requerido: no
El límite flexible (en MiB) de memoria que reservar para el contenedor. Cuando la memoria del sistema está bajo contención, Docker intenta mantener la memoria del contenedor en este límite flexible; no obstante, el contenedor puede consumir más memoria cuando lo necesita, bien hasta el límite invariable especificado con el parámetro
memory
(si procede) o toda la memoria disponible en la instancia de contenedor, lo que ocurra primero. Este parámetro se asigna aMemoryReservation
en la sección Crear un contenedorde la API remota de Docker y con la opción --memory-reservation
de docker run. Si no se especifica un valor de memoria de nivel de tarea, debe especificar un entero distinto de cero para
memory
omemoryReservation
o para ambos en una definición de contenedor. Si especifica ambos,memory
debe ser mayor quememoryReservation
. Si especificamemoryReservation
, entonces el valor se resta de los recursos de memoria disponibles para la instancia de contenedor en la que se coloca el contenedor. De lo contrario, se utiliza el valor dememory
.Por ejemplo, si el contenedor utiliza normalmente 128 MiB de memoria, pero con ráfagas ocasionales de hasta 256 MiB durante períodos de tiempo breves, puede establecer un
memoryReservation
de 128 MiB y un límite máximo dememory
de 300 MiB. Esta configuración permitiría al contenedor reservar solo 128 MiB de memoria de los recursos restantes en la instancia de contenedor, pero también permitiría al contenedor consumir más recursos de memoria en caso necesario.nota Este parámetro no es compatible con contenedores Windows.
El daemon de Docker 20.10.0 o posterior reserva un mínimo de 6 MiB de memoria para un contenedor, por tanto no debería especificar menos de 6 MiB de memoria para sus contenedores.
El daemon de Docker 19.03.13-ce o anterior reserva un mínimo de 4 MiB de memoria para un contenedor, por tanto no debería especificar menos de 4 MiB de memoria para sus contenedores.
Mapeos de puertos
portMappings
-
Tipo: matriz de objetos
Requerido: no
Los mapeos de puertos permiten a los contenedores acceder a puertos en las instancias de contenedor del host para enviar o recibir tráfico.
Para las definiciones de tareas que utilizan el modo de red
awsvpc
, solo debe especificarcontainerPort
.hostPort
puede dejarse en blanco o debe ser el mismo valor quecontainerPort
.Las asignaciones de puertos en Windows utilizan la dirección de puerto de enlace
NetNAT
en lugar delocalhost
. No hay bucle invertido para mapeo de puertos en Windows, por tanto no puede acceder a un puerto mapeado del contenedor desde el propio host.Este parámetro se asigna a
PortBindings
en la sección Crear un contenedorde la API remota de Docker y con la opción --publish
de docker run. Si el modo de red de una definición de tarea se establece en host
, entonces los puertos de host deben estar sin definir o deben corresponder al puerto de contenedor en el mapeo de puerto.nota Después de que una tarea alcanza el estado
RUNNING
, las asignaciones manuales y automáticas de puertos de contenedor y de host se pueden ver en las siguientes ubicaciones:-
Consola: la sección Network Bindings (Conexiones de red) de la descripción de un contenedor para una tarea seleccionada.
-
AWS CLI: la sección
networkBindings
de la salida del comando describe-tasks. -
API: la respuesta de
DescribeTasks
.
containerPort
-
Tipo: número entero
Obligatorio: sí, si se utilizan
portMappings
.El número de puerto en el contenedor que está vinculado al puerto de host especificado por el usuario o asignado automáticamente.
En el caso de que se utilicen los contenedores en una tarea con el tipo de lanzamiento Fargate, los puertos expuestos deben especificarse mediante
containerPort
.Para los contenedores Windows en Fargate, no se puede utilizar el puerto 3150 para el
containerPort
, porque está reservado.En el caso de que se utilicen los contenedores en una tarea con el tipo de lanzamiento EC2 y de que se especifique un puerto de contenedor y no un puerto host, el contenedor recibe automáticamente un puerto host en el intervalo de puertos efímeros. Para obtener más información, consulte
hostPort
. Los mapeos de puerto que se asignan automáticamente de esta manera no se contabilizan en el límite de 100 puertos reservados de una instancia de contenedor. hostPort
-
Tipo: número entero
Requerido: no
El número de puerto en la instancia de contenedor que reservar para el contenedor.
En el caso de que se utilicen los contenedores en una tarea con el tipo de lanzamiento Fargate,
hostPort
puede dejarse en blanco o tener el mismo valor quecontainerPort
.En el caso de que se utilicen los contenedores en una tarea con el tipo de lanzamiento EC2, se puede especificar un puerto host no reservado para la asignación de puerto de contenedor (esto se denomina asignación de puerto de host estático) o se puede omitir el
hostPort
(o establecerlo en0
) al especificar uncontainerPort
, y el contenedor recibirá automáticamente un puerto (esto se denomina asignación de puerto host dinámico) en el intervalo de puertos efímeros del sistema operativo de la instancia de contenedor y la versión de Docker.La versión 1.6.0 de Docker y posteriores para el rango de puertos efímeros predeterminado se puede ver en la instancia en
/proc/sys/net/ipv4/ip_local_port_range
. Si este parámetro de kernel no está disponible, se usa el intervalo de puertos efímeros predeterminado, de49153–65535
. No intente especificar un puerto de host en el rango de puertos efímeros, ya que estos están reservados para asignación automática. En general, los puertos por debajo de32768
están fuera del rango de puertos efímeros.Los puertos reservados predeterminados son el
22
para SSH; los puertos de Docker son el2375
y el2376
; y los puertos de agente de contenedor de Amazon ECS son51678-51680
. Cualquier puerto de host especificado por el usuario con anterioridad para una tarea en ejecución también se reserva mientras la tarea está en ejecución (después de detener una tarea, se libera el puerto del host). Los puertos reservados actuales se muestran en la saldaremainingResources
de describe-container-instances y una instancia de contenedor podría tener hasta 100 puertos reservados a la vez, incluidos los puertos reservados predeterminados. Los puertos asignados automáticamente no se contabilizan en el límite de 100 puertos reservados. protocol
-
Tipo: cadena
Requerido: no
El protocolo utilizado para el mapeo de puertos. Los valores válidos son
tcp
yudp
. El valor predeterminado estcp
.importante UDP solo se admite en las instancias de contenedor que se lanzaron con la versión 1.2.0 del agente de contenedor de Amazon ECS (como, por ejemplo, la AMI
amzn-ami-2015.03.c-amazon-ecs-optimized
) o una posterior, o con los agentes de contenedor que se han actualizado a la versión 1.3.0 o una posterior. Para actualizar el agente de contenedor a la versión más reciente, consulte Actualización del agente de contenedor de Amazon ECS.
Use la siguiente sintaxis para especificar un puerto de host:
"portMappings": [ { "containerPort": integer, "hostPort": integer } ... ]
Use la siguiente sintaxis si desea asignar automáticamente un puerto de host:
"portMappings": [ { "containerPort": integer } ... ]
-
Parámetros de definición de contenedor avanzados
Los siguientes parámetros avanzados de definición de contenedor ofrecen capacidades ampliadas para el comando docker run
Temas
Comprobación de estado
healthCheck
-
El parámetro de comprobación de estado del contenedor y los parámetros de configuración asociados para el contenedor. Este parámetro se corresponde con
HealthCheck
en la sección Crear un contenedorde la API remota de Docker y el parámetro HEALTHCHECK
se corresponde con docker run. nota El agente de contenedor de Amazon ECS solo monitorea e informa sobre las comprobaciones de estado especificadas en la definición de la tareas. Amazon ECS no monitorea las comprobaciones de estado de Docker integradas en una imagen de contenedor y no especificadas en la definición de contenedor. Los parámetros de comprobación de estado especificados en la definición de un contenedor prevalecen sobre las comprobaciones de estado de Docker que existan en la imagen del contenedor.
Puede ver el estado de mantenimiento de los contenedores individuales y de una tarea con la operación de la API DescribeTasks o al ver los detalles de la tarea en la consola.
A continuación se describen los valores de
healthStatus
posibles para un contenedor:-
HEALTHY
: la comprobación de estado del contenedor se ha superado correctamente. -
UNHEALTHY
: error al realizar la comprobación de estado del contenedor. -
UNKNOWN
: se está evaluando la comprobación del estado del contenedor o no se ha definido ninguna comprobación de estado del contenedor.
A continuación se describen los posibles valores
healthStatus
de una tarea. El estado de comprobación del estado del contenedor de los contenedores no esenciales no afecta al estado de mantenimiento de una tarea.-
HEALTHY
: todos los contenedores esenciales de la tarea han superado sus comprobaciones de estado. -
UNHEALTHY
: error al realizar la comprobación de estado de uno o más contenedores. -
UNKNOWN
: todavía se están evaluando las comprobaciones de estado de los contenedores esenciales de la tarea o no se han definido comprobaciones de estado del contenedor.
Si una tarea se ejecuta manualmente y no como parte de un servicio, la tarea continuará su ciclo de vida independientemente de su estado de mantenimiento. En el caso de las tareas que forman parte de un servicio, si la tarea informa que no está en buen estado, la tarea se detendrá y el programador de servicios la reemplazará.
A continuación, se muestran algunas notas sobre la compatibilidad con las comprobaciones de estado de los contenedores:
-
Las comprobaciones de estado del contenedor requieren la versión 1.17.0 o posterior del agente de contenedor de Amazon ECS. Para obtener más información, consulte Actualización del agente de contenedor de Amazon ECS .
-
Se admiten comprobaciones de estado de contenedor para tareas de Fargate si se utiliza la versión 1.1.0 de la plataforma o una posterior. Para obtener más información, consulte Versiones de la plataforma AWS Fargate .
-
Las comprobaciones de estado de contenedor no se pueden realizar en tareas que forman parte de un servicio configurado para usar un Classic Load Balancer.
command
-
Una matriz de cadenas que representa el comando que ejecuta el contenedor para determinar si está en buen estado. La matriz de cadenas puede comenzar por
CMD
para ejecutar los argumentos del comando directamente, o porCMD-SHELL
para ejecutar el comando con el shell predeterminado del contenedor. Si no se especifica ninguno, se utilizaráCMD
de forma predeterminada.Al registrar una definición de tarea en la AWS Management Console, utilice una lista de comandos separados por comas, que se convertirá automáticamente en una cadena una vez que se cree la definición de tarea. Un ejemplo de entrada para una comprobación de estado podría ser:
CMD-SHELL, curl -f http://localhost/ || exit 1
Cuando registre una definición de tarea mediante el panel JSON de la AWS Management Console, la AWS CLI o las API, debe incluir la lista de comandos entre corchetes. Un ejemplo de entrada para una comprobación de estado podría ser:
[ "CMD-SHELL", "curl -f http://localhost/ || exit 1" ]
Un código de salida de 0, sin salida
stderr
, indica una ejecución correcta y cualquier código de salida distinto de cero indica un error. Para obtener más información, consulteHealthCheck
en la sección Crear un contenedorde la API remota de Docker . interval
-
El periodo de tiempo en segundos entre cada ejecución de comprobación de estado. Es posible especificar entre 5 y 300 segundos. El valor de predeterminado es de 30 segundos.
timeout
-
El periodo de tiempo en segundos que hay que esperar para que una comprobación de estado se realice correctamente antes de que se considere un error. Es posible especificar entre 2 y 60 segundos. El valor de predeterminado es de 5 segundos.
retries
-
Es el número de veces que se reintenta una comprobación de estado fallida antes de que se considere que el contenedor está en mal estado. Es posible especificar entre 1 y 10 reintentos. El valor predeterminado es tres reintentos.
startPeriod
-
El periodo de gracia opcional dentro del que se puede facilitar a los contenedores tiempo para el arranque antes de que una comprobación de estado fallida se cuente para el número máximo de reintentos. Es posible especificar entre 0 y 300 segundos. El
startPeriod
está deshabilitado de forma predeterminada.
-
Entorno
cpu
-
Tipo: número entero
Obligatorio: condicional
El número de unidades de
cpu
que el agente de contenedor de Amazon ECS reservará para el contenedor. Este parámetro se asigna aCpuShares
en la sección Crear un contenedorde la API remota de Docker y con la opción --cpu-shares
de docker run. Este campo es opcional para las tareas que utilizan el tipo de lanzamiento de Fargate. La cantidad total de CPU reservada para todos los contenedores dentro de una tarea debe ser menor que el valor
cpu
de la tarea.nota Para determinar el número de unidades de CPU disponibles por tipo de instancia de Amazon EC2, se puede multiplicar el número de vCPU que se indica para dicho tipo de instancias en la página de detalles de instancias de Amazon EC2
por 1024. Los contenedores de Linux comparten unidades de CPU no asignadas con otros contenedores en la instancia de contenedor en la misma proporción que la cantidad asignada. Por ejemplo, si ejecuta una tarea de contenedor único en un tipo de instancia de un solo núcleo con 512 unidades de CPU especificadas para dicho contenedor y esta es la única tarea que se ejecuta en la instancia de contenedor, dicho contenedor podría utilizar la cuota completa de 1 024 unidades de CPU en un momento dado. Sin embargo, si lanzó otra copia de la misma tarea en dicha instancia de contenedor, a cada tarea se le garantizarían como mínimo 512 unidades de CPU en caso necesario y cada contenedor podría tener un uso de CPU mayor si el otro contenedor no la utilizase, pero si ambas tareas estuvieran activas el 100% del tiempo, se limitarían a 512 unidades de CPU.
En las instancias de contenedor de Linux, el daemon de Docker en la instancia de contenedor utiliza el valor de CPU para calcular las proporciones de cuota de CPU relativas para los contenedores en ejecución. Para obtener más información, consulte la sección CPU share constraint
de la documentación de Docker. El valor de cuota de CPU válido mínimo que permite el kernel de Linux es 2. Sin embargo, el parámetro de CPU no es obligatorio y puede utilizar valores de CPU por debajo de 2 en sus definiciones de contenedor. Para valores de CPU por debajo de 2 (incluido el valor nulo), el comportamiento varía en función de su versión de agente de contenedor de Amazon ECS: -
Versiones del agente <= 1.1.0: los valores de CPU nulo y cero se pasan a Docker como 0, que Docker convierte a continuación a 1024 cuotas de CPU. Los valores de CPU de 1 se transfieren a Docker como 1, que el kernel de Linux convierte a 2 cuotas de CPU.
-
Versiones del agente >= 1.2.0: nulo, cero y los valores de CPU de 1 se transfieren a Docker como 2 cuotas de CPU.
En las instancias de contenedor de Windows, el límite de CPU se aplica como un límite absoluto o una cuota. Los contenedores de Windows solo tienen acceso a la cantidad de CPU especificada que se define en la definición de tareas. Un valor de CPU nulo o cero se pasa a Docker como
0
, que Windows interpreta como 1 % de una CPU.Para ver otros ejemplos, consulte Cómo administra Amazon ECS los recursos de CPU y memoria
. -
gpu
-
Tipo: objeto ResourceRequirement
Requerido: no
El número de unidades de
GPUs
físicas que el agente de contenedor de Amazon ECS reservará para el contenedor. El número de unidades GPU reservadas para todos los contenedores de una tarea no debe superar el número de GPU disponibles en la instancia de contenedor en la que se lanza la tarea. Para obtener más información, consulte Uso de GPU en Amazon ECS .nota Este parámetro no es compatible con los contenedores de Windows ni con los contenedores alojados en Fargate.
Elastic Inference accelerator
-
Tipo: objeto ResourceRequirement
Requerido: no
Para el tipo
InferenceAccelerator
, elvalue
coincide con eldeviceName
para unInferenceAccelerator
especificado en una definición de tareas. Para obtener más información, consulte Nombre del acelerador de Elastic Inference .nota Este parámetro no es compatible con los contenedores de Windows ni con los contenedores alojados en Fargate.
essential
-
Tipo: booleano
Requerido: no
Si el parámetro
essential
de un contenedor se marca comotrue
y dicho contenedor falla o se detiene por algún motivo, se detienen todos los demás contenedores que forman parte de la tarea. Si el parámetroessential
de un contenedor se marca comofalse
, entonces su error no afecta al resto de los contenedores en una tarea. Si este parámetro se omite, se supone que un contenedor es esencial.Todas las tareas deben tener al menos un contenedor esencial. Si tiene una tarea que está compuesta por varios contenedores, debe agrupar los contenedores que se utilizan para un fin común en componentes y separar los distintos componentes en diversas definiciones de tareas. Para obtener más información, consulte Arquitectura de aplicaciones .
"essential": true|false
entryPoint
-
importante Las primeras versiones del agente de contenedor de Amazon ECS no tratan correctamente los parámetros
entryPoint
. Si tiene problemas al utilizarentryPoint
, actualice el agente de contenedor o introduzca los comandos y argumentos como elementos de matriz decommand
en su lugar.Tipo: matriz de cadenas
Requerido: no
El punto de entrada que se transfiere al contenedor. Este parámetro se asigna a
Entrypoint
en la sección Crear un contenedorde la API remota de Docker y con la opción --entrypoint
de docker run. Para obtener más información sobre el parámetro ENTRYPOINT
de Docker, visite https://docs.docker.com/engine/reference/builder/#entrypoint. "entryPoint": ["string", ...]
command
-
Tipo: matriz de cadenas
Requerido: no
El comando que se transfiere al contenedor. Este parámetro se asigna a
Cmd
en la sección Create a container(Crear un contenedor) de la API remota de Docker y el parámetro COMMAND
se corresponde con docker run. Para obtener más información sobre el parámetro CMD
de Docker, visite https://docs.docker.com/engine/reference/builder/#cmd. Si hay varios argumentos, cada uno de ellos debe ser una cadena distinta en la matriz. "command": ["string", ...]
workingDirectory
-
Tipo: cadena
Requerido: no
El directorio de trabajo en el que ejecutar comandos dentro del contenedor. Este parámetro se asigna a
WorkingDir
en la sección Crear un contenedorde la API remota de Docker y con la opción --workdir
de docker run. "workingDirectory": "string"
environmentFiles
-
Tipo: matriz de objetos
Requerido: no
Una lista de archivos que contienen las variables de entorno que transferir a un contenedor. Este parámetro se mapea con la opción
--env-file
para docker run. No está disponible para contenedores de Windows.
Puede especificar hasta diez archivos de entorno. El archivo debe tener una extensión de archivo
.env
. Cada línea de un archivo de entorno debe contener una variable de entorno con el formatoVARIABLE=VALUE
. Las líneas que comienzan por#
se tratan como comentarios y se ignoran. Para obtener más información acerca de la sintaxis del archivo de variables de entorno, consulte Declarar variables de entorno predeterminadas en el archivo. Si hay variables de entorno individuales especificadas en la definición del contenedor, tienen prioridad sobre las variables que contiene un archivo de entorno. Si se especifican varios archivos de entorno que contienen la misma variable, se procesan en orden descendente. Se recomienda utilizar nombres de variable únicos. Para obtener más información, consulte Especificación de variables de entorno .
environment
-
Tipo: matriz de objetos
Requerido: no
Las variables de entorno a transferir a un contenedor. Este parámetro se asigna a
Env
en la sección Crear un contenedorde la API remota de Docker y con la opción --env
de docker run. importante No es recomendable que utilice variables del entorno en texto sin formato para información confidencial, como los datos de las credenciales.
"environment" : [ { "name" : "string", "value" : "string" }, { "name" : "string", "value" : "string" } ]
secrets
-
Tipo: matriz de objetos
Requerido: No
Un objeto que representa el secreto para exponer en su contenedor. Para obtener más información, consulte Especificación de información confidencial .
name
-
Tipo: String
Obligatorio: sí
El valor que se ha de establecer como la variable de entorno en el contenedor.
valueFrom
-
Tipo: String
Obligatorio: sí
El secreto para exponer en el contenedor. Los valores admitidos son el ARN completo del secreto de AWS Secrets Manager o el ARN completo del parámetro en el almacén de parámetros de AWS Systems Manager.
nota Si el parámetro del Parameter Store de Systems Manager existe en la misma región que la tarea que se va a lanzar, se puede utilizar el ARN completo o el nombre del secreto. Si el parámetro existe en una región distinta, el ARN completo debe especificarse.
"secrets": [ { "name": "environment_variable_name", "valueFrom": "arn:aws:ssm:
region
:aws_account_id
:parameter/parameter_name
" } ]
Network settings (Configuración de red)
disableNetworking
-
Tipo: booleano
Requerido: no
Cuando este parámetro es verdadero, la conexión en red está apagada dentro del contenedor. Este parámetro se asigna a
NetworkDisabled
en la sección Crear un contenedorde la API remota de Docker . nota Este parámetro no es compatible con los contenedores o las tareas de Windows que utilicen el modo de red
awsvpc
."disableNetworking": true|false
links
-
Tipo: matriz de cadenas
Requerido: no
El parámetro
link
permite a los contenedores comunicarse entre sí sin la necesidad de mapeos de puerto. Solo se admite si el modo de red de una definición de tarea se establece enbridge
. La construcciónname:internalName
es análoga aname:alias
en enlaces de Docker. Se admiten hasta 255 letras (mayúsculas y minúsculas), números, guiones y caracteres de subrayado. Para obtener más información sobre el enlace de contenedores de Docker, vaya a https://docs.docker.com/engine/userguide/networking/default_network/dockerlinks/. Este parámetro se asigna a Links
en la sección Crear un contenedorde la API remota de Docker y con la opción --link
de docker run. nota Este parámetro no es compatible con los contenedores o las tareas de Windows que utilicen el modo de red
awsvpc
.importante Es posible que los contenedores que se coubican en la misma instancia de contenedor puedan comunicarse entre sí sin necesidad de enlaces ni mapeos de puerto de host. El aislamiento de red en una instancia de contenedor se controla mediante los grupos de seguridad y la configuración de VPC.
"links": ["name:internalName", ...]
hostname
-
Tipo: cadena
Requerido: no
El nombre de host que utilizar para el contenedor. Este parámetro se asigna a
Hostname
en la sección Crear un contenedorde la API remota de Docker y con la opción --hostname
de docker run. nota El parámetro
hostname
no se admite si se usa el modo de redawsvpc
."hostname": "string"
dnsServers
-
Tipo: matriz de cadenas
Requerido: no
Una lista de servidores DNS que se presentan al contenedor. Este parámetro se asigna a
Dns
en la sección Crear un contenedorde la API remota de Docker y con la opción --dns
de docker run. nota Este parámetro no es compatible con los contenedores o las tareas de Windows que utilicen el modo de red
awsvpc
."dnsServers": ["string", ...]
dnsSearchDomains
-
Tipo: matriz de cadenas
Requerido: no
Patrón: ^[a-zA-Z0-9-.]{0,253}[a-zA-Z0-9]$
Una lista de dominios de búsqueda DNS que se presentan al contenedor. Este parámetro se asigna a
DnsSearch
en la sección Crear un contenedorde la API remota de Docker y con la opción --dns-search
de docker run. nota Este parámetro no es compatible con los contenedores o las tareas de Windows que utilicen el modo de red
awsvpc
."dnsSearchDomains": ["string", ...]
extraHosts
-
Tipo: matriz de objetos
Requerido: no
Una lista de nombres de host y mapeos de direcciones IP que añadir al archivo
/etc/hosts
en el contenedor.Este parámetro se asigna a
ExtraHosts
en la sección Crear un contenedorde la API remota de Docker y con la opción --add-host
de docker run. nota Este parámetro no es compatible con los contenedores o las tareas de Windows que utilicen el modo de red
awsvpc
."extraHosts": [ { "hostname": "string", "ipAddress": "string" } ... ]
Almacenamiento y registro
readonlyRootFilesystem
-
Tipo: booleano
Requerido: no
Cuando este parámetro es verdadero, al contenedor se le concede acceso de solo lectura a su sistema de archivos raíz. Este parámetro se asigna a
ReadonlyRootfs
en la sección Crear un contenedorde la API remota de Docker y con la opción --read-only
de docker run. nota Este parámetro no es compatible con contenedores Windows.
"readonlyRootFilesystem": true|false
mountPoints
-
Tipo: matriz de objetos
Requerido: No
Los puntos de montaje para los volúmenes de datos del contenedor.
Este parámetro se asigna a
Volumes
en la sección Crear un contenedorde la API remota de Docker y con la opción --volume
de docker run. Los contenedores de Windows pueden montar directorios completos en la misma unidad que
$env:ProgramData
. Los contenedores de Windows no pueden montar directorios en una unidad diferente y el punto de montaje no puede ser entre unidades.sourceVolume
-
Tipo: String
Obligatorio: sí, si se utilizan
mountPoints
.El nombre del volumen a montar.
containerPath
-
Tipo: String
Obligatorio: sí, si se utilizan
mountPoints
.La ruta en el contenedor en la que montar el volumen de
readOnly
-
Tipo: booleano
Requerido: No
Si este valor es
true
, el acceso del contenedor al volumen es de solo lectura. Si este valor esfalse
, el contenedor puede escribir en el volumen. El valor predeterminado esfalse
.
volumesFrom
-
Tipo: matriz de objetos
Requerido: No
Volúmenes de datos que montar desde otro contenedor. Este parámetro se asigna a
VolumesFrom
en la sección Crear un contenedorde la API remota de Docker y con la opción --volumes-from
de docker run. sourceContainer
-
Tipo: cadena
Obligatorio: sí, si se utiliza
volumesFrom
El nombre del volumen contenedor desde el que montar los volúmenes.
readOnly
-
Tipo: booleano
Requerido: no
Si este valor es
true
, el acceso del contenedor al volumen es de solo lectura. Si este valor esfalse
, el contenedor puede escribir en el volumen. El valor predeterminado esfalse
.
"volumesFrom": [ { "sourceContainer": "string", "readOnly": true|false } ]
logConfiguration
-
Tipo: objeto LogConfiguration
Requerido: no
La especificación de configuración de registros para el contenedor.
Por ejemplo, para definiciones de tareas utilizando una configuración de registro, consulte Ejemplos de definiciones de tarea.
Este parámetro se asigna a
LogConfig
en la sección Crear un contenedorde la API remota de Docker y con la opción --log-driver
dedocker run
. De forma predeterminada, los contenedores utilizan el mismo controlador de registro que utiliza el daemon de Docker; no obstante, el contenedor podría utilizar un controlador de registro distinto para el daemon de Docker especificando un controlador de registro con este parámetro en la definición de contenedor. Para utilizar un controlador de registro distinto para un contenedor, el sistema de registro se debe configurar correctamente en la instancia de contenedor (o en un servidor de registro distinto para opciones de registro remotas). Para obtener más información acerca de las opciones para los distintos controladores de registro admitidos, consulte Configure logging drivers en la documentación de Docker. Debe tener en cuenta lo siguiente al especificar una configuración de registros para sus contenedores:
-
Amazon ECS actualmente admite un conjunto secundario de controladores de registro disponibles para el daemon de Docker (se muestra en los valores válidos a continuación). Es posible que haya controladores de registro adicionales en versiones futuras del agente de contenedor de Amazon ECS.
-
Este parámetro requiere la versión 1.18 de la API remota de Docker o superior en su instancia de contenedor.
-
Para tareas que utilizan el tipo de lanzamiento EC2, el agente de contenedor de Amazon ECS que se ejecuta en una instancia de contenedor debe registrar los controladores de registro disponibles en dicha instancia con la variable de entorno
ECS_AVAILABLE_LOGGING_DRIVERS
antes de que los contenedores colocados en dicha instancia puedan utilizar estas opciones de configuración de registros. Para obtener más información, consulte Configuración del agente de contenedor de Amazon ECS . -
Para las tareas que usan el tipo de lanzamiento Fargate, dado que no tiene acceso a la infraestructura subyacente donde se alojan sus tareas, cualquier software adicional necesario se tendrá que instalar fuera de la tarea. Por ejemplo, los agregadores de salida Fluentd o un host remoto que ejecute Logstash al que enviar los registros de Gelf.
"logConfiguration": { "logDriver": "awslogs","fluentd","gelf","json-file","journald","logentries","splunk","syslog","awsfirelens", "options": {"
string
": "string
" ...}, "secretOptions": [{ "name": "string
", "valueFrom": "string
" }] }logDriver
-
Tipo: cadena
Valores válidos:
"awslogs","fluentd","gelf","json-file","journald","logentries","splunk","syslog","awsfirelens"
Obligatorio: sí, si se utiliza
logConfiguration
El controlador de registro que utilizar para el contenedor. Los valores válidos mostrados anteriormente son controladores de registro con los que el agente de contenedor de Amazon ECS se puede comunicar de forma predeterminada.
Para las tareas que usan el tipo de lanzamiento Fargate, los controladores de registro admitidos son
awslogs
,splunk
yawsfirelens
.Para las tareas que usan el tipo de lanzamiento EC2, los controladores de registro admitidos son
awslogs
,fluentd
,gelf
,json-file
,journald
,logentries
,syslog
,splunk
yawsfirelens
.Para obtener más información sobre el uso del controlador de registro
awslogs
en las definiciones de tareas para enviar registros de contenedor a CloudWatch Logs, consulte Uso del controlador de registros awslogs.Para obtener más información sobre el uso del controlador del registro
awsfirelens
, consulte Envío de registros personalizados.nota Si tiene un controlador personalizado que no figura en la lista, puede adaptar el proyecto del agente de contenedor de Amazon ECS que está disponible en GitHub
y personalizarlo para que funcione con dicho controlador. Le recomendamos enviar solicitudes de inserción para los cambios que le gustaría que incluyamos. No obstante, actualmente no ofrecemos soporte para la ejecución de copias modificadas de este software. Este parámetro requiere la versión 1.18 de la API remota de Docker o superior en su instancia de contenedor.
options
-
Tipo: cadena para mapa de cadenas
Requerido: no
Las opciones de configuración que enviar al controlador de registro.
Cuando utiliza FireLens para enrutar los registros a un destino de servicio de AWS o de red de socios (APN) de AWS para el almacenamiento y el análisis de registros, puede configurar
log-driver-buffer-limit
hasta el límite del número de eventos almacenados en búfer en la memoria. Puede ayudar a resolver el posible problema de pérdida de registros porque un alto rendimiento podría resultar en que se quede sin memoria para el búfer dentro de Docker. Para obtener más información, consulte Límite de búfer de Fluentd .Este parámetro requiere la versión 1.19 de la API remota de Docker o superior en su instancia de contenedor.
secretOptions
-
Tipo: matriz de objetos
Requerido: no
Un objeto que representa el secreto que transferir a la configuración de registro. Para obtener más información, consulte Especificación de información confidencial .
name
-
Tipo: String
Obligatorio: sí
El valor que se ha de establecer como la variable de entorno en el contenedor.
valueFrom
-
Tipo: String
Obligatorio: sí
El secreto que exponer a la configuración de registro del contenedor.
"logConfiguration": { "logDriver": "splunk", "options": { "splunk-url": "https://cloud.splunk.com:8080", "splunk-token": "...", "tag": "...", ... }, "secretOptions": [{ "name": "
splunk-token
", "valueFrom": "/ecs/logconfig/splunkcred
" }] }
-
firelensConfiguration
-
Tipo: objeto FirelensConfiguration
Requerido: No
La configuración de FireLens para el contenedor. Esto se utiliza para especificar y configurar un enrutador de registro para registros de contenedores. Para obtener más información, consulte Enrutamiento de registros personalizados .
{ "firelensConfiguration": { "type": "fluentd", "options": { "KeyName": "" } } }
options
-
Tipo: mapa de cadena a cadena
Requerido: No
Las opciones que se deben usar al configurar el router de registros. Este campo es opcional y se puede utilizar para especificar un archivo de configuración personalizado o agregar metadatos adicionales, como la tarea, la definición de tareas, el clúster y detalles de la instancia de contenedor al evento de registro. Si se especifica, la sintaxis que se va a utilizar es
"options":{"enable-ecs-log-metadata":"true|false","config-file-type:"s3|file","config-file-value":"arn:aws:s3:::mybucket/fluent.conf|filepath"}
. Para obtener más información, consulte Creación de una definición de tareas que utiliza una configuración de FireLens . type
-
Tipo: String
Obligatorio: sí
El router de registros que se va a utilizar. Los valores válidos son
fluentd
ofluentbit
.
Seguridad
privileged
-
Tipo: booleano
Requerido: no
Cuando este parámetro es verdadero, al contenedor se le conceden privilegios elevados en la instancia de contenedor de host, similares a los de un usuario
root
.Este parámetro se asigna a
Privileged
en la sección Crear un contenedorde la API remota de Docker y con la opción --privileged
de docker run. nota Este parámetro no es compatible con contenedores Windows o tareas con el tipo de lanzamiento Fargate.
"privileged": true|false
user
-
Tipo: cadena
Requerido: no
El usuario que se utiliza dentro del contenedor. Este parámetro se asigna a
User
en la sección Crear un contenedorde la API remota de Docker y con la opción --user
de docker run. importante Cuando ejecute tareas utilizando el modo de red
host
, no debe ejecutar contenedores con el usuario root (UID 0). Se considera una práctica recomendada utilizar un usuario que no sea root.Puede especificar el elemento
user
utilizando los siguientes formatos. Si se especifica un UID o GID, debe especificarlo como número entero positivo.-
user
-
user:group
-
uid
-
uid:gid
-
user:gid
-
uid:group
nota Este parámetro no es compatible con contenedores Windows.
"user": "string"
-
dockerSecurityOptions
-
Tipo: matriz de cadenas
Valores válidos: “no-new-privileges” | “apparmor:PROFILE” | “label:
value
” | “credentialspec:CredentialSpecFilePath
”Requerido: no
Una lista de cadenas para proporcionar etiquetas para sistemas de seguridad multinivel SELinux y AppArmor. Para obtener más información acerca de los valores válidos, vea Docker Run Security Configuration
. Este campo no es válido para contenedores en tareas con el tipo de lanzamiento Fargate. Con contenedores de Windows, este parámetro se puede utilizar para hacer referencia a un archivo de especificación de credenciales al configurar un contenedor para la autenticación con Active Directory. Para obtener más información, consulte Uso de gMSA para contenedores de Windows .
Este parámetro se asigna a
SecurityOpt
en la sección Crear un contenedorde la API remota de Docker y con la opción --security-opt
de docker. "dockerSecurityOptions": ["string", ...]
nota El agente de contenedor de Amazon ECS que se ejecuta en una instancia de contenedor con las variables de entorno
ECS_SELINUX_CAPABLE=true
oECS_APPARMOR_CAPABLE=true
antes de que los contenedores situados en dicha instancia puedan utilizar estas opciones de seguridad. Para obtener más información, consulte Configuración del agente de contenedor de Amazon ECS .
Límites de recursos
ulimits
-
Tipo: matriz de objetos
Requerido: no
Lista de valores
ulimit
a definir para un contenedor. Este valor sobrescribiría la configuración predeterminada del límite de recursos para el sistema operativo. Este parámetro se asigna aUlimits
en la sección Crear un contenedorde la API remota de Docker y con la opción --ulimit
de docker run. 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 recursosnofile
define una restricción en el número de archivos abiertos que puede utilizar un contenedor. El límite flexiblenofile
predeterminado es1024
y el límite invariable es4096
. Para obtener más información, consulte Límites de recursos de tareas.Este parámetro requiere la versión 1.18 de la API remota de Docker o superior en su instancia de contenedor.
nota Este parámetro no es compatible con contenedores Windows.
"ulimits": [ { "name": "core"|"cpu"|"data"|"fsize"|"locks"|"memlock"|"msgqueue"|"nice"|"nofile"|"nproc"|"rss"|"rtprio"|"rttime"|"sigpending"|"stack", "softLimit": integer, "hardLimit": integer } ... ]
name
-
Tipo: cadena
Valores válidos:
"core" | "cpu" | "data" | "fsize" | "locks" | "memlock" | "msgqueue" | "nice" | "nofile" | "nproc" | "rss" | "rtprio" | "rttime" | "sigpending" | "stack"
Obligatorio: sí, si se utilizan
ulimits
.El valor
type
deulimit
. hardLimit
-
Tipo: número entero
Obligatorio: sí, si se utilizan
ulimits
.El límite máximo para el tipo de
ulimit
. softLimit
-
Tipo: número entero
Obligatorio: sí, si se utilizan
ulimits
.El límite flexible para el tipo de
ulimit
.
Etiquetas de Docker
dockerLabels
-
Tipo: cadena para mapa de cadenas
Requerido: no
Un mapa de clave/valor de etiquetas que agregar al contenedor. Este parámetro se asigna a
Labels
en la sección Crear un contenedorde la API remota de Docker y con la opción --label
de docker run. Este parámetro requiere la versión 1.18 de la API remota de Docker o superior en su instancia de contenedor.
"dockerLabels": {"string": "string" ...}
Otros parámetros de definición de contenedor
Los siguientes parámetros de definición de contenedor se pueden utilizar al registrar definiciones de tareas en la consola de Amazon ECS mediante la opción Configure via JSON (Configurar mediante JSON). Para obtener más información, consulte Creación de una definición de tareas mediante la nueva consola .
Temas
Parámetros de Linux
linuxParameters
-
Tipo: objeto LinuxParameters
Requerido: no
Opciones específicas de Linux que se aplican al contenedor, como KernelCapabilities.
nota Este parámetro no es compatible con contenedores Windows.
"linuxParameters": { "capabilities": { "add": ["string", ...], "drop": ["string", ...] } }
capabilities
-
Tipo: objeto KernelCapabilities
Requerido: no
Las capacidades de Linux para el contenedor que se añaden a la configuración predeterminada proporcionada por Docker o se eliminan de ella. Para obtener más información acerca de las capacidades predeterminadas y las capacidades no predeterminadas disponibles, consulte Runtime privilege and Linux capabilities
en la referencia de ejecución de Docker. Para obtener información más detallada acerca de estas capacidades de Linux, consulte la página del manual de Linux acerca de capacidades(7) . add
-
Tipo: matriz de cadenas
Valores válidos:
"ALL" | "AUDIT_CONTROL" | "AUDIT_READ" | "AUDIT_WRITE" | "BLOCK_SUSPEND" | "CHOWN" | "DAC_OVERRIDE" | "DAC_READ_SEARCH" | "FOWNER" | "FSETID" | "IPC_LOCK" | "IPC_OWNER" | "KILL" | "LEASE" | "LINUX_IMMUTABLE" | "MAC_ADMIN" | "MAC_OVERRIDE" | "MKNOD" | "NET_ADMIN" | "NET_BIND_SERVICE" | "NET_BROADCAST" | "NET_RAW" | "SETFCAP" | "SETGID" | "SETPCAP" | "SETUID" | "SYS_ADMIN" | "SYS_BOOT" | "SYS_CHROOT" | "SYS_MODULE" | "SYS_NICE" | "SYS_PACCT" | "SYS_PTRACE" | "SYS_RAWIO" | "SYS_RESOURCE" | "SYS_TIME" | "SYS_TTY_CONFIG" | "SYSLOG" | "WAKE_ALARM"
Requerido: no
Las capacidades de Linux para el contenedor que se deben añadir a la configuración predeterminada proporcionada por Docker. Este parámetro se asigna a
CapAdd
en la sección Crear un contenedorde la API remota de Docker y con la opción --cap-add
de docker run. nota Las tareas lanzadas en Fargate solo admiten la adición de la capacidad del kernel
SYS_PTRACE
. drop
-
Tipo: matriz de cadenas
Valores válidos:
"ALL" | "AUDIT_CONTROL" | "AUDIT_WRITE" | "BLOCK_SUSPEND" | "CHOWN" | "DAC_OVERRIDE" | "DAC_READ_SEARCH" | "FOWNER" | "FSETID" | "IPC_LOCK" | "IPC_OWNER" | "KILL" | "LEASE" | "LINUX_IMMUTABLE" | "MAC_ADMIN" | "MAC_OVERRIDE" | "MKNOD" | "NET_ADMIN" | "NET_BIND_SERVICE" | "NET_BROADCAST" | "NET_RAW" | "SETFCAP" | "SETGID" | "SETPCAP" | "SETUID" | "SYS_ADMIN" | "SYS_BOOT" | "SYS_CHROOT" | "SYS_MODULE" | "SYS_NICE" | "SYS_PACCT" | "SYS_PTRACE" | "SYS_RAWIO" | "SYS_RESOURCE" | "SYS_TIME" | "SYS_TTY_CONFIG" | "SYSLOG" | "WAKE_ALARM"
Requerido: no
Las capacidades de Linux para el contenedor que se deben eliminar de la configuración predeterminada proporcionada por Docker. Este parámetro se asigna a
CapDrop
en la sección Crear un contenedorde la API remota de Docker y con la opción --cap-drop
de docker run.
devices
-
Cualquier dispositivo host que exponer en el contenedor. Este parámetro se asigna a
Devices
en la sección Crear un contenedorde la API remota de Docker y con la opción --device
de docker run. nota Si utiliza tareas que emplean el tipo de lanzamiento Fargate, no se admite el parámetro
devices
.Tipo: matriz de objetos Device
Requerido: No
hostPath
-
La ruta del dispositivo de la instancia de contenedor del host.
Tipo: String
Obligatorio: sí
containerPath
-
La ruta dentro del contenedor en la que exponer el dispositivo host.
Tipo: String
Requerido: No
permissions
-
Los permisos explícitos que proporcionar al contenedor para el dispositivo. De forma predeterminada, el contenedor tiene permisos para
read
,write
ymknod
en el dispositivo.Tipo: matriz de cadenas
Valores válidos:
read
|write
|mknod
initProcessEnabled
-
Ejecute un proceso
init
dentro del contenedor que reenvíe señales y aproveche procesos. Este parámetro se corresponde con la opción--init
de docker run. Este parámetro requiere la versión 1.25 de la API remota de Docker o superior en su instancia de contenedor.
maxSwap
-
La cantidad total de memoria de intercambio (en MiB) que puede utilizar un contenedor. Este parámetro se traducirá en la opción
--memory-swap
de docker rundonde el valor sería la suma de la memoria del contenedor más el valor de maxSwap
.Si se especifica un valor
0
paramaxSwap
, el contenedor no utilizará el intercambio. Los valores aceptados son0
o cualquier entero positivo. Si se omite el parámetromaxSwap
, el contenedor utilizará la configuración de intercambio de la instancia de contenedor en la que se está ejecutando. Debe establecerse un valor demaxSwap
para el parámetroswappiness
.nota Si utiliza tareas que emplean el tipo de lanzamiento Fargate, no se admite el parámetro
maxSwap
. sharedMemorySize
-
El valor del tamaño (en MiB) del volumen
/dev/shm
. Este parámetro se corresponde con la opción--shm-size
de docker run. nota Si utiliza tareas que emplean el tipo de lanzamiento Fargate, no se admite el parámetro
sharedMemorySize
.Tipo: entero
swappiness
-
Esta opción le permite ajustar el comportamiento de intercambio de memoria de un contenedor. Un valor de
swappiness
de0
hará que el intercambio no se realice a menos que sea absolutamente necesario. Un valor deswappiness
de100
incrementará al máximo el intercambio de páginas. Los valores aceptados son números enteros comprendidos entre0
y100
. Si no se especifica el parámetroswappiness
, se utilizará el valor predeterminado de60
. Si no se especifica ningún valor paramaxSwap
, este parámetro se omite. Este parámetro se corresponde con la opción--memory-swappiness
de docker run. nota Si utiliza tareas que emplean el tipo de lanzamiento Fargate, no se admite el parámetro
swappiness
. tmpfs
-
La ruta del contenedor, las opciones de montaje y el tamaño máximo (en MiB) del tmpfs montado. Este parámetro se corresponde con la opción
--tmpfs
de docker run. nota Si utiliza tareas que emplean el tipo de lanzamiento Fargate, no se admite el parámetro
tmpfs
.Tipo: matriz de objetos Tmpfs
Requerido: No
containerPath
-
La ruta de archivo tmpfs absoluta en la que se montará el volumen.
Tipo: String
Obligatorio: sí
mountOptions
-
La lista opciones de montaje del volumen tmpfs.
Tipo: matriz de cadenas
Requerido: No
Valores válidos:
"defaults" | "ro" | "rw" | "suid" | "nosuid" | "dev" | "nodev" | "exec" | "noexec" | "sync" | "async" | "dirsync" | "remount" | "mand" | "nomand" | "atime" | "noatime" | "diratime" | "nodiratime" | "bind" | "rbind" | "unbindable" | "runbindable" | "private" | "rprivate" | "shared" | "rshared" | "slave" | "rslave" | "relatime" | "norelatime" | "strictatime" | "nostrictatime" | "mode" | "uid" | "gid" | "nr_inodes" | "nr_blocks" | "mpol"
size
-
El tamaño máximo (en MiB) del volumen tmpfs.
Tipo: entero
Obligatorio: sí
Dependencia de contenedor
dependsOn
-
Tipo: matriz de objetos ContainerDependency
Requerido: no
Las dependencias definidas para el inicio y apagado del contenedor. Un contenedor puede contener varias dependencias. Cuando una dependencia se define para el inicio del contenedor, para cierre de contenedor se invierte. Para ver un ejemplo, consulte Ejemplo: dependencia de contenedores.
nota Si un contenedor no cumple una restricción de dependencia o agota el tiempo de espera antes de cumplir la restricción, Amazon ECS no progresa los contenedores dependientes a su siguiente estado.
Para las tareas de Amazon ECS alojadas en instancias de Amazon EC2, las instancias requieren al menos la versión
1.26.0
del agente de contenedor para habilitar las dependencias del contenedor. No obstante, recomendamos utilizar la versión del agente de contenedor más reciente. Para obtener información sobre la comprobación de la versión del agente y la actualización a la versión más reciente, consulte Actualización del agente de contenedor de Amazon ECS. Si utiliza una AMI de Amazon Linux optimizada para Amazon ECS, la instancia necesita al menos la versión1.26.0-1
del paqueteecs-init
. Si las instancias de contenedor se lanzan desde la versión20190301
o posterior, entonces contienen las versiones requeridas del agente de contenedor yecs-init
. Para obtener más información, consulte AMI optimizada para Amazon ECS .Para las tareas de Amazon ECS alojadas en Fargate, este parámetro requiere que la tarea o el servicio utilicen la versión
1.3.0
o posterior (Linux) o1.0.0
(Windows) de la plataforma."dependsOn": [ { "containerName": "
string
", "condition": "string
" } ]containerName
-
Tipo: String
Obligatorio: sí
El nombre del contenedor que debe cumplir la condición especificada.
condition
-
Tipo: String
Obligatorio: sí
La condición de dependencia del contenedor. Están disponibles las siguientes condiciones y su comportamiento:
-
START
: esta condición simula el comportamiento de enlaces y volúmenes en la actualidad. Valida que un contenedor dependiente se inicia antes de permitir que se inicien otros contenedores. -
COMPLETE
: esta condición valida que un contenedor dependiente se ejecute hasta su finalización (se cierre) antes de permitir que otros contenedores se inicien. Esto puede resultar útil para contenedores no esenciales que ejecutan un script y, a continuación, se cierran. Esta condición no se puede establecer en un contenedor esencial. -
SUCCESS
: esta condición es la misma queCOMPLETE
, pero además requiere que el contenedor se cierre con un estadozero
. Esta condición no se puede establecer en un contenedor esencial. -
HEALTHY
: esta condición valida que el contenedor dependiente pase su comprobación de estado de Docker antes de permitir que otros contenedores se inicien. Esto requiere que el contenedor dependiente tenga configuradas las comprobaciones de estado. Esta condición solo se confirma durante el inicio de tarea.
-
Tiempos de espera de contenedor
startTimeout
-
Tipo: entero
Requerido: no
Valores de ejemplo:
120
Tiempo que hay que esperar (en segundos) antes de desistir en resolver dependencias para un contenedor.
Por ejemplo, se especifican dos contenedores en una definición de tareas donde
containerA
tenga una dependencia encontainerB
que alcance un estadoCOMPLETE
,SUCCESS
oHEALTHY
. Si se especifica un valorstartTimeout
paracontainerB
y este no alcanza el estado deseado en ese tiempo, entoncescontainerA
renunciará y no se iniciará.nota Si un contenedor no cumple una restricción de dependencia o agota el tiempo de espera antes de cumplir la restricción, Amazon ECS no progresa los contenedores dependientes a su siguiente estado.
Para las tareas de Amazon ECS alojadas en Fargate, este parámetro requiere que la tarea o servicio utilicen la versión
1.3.0
o posterior (Linux) de la plataforma. stopTimeout
-
Tipo: entero
Requerido: no
Valores de ejemplo:
120
Duración de tiempo (en segundos) que esperar a que el contenedor se cancelen de forma forzada si no sale de forma normal por sí mismo.
Para las tareas que usan el tipo de lanzamiento Fargate, la tarea o el servicio requiere la versión 1.3.0 o posterior (Linux) o 1.0.0 o posterior (para Windows) de la plataforma. El valor máximo de tiempo de espera de parada es 120 segundos y, si no se especifica el parámetro, se utiliza el valor predeterminado de 30 segundos.
Para las tareas que utilizan el tipo de lanzamiento EC2, si no se especifica el parámetro
stopTimeout
, se utiliza de forma predeterminada el valor establecido para la variable de configuración del agente de contenedores de Amazon ECSECS_CONTAINER_STOP_TIMEOUT
. Si no se establece ni el parámetrostopTimeout
ni la variable de configuración del agenteECS_CONTAINER_STOP_TIMEOUT
, se utilizarán los valores predeterminados de 30 segundos para los contenedores Linux y de 30 segundos para los contenedores Windows. Las instancias de contenedor requieren al menos la versión 1.26.0 del agente de contenedor para habilitar un valor de tiempo de espera de parada de contenedor. No obstante, recomendamos utilizar la versión del agente de contenedor más reciente. Para obtener información sobre la comprobación de la versión del agente y la actualización a la versión más reciente, consulte Actualización del agente de contenedor de Amazon ECS. Si utiliza la AMI de Amazon Linux optimizada para Amazon ECS, la instancia necesita al menos la versión 1.26.0-1 del paqueteecs-init
. Si las instancias de contenedor se lanzan desde la versión20190301
o posterior, entonces contienen las versiones requeridas del agente de contenedor yecs-init
. Para obtener más información, consulte AMI optimizada para Amazon ECS .
Controles del sistema
systemControls
-
Tipo: objeto SystemControl
Requerido: no
Una lista de parámetros de kernel asignados a un espacio de nombres que se van a establecer en el contenedor. Este parámetro se asigna a
Sysctls
en la sección Crear un contenedorde la API remota de Docker y con la opción --sysctl
de docker run. No es recomendable especificar parámetros
systemControls
relacionados con la red para varios contenedores en una única tarea que también utilice el modo de redawsvpc
uhost
por los siguientes motivos:-
En las tareas que utilicen el modo de red
awsvpc
, si establecesystemControls
en cualquier contenedor, esto se aplicará a todos los contenedores de la tarea. Si establece diferentes parámetrossystemControls
para varios contenedores en una sola tarea, el contenedor que se inicie en último lugar determinará cuál de los parámetrossystemControls
se aplicará. -
Para las tareas que utilizan el modo de red
host
, no se admiten lossystemControls
del espacio de nombres de la red.
Si está configurando un espacio de nombres de recursos de IPC para usarlo para los contenedores de la tarea, se aplicará lo siguiente a los controles de su sistema. Para obtener más información, consulte Modo IPC .
-
Para las tareas que usan el modo IPC
host
, no se admiten lossystemControls
del espacio de nombres IPC. -
Para las tareas que usan el modo de IPC
task
, los valores desystemControls
del espacio de nombres IPC se aplicarán a todos los contenedores de una tarea.
nota Este parámetro no es compatible con contenedores Windows o tareas con el tipo de lanzamiento Fargate.
"systemControls": [ { "namespace":"
string
", "value":"string
" } ]namespace
-
Tipo: String
Requerido: no
El parámetro de kernel asignado a un espacio de nombres para el que se va a establecer un
value
.Valores de espacio de nombres IPC válidos:
"kernel.msgmax" | "kernel.msgmnb" | "kernel.msgmni" | "kernel.sem" | "kernel.shmall" | "kernel.shmmax" | "kernel.shmmni" | "kernel.shm_rmid_forced"
, así como los Sysctls que empiecen por"fs.mqueue.*"
Valores de espacio de nombres de red válidos: Sysctls que empiecen por
"net.*"
value
-
Tipo: String
Requerido: no
El valor del parámetro de kernel asignado a un espacio de nombres especificado en
namespace
.
-
Interactivo
interactive
-
Tipo: booleano
Requerido: no
Si este parámetro es
true
, es posible implementar aplicaciones en contenedores que requieran la asignación de stdin o un tty. Este parámetro se asigna aOpenStdin
en la sección Crear un contenedorde la API remota de Docker y con la opción --interactive
de docker run.
Pseudoterminal
pseudoTerminal
-
Tipo: booleano
Requerido: no
Cuando este parámetro es
true
, se asigna un TTY. Este parámetro se asigna aTty
en la sección Crear un contenedorde la API remota de Docker y con la opción --tty
de docker run.
Nombre del acelerador de Elastic Inference
El requisito de recursos de Inferentia para la definición de tareas. Para obtener más información, consulte Uso de cargas de trabajo de inferencia en Amazon ECS .
Los siguientes parámetros están permitidos en una definición de tarea:
deviceName
-
Tipo: string
Obligatorio: sí
Nombre del dispositivo del acelerador de inferencia elástica. También debe hacerse referencia a
deviceName
en una definición de contenedor. Consulte Elastic Inference accelerator. deviceType
-
Tipo: string
Obligatorio: sí
El tipo de acelerador de Elastic Inference que se va a utilizar.
Restricciones para ubicación de tareas
Cuando se registra una definición de tareas, se pueden proporcionar restricciones de ubicación de tareas que personalizan la forma en la que Amazon ECS las coloca.
Si usa el tipo de lanzamiento Fargate, no se pueden usar restricciones de ubicación de tareas. De forma predeterminada, las tareas de Fargate se reparten entre las zonas de disponibilidad.
Para las tareas que usan el tipo de lanzamiento EC2, se pueden usar restricciones para colocar tareas en función de la zona de disponibilidad, el tipo de instancia o atributos personalizados. Para obtener más información, consulte Restricciones de ubicación de tareas de Amazon ECS .
Los siguientes parámetros están permitidos en una definición de contenedor:
expression
-
Tipo: cadena
Requerido: no
Una expresión de lenguaje de consulte de clúster que aplicar a la restricción. Para obtener más información, consulte Lenguaje de consultas de clúster .
type
-
Tipo: cadena
Obligatorio: sí
El tipo de restricción. Utilice
memberOf
para restringir la selección a un grupo de candidatos válidos.
Proxy configuration (Configuración del proxy)
proxyConfiguration
-
Tipo: objeto ProxyConfiguration
Requerido: no
Los detalles de configuración del proxy App Mesh.
Para las tareas que usan el tipo de lanzamiento de EC2, las instancias de contenedor requieren al menos la versión 1.26.0 del agente de contenedor y al menos la versión 1.26.0-1 del paquete
ecs-init
para habilitar una configuración de proxy. Si las instancias de contenedor se lanzan desde la versión de AMI optimizada para Amazon ECS20190301
o posterior, entonces contienen las versiones requeridas del agente de contenedor yecs-init
. Para obtener más información, consulte AMI optimizada para Amazon ECS .Para las tareas que utilizan el tipo de lanzamiento Fargate, esta característica requiere que la tarea o servicio utilicen la versión 1.3.0 de la plataforma o una posterior.
nota Este parámetro no es compatible con contenedores Windows.
"proxyConfiguration": { "type": "APPMESH", "containerName": "
string
", "properties": [ { "name": "string
", "value": "string
" } ] }type
-
Tipo: String
Valores válidos:
APPMESH
Requerido: No
El tipo de proxy. El único valor admitido es
APPMESH
. containerName
-
Tipo: String
Obligatorio: sí
El nombre del contenedor que servirá como proxy de App Mesh.
properties
-
Tipo: matriz de objetos KeyValuePair
Requerido: No
El conjunto de parámetros de configuración de red para proporcionar el complemento Container Network Interface (CNI), especificado como pares clave-valor.
-
IgnoredUID
: (obligatorio) el ID de usuario (UID) del contenedor proxy tal y como lo define el parámetrouser
en una definición de contenedor. Se utiliza para garantizar que el proxy pasa por alto su propio tráfico. Si se especificaIgnoredGID
, este campo puede estar vacío. -
IgnoredGID
: (obligatorio) el ID de grupo (GID) del contenedor proxy tal y como lo define el parámetrouser
en una definición de contenedor. Se utiliza para garantizar que el proxy pasa por alto su propio tráfico. Si se especificaIgnoredUID
, este campo puede estar vacío. -
AppPorts
: (obligatorio) la lista de los puertos que utiliza la aplicación. El tráfico de red hacia estos puertos se reenvía aProxyIngressPort
yProxyEgressPort
. -
ProxyIngressPort
: (obligatorio) especifica el puerto al que se dirige el tráfico que ingresa aAppPorts
. -
ProxyEgressPort
: (obligatorio) especifica el puerto al que se dirige el tráfico que sale deAppPorts
. -
EgressIgnoredPorts
: (obligatorio) el tráfico de salida que se dirige a estos puertos especificados se pasa por alto y no se redirige aProxyEgressPort
. Puede ser una lista vacía. -
EgressIgnoredIPs
: (obligatorio) el tráfico de salida que se dirige a estas direcciones IP especificadas se pasa por alto y no se redirige aProxyEgressPort
. Puede ser una lista vacía.
-
Volúmenes
Al registrar una definición de tareas, se puede especificar una lista de los volúmenes que se transferirán al daemon de Docker en una instancia de contenedor, que entonces estará disponible para otros contenedores en la misma instancia de contenedor.
A continuación se indican los tipos de volúmenes de datos que se pueden usar:
-
Volúmenes de Docker: un volumen administrado de Docker que se crea en
/var/lib/docker/volumes
en la instancia de Amazon EC2 del host. Los controladores de volúmenes de Docker (también llamados complementos) se usan para integrar los volúmenes con sistemas de almacenamiento externos como Amazon EBS. Se puede usar el controlador de volumenlocal
integrado o un controlador de volumen de terceros. Los volúmenes de Docker solo se admiten cuando se ejecutan tareas en instancias de Amazon EC2. Los contenedores de Windows solo admiten el uso del controladorlocal
. Para utilizar volúmenes de Docker, especifiquedockerVolumeConfiguration
en su definición de tarea. Para obtener más información, consulte Uso de volúmenes. -
Montajes de enlace: un archivo o directorio de la máquina host se monta en un contenedor. Se admiten volúmenes de host de montaje de enlace cuando se ejecutan tareas en instancias de Amazon EC2 o Fargate de AWS. Para utilizar volúmenes de host de montaje vinculado, especifique
host
y un valor desourcePath
opcional en su definición de tarea. Para obtener más información, consulte la página sobre el uso de montajes vinculados.
Para obtener más información, consulte Uso de volúmenes de datos en tareas .
Los siguientes parámetros están permitidos en una definición de contenedor:
name
-
Tipo: String
Requerido: No
El nombre del volumen. Se admiten hasta 255 letras (mayúsculas y minúsculas), números, guiones y caracteres de subrayado. Se hace referencia a este nombre en el parámetro
sourceVolume
del objetomountPoints
de la definición de contenedor. host
-
Requerido: No
nota El parámetro
host
solo se admite cuando se utilizan tareas alojadas en instancias de Amazon EC2.El parámetro
host
se utiliza para vincular el ciclo de vida del montaje de enlace a la instancia de Amazon EC2 del host, en lugar de a la tarea, y donde se almacena. Si el parámetrohost
está vacío, entonces el daemon de Docker asigna una ruta de host a su volumen de datos, pero no se garantiza que los datos persistan después de que los contenedores asociados dejen de funcionar.Los contenedores de Windows pueden montar directorios completos en la misma unidad que
$env:ProgramData
.sourcePath
-
Tipo: String
Requerido: No
Cuando utilice el parámetro
host
, especifique unasourcePath
para declarar la ruta de la instancia de Amazon EC2 del host que se presenta al contenedor. Si este parámetro está vacío, el daemon de Docker asigna una ruta de host. Si el parámetrohost
contiene una ubicación de archivossourcePath
, el volumen de datos persiste en la ubicación especificada en la instancia de Amazon EC2 del host hasta que la elimine manualmente. Si el valorsourcePath
no existe en la instancia de Amazon EC2 del host, el daemon de Docker lo crea. Si la ubicación existe, el contenido de la carpeta de la ruta de origen se exporta.
dockerVolumeConfiguration
-
Tipo: objeto
Requerido: No
Este parámetro se especifica cuando se usan volúmenes de Docker. Los volúmenes de Docker solo se admiten cuando se ejecutan tareas en instancias EC2. Los contenedores de Windows solo admiten el uso del controlador
local
. Para utilizar montajes vinculados, especifiquehost
en su lugar.scope
-
Tipo: String
Valores válidos:
task
|shared
Requerido: No
El ámbito del volumen de Docker, que determina su ciclo de vida. Los volúmenes de Docker con un ámbito de
task
se aprovisionan automáticamente cuando se inicia la tarea y se destruyen cuando se limpia la tarea. Los volúmenes de Docker cuyo ámbito esshared
se conservan una vez detenida la tarea. autoprovision
-
Tipo: booleano
Valor predeterminado:
false
Requerido: No
Si este valor es
true
, el volumen de Docker se crea si aún no existe. Este campo solo se usa siscope
esshared
. Si el valor descope
estask
, este parámetro se debe omitir o establecer enfalse
. driver
-
Tipo: String
Requerido: No
El controlador del volumen de Docker que se va a usar. El valor de controlador debe coincidir con el nombre del controlador proporcionado por Docker, ya que se usa para la ubicación de tareas. Si el controlador se instaló mediante la CLI del complemento Docker, use
docker plugin ls
para recuperar el nombre de controlador de la instancia de contenedor. Si el controlador se instaló con otro método, use la detección de complementos de Docker para recuperar el nombre del controlador. Para obtener más información, consulte la documentación sobre la detección de complementos de Docker. Este parámetro se asigna a Driver
en la sección Create a volume(Crear un volumen) de la Docker Remote API (API remota de Docker) y con la opción de --driver
paradocker volume create
. driverOpts
-
Tipo: String
Requerido: No
Una correspondencia de las opciones específicas del controlador Docker que se pasan. Este parámetro se asigna a
DriverOpts
en la sección Create a volume(Crear un volumen) de la Docker Remote API (API remota de Docker) y con la opción de --opt
paradocker volume create
. labels
-
Tipo: String
Requerido: No
Metadatos personalizados que se añaden al volumen de Docker. Este parámetro se asigna a
Labels
en la sección Create a volume(Crear un volumen) de la Docker Remote API (API remota de Docker) y con la opción de --label
paradocker volume create
.
efsVolumeConfiguration
-
Tipo: objeto
Requerido: No
Este parámetro se especifica cuando se usan volúmenes de Amazon EFS.
fileSystemId
-
Tipo: String
Obligatorio: sí
El ID del sistema de archivos de Amazon EFS que se va a usar.
rootDirectory
-
Tipo: String
Requerido: No
Directorio del sistema de archivos de Amazon EFS que se va a montar como directorio raíz dentro del host. Si se omite este parámetro, se utilizará la raíz del volumen de Amazon EFS. Si se especifica
/
, se obtendrá el mismo efecto que si se omite este parámetro.importante Si se especifica un punto de acceso EFS en el
authorizationConfig
, se debe omitir el parámetro del directorio raíz o establecerlo en/
lo que aplicará la ruta establecida en el punto de acceso EFS. transitEncryption
-
Tipo: String
Valores válidos:
ENABLED
|DISABLED
Requerido: No
Si se habilita o no el cifrado para los datos de Amazon EFS en tránsito entre el alojamiento de Amazon ECS y el servidor de Amazon EFS. El cifrado en tránsito debe estar habilitado si se utiliza la autorización de IAM en Amazon EFS. Si se omite este parámetro, se usa el valor predeterminado de
DISABLED
. Para obtener más información, consulte Cifrado de datos en tránsito en la Guía del usuario de Amazon Elastic File System. transitEncryptionPort
-
Tipo: entero
Requerido: No
El puerto que se utilizará al enviar datos cifrados entre el alojamiento de Amazon ECS y el servidor de Amazon EFS. Si no especifica un puerto de cifrado en tránsito, utilizará la estrategia de selección de puertos que utiliza el ayudante de montaje de Amazon EFS. Para obtener más información, consulte Ayudante de montaje de EFS en la Guía del usuario de Amazon Elastic File System.
authorizationConfig
-
Tipo: objeto
Requerido: No
Los detalles de configuración de autorización en el sistema de archivos de Amazon EFS.
accessPointId
-
Tipo: String
Requerido: No
ID de punto de acceso que se va a utilizar. Si se especifica un punto de acceso, el valor del directorio raíz en el
efsVolumeConfiguration
se debe omitir o establecer en/
, lo que aplicará la ruta establecida en el punto de acceso EFS. Si se utiliza un punto de acceso, el cifrado de tránsito debe estar habilitado en elEFSVolumeConfiguration
. Para obtener más información, consulte Trabajo con puntos de acceso de Amazon EFS en la Guía del usuario de Amazon Elastic File System. iam
-
Tipo: String
Valores válidos:
ENABLED
|DISABLED
Requerido: No
Si utilizar o no el rol de IAM de tarea de Amazon ECS definido en una definición de tarea al montar el sistema de archivos de Amazon EFS. Si está habilitado, el cifrado de tránsito debe estar habilitado en el
EFSVolumeConfiguration
. Si se omite este parámetro, se usa el valor predeterminado deDISABLED
. Para obtener más información, consulte Roles de IAM para las tareas.
FSxWindowsFileServerVolumeConfiguration
-
Tipo: objeto
Obligatorio: sí
Este parámetro se especifica cuando se utiliza el sistema de archivos FSx for Windows File Server para el almacenamiento de tareas.
fileSystemId
-
Tipo: String
Obligatorio: sí
ID del sistema de archivos FSx for Windows File Server que se va a utilizar.
rootDirectory
-
Tipo: String
Obligatorio: sí
Directorio dentro del sistema de archivos de FSx for Windows File Server que se va a montar como directorio raíz dentro del host.
authorizationConfig
-
credentialsParameter
-
Tipo: String
Obligatorio: sí
Opciones de credenciales de autorización.
opciones:
Nombre de recurso de Amazon (ARN) de un secreto Secrets Manager de AWS.
ARN de un parámetro de Systems Manager de AWS.
domain
-
Tipo: String
Obligatorio: sí
Nombre de dominio completo alojado por un Microsoft AD (Active Directory) administrado por AWS Directory Service o un AD de EC2 con alojamiento propio.
Etiquetas
Cuando se registra una definición de tareas, se pueden especificar etiquetas de metadatos que se aplican a la definición de tareas. Las etiquetas ayudan a clasificar y organizar la definición de tareas. Cada etiqueta está formada por una clave y un valor opcional, ambos definidos por el usuario. Para obtener más información, consulte Etiquetado de los recursos de Amazon ECS .
No agregue información de identificación personal (PII) ni otra información confidencial en las etiquetas. Las etiquetas son accesibles para muchos servicios de AWS, incluida la facturación. Las etiquetas no se han diseñado para usarse con información privada o confidencial.
Los siguientes parámetros se admiten en un objeto de etiqueta.
key
-
Tipo: cadena
Requerido: no
Una parte de un par clave-valor que compone una etiqueta. Un clave es una etiqueta general que actúa como una categoría para valores de etiqueta más específicos.
value
-
Tipo: cadena
Requerido: no
La parte opcional de un par clave-valor que compone una etiqueta. Un valor actúa como un descriptor en una categoría de etiquetas (clave).
Otros parámetros de definición de tarea
Los siguientes parámetros de definición de tareas se pueden utilizar cuando se registran definiciones de tareas en la consola de Amazon ECS mediante la opción Configure via JSON (Configurar mediante JSON). Para obtener más información, consulte Creación de una definición de tareas mediante la nueva consola .
Almacenamiento efímero
ephemeralStorage
-
Tipo: objeto
Requerido: No
Cantidad de almacenamiento efímero en GB que se va a asignar para la tarea. Este parámetro se utiliza para expandir la cantidad total de almacenamiento efímero disponible, más allá de la cantidad predeterminada, para las tareas alojadas en AWS Fargate. Para obtener más información, consulte Montajes de enlace .
nota Este parámetro solo se admite para las tareas alojadas en AWS Fargate que utilizan la versión
1.4.0
o una posterior (Linux) de la plataforma. Este parámetro no es compatible con contenedores Windows en Fargate.
Modo IPC
ipcMode
-
Tipo: String
Requerido: No
El espacio de nombres de recurso de IPC que usarán los contenedores de la tarea. Los valores válidos son
host
,task
onone
. Si se especificahost
, todos los contenedores dentro de las tareas que tienen especificado el modo de IPChost
en la misma instancia de contenedor comparten los mismos recursos de IPC con la instancia Amazon EC2 del host. Si se especificatask
, todos los contenedores dentro de la tarea especificada comparten los mismos recursos de IPC. Si se especificanone
, los recursos de IPC dentro de los contenedores de una tarea son privados y no se comparten con otros contenedores en una tarea o en la instancia de contenedor. Si no se especifica ningún valor, el valor de IPCMode se establece enshareable
. Para obtener más información, consulte IPC settingsen la referencia de ejecución de Docker. Si se utiliza el modo de
host
de IPC, tenga en cuenta que existe un mayor riesgo de exposición de espacio de nombres de IPC no deseada. Para obtener más información, consulte Docker security. Si está configurando parámetros del kernel del espacio de nombres mediante
systemControls
para los contenedores de la tarea, se aplicará lo siguiente a su espacio de nombres de recursos de IPC. Para obtener más información, consulte Controles del sistema .-
Para las tareas que usan el modo de IPC
host
, no se admiten lossystemControls
relacionados con el espacio de nombres de IPC. -
Para las tareas que usan el modo de IPC
task
, lossystemControls
relacionados con el espacio de nombres de IPC se aplicarán a todos los contenedores de una tarea.
-
Este parámetro no es compatible con contenedores Windows o tareas con el tipo de lanzamiento Fargate.
Modo PID
pidMode
-
Tipo: String
Requerido: No
El espacio de nombres del proceso que usarán los contenedores de la tarea. Los valores válidos son
host
otask
. Si se especificahost
, todos los contenedores dentro de las tareas que tienen especificado el modo de PIDhost
en la misma instancia de contenedor comparten el mismo espacio de nombres del proceso con la instancia Amazon EC2 del host. Si se especificatask
, todos los contenedores dentro de la tarea especificada comparten el mismo espacio de nombres del proceso. Si no se especifica ningún valor, el valor predeterminado es un espacio de nombres privado. Para obtener más información, consulte PID settingsen la referencia de ejecución de Docker. Si se utiliza el modo de
host
de PID, tenga en cuenta que existe un mayor riesgo de exposición de espacio de nombres del proceso no deseada. Para obtener más información, consulte Docker security.
Este parámetro no es compatible con contenedores Windows o tareas con el tipo de lanzamiento Fargate.