As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.
Parâmetros de definição de tarefa
As definições de tarefa são divididas em partes separadas: família de tarefas, função de tarefas do IAM, modo de rede, definições de contêiner, volumes, restrições de posicionamento de tarefas e tipos de inicialização. As definições de família e de contêiner são obrigatórias em uma definição de tarefa. Por outro lado, a função de tarefa, o modo da rede, volumes, restrições de posicionamento de tarefa e o tipo de inicialização são opcionais.
Você pode usar esses parâmetros em um arquivo JSON para configurar sua definição de tarefa. Para obter mais informações, consulte Exemplos de definições de tarefa.
Veja a seguir as descrições mais detalhadas de cada parâmetro de definição de tarefa.
Família
family
-
Tipo: string
Exigido: sim
Ao registrar uma definição de tarefa, você dá a ela uma família, semelhante a um nome para várias versões da definição de tarefa, especificada com um número de revisão. A primeira definição de tarefa registrada em uma determinada família recebe uma revisão 1, e todas as definições de tarefa registradas depois receberão um número de revisão sequencial.
Tipos de inicialização
Ao registrar uma definição de tarefa, você pode especificar um tipo de inicialização em relação à qual o Amazon ECS deve validar a definição de tarefa. Se a definição de tarefa não for validada em relação às compatibilidades especificadas, uma exceção de cliente será retornada. Para obter mais informações, consulte Tipos de inicialização do Amazon ECS.
O seguinte parâmetro é permitido em uma definição de tarefa.
requiresCompatibilities
-
Tipo: matriz de strings
Obrigatório: não
Valores válidos:
EC2
|FARGATE
|EXTERNAL
O tipo de inicialização em relação à qual a definição de tarefa é validada. Isso inicia uma verificação para garantir que todos os parâmetros usados na definição de tarefa atendam aos requisitos do tipo de inicialização.
Função da tarefa
taskRoleArn
-
Tipo: string
Obrigatório: não
Ao registrar uma definição de tarefa, você pode fornecer uma função de tarefa para uma função do IAM que permita que os contêineres da permissão de tarefa chame as APIs da AWS especificadas nas políticas associadas em seu nome. Para obter mais informações, consulte Função do IAM de tarefa.
Quando você inicia a AMI do Windows Server otimizada para o Amazon ECS, os perfis do IAM para tarefas no Windows exigem que a opção
-EnableTaskIAMRole
seja definida. Seus contêineres também devem executar algum código de configuração para usar o recurso. Para obter mais informações, consulte Configuração adicional para funções do IAM do Windows para tarefas.
Função de execução de tarefas
executionRoleArn
-
Tipo: string
Obrigatório: condicional
O nome do recurso da Amazon (ARN) da função de execução de tarefas que concede ao agente de contêiner do Amazon ECS permissão para fazer chamadas de API da AWS em seu nome.
nota
A função do IAM para execução da tarefa é necessária dependendo dos requisitos da sua tarefa. Para obter mais informações, consulte Função do IAM de execução de tarefas do Amazon ECS.
Modo de rede
networkMode
-
Tipo: string
Obrigatório: não
O modo de rede do Docker a ser usado para os contêineres na tarefa. Para tarefas do Amazon ECS hospedadas em instâncias do Linux do Amazon EC2, os valores válidos são
none
,bridge
,awsvpc
ehost
. Se nenhum modo de rede for especificado, o modo de rede padrão serábridge
. Para tarefas do Amazon ECS hospedadas em instâncias do Windows do Amazon EC2, os valores válidos sãodefault
eawsvpc
. Se nenhum modo de rede for especificado, o modo de rededefault
será usado.Caso o modo de rede estiver definido como
none
, os contêineres da tarefa não terão conectividade externa e os mapeamentos de porta não poderão ser especificados na definição de contêiner.Se o modo da rede for
bridge
, a tarefa usará a rede virtual integrada do Docker no Linux, que é executada em cada instância do Amazon EC2 que hospeda a tarefa. A rede virtual integrada no Linux usa o driver de redebridge
do Docker.Se o modo de rede for
host
, a tarefa usará a rede do host que ignora a rede virtual integrada do Docker mapeando as portas de contêiner diretamente para a ENI da instância do Amazon EC2 que hospeda a tarefa. Os mapeamentos dinâmicos de portas não podem ser usados nesse modo de rede. Um contêiner em uma definição de tarefa que use esse modo deve especificar um número dehostPort
específico. Um número de porta em um host não pode ser usado por várias tarefas. Como resultado, não é possível executar várias tarefas da mesma definição de tarefa em uma única instância do Amazon EC2.Importante
Ao executar tarefas que usam o modo de rede
host
, não execute contêineres usando o usuário raiz (UID 0) para melhor segurança. Como uma prática recomendada de segurança, sempre utilize um usuário não raiz.Se o modo de rede for
awsvpc
, será alocada uma interface de rede elástica para a tarefa e você deverá especificar umaNetworkConfiguration
ao criar um serviço ou executar uma tarefa com a definição de tarefa. Para obter mais informações, consulte Rede de tarefas do Amazon ECS. No momento, apenas a AMI otimizada do Amazon ECS, outras variantes do Amazon Linux com o pacoteecs-init
ou a infraestrutura do AWS Fargate são compatíveis com o modo de redeawsvpc
.Se o modo da rede for
default
, a tarefa usará a rede virtual integrada do Docker no Windows, que é executada em cada instância do Amazon EC2 que hospeda a tarefa. A rede virtual integrada no Windows usa o driver de redenat
do Docker.Os modos de rede
host
eawsvpc
oferecem a melhor performance de rede para contêineres, pois usam a pilha de rede do Amazon EC2. Com os modos de redehost
eawsvpc
, as portas do contêiner expostas são mapeadas diretamente para a porta do host correspondente (para o modo de rede dohost
) ou para a porta de interface de rede elástica anexada (para o modo de redeawsvpc
). Por causa disso, não é possível usar mapeamentos dinâmicos de portas de host.Se você estiver usando o tipo de inicialização do Fargate, será necessário o modo de rede
awsvpc
. Se você estiver usando o tipo de inicialização do EC2, o modo de rede permitido depende do sistema operacional da instância do EC2 subjacente. Se for o Linux, qualquer modo de rede pode ser usado. Se for o Windows, podem ser usados os modosdefault
eawsvpc
.
Plataforma de tempo de execução
Os seguintes parâmetros são necessários para tipos de inicialização do Fargate.
operatingSystemFamily
-
Tipo: string
Obrigatório: Condicional
Padrão: LINUX
Esse parâmetro é necessário para tarefas do Amazon ECS hospedadas no Fargate.
Ao registrar uma definição de tarefa, você especifica a família do sistema operacional.
Os valores válidos para tarefas do Amazon ECS hospedadas no Fargate são
LINUX
,WINDOWS_SERVER_2019_FULL
,WINDOWS_SERVER_2019_CORE
,WINDOWS_SERVER_2022_FULL
eWINDOWS_SERVER_2022_CORE
.Os valores válidos para tarefas do Amazon ECS hospedadas no EC2 são
LINUX
,WINDOWS_SERVER_2022_CORE
,WINDOWS_SERVER_2022_FULL
,WINDOWS_SERVER_2019_FULL
eWINDOWS_SERVER_2019_CORE
,WINDOWS_SERVER_2016_FULL
,WINDOWS_SERVER_2004_CORE
eWINDOWS_SERVER_20H2_CORE
.Todas as definições de tarefa usadas em um serviço devem ter o mesmo valor para esse parâmetro.
Quando uma definição de tarefa faz parte de um serviço, esse valor deve corresponder ao valor
platformFamily
do serviço. cpuArchitecture
-
Tipo: string
Obrigatório: Condicional
Padrão: X86_64
Esse parâmetro é necessário para tarefas do Amazon ECS hospedadas no Fargate.
Ao registrar uma definição de tarefa, você especifica a arquitetura da CPU. Os valores válidos são
X86_64
eARM64
.Todas as definições de tarefa usadas em um serviço devem ter o mesmo valor para esse parâmetro.
Quando você tem tarefas do Linux para o tipo de inicialização do Fargate ou para o tipo de inicialização do EC2, você pode definir o valor como
ARM64
. Para obter mais informações, consulte Trabalhar com workloads ARM de 64 bits no Amazon ECS.
Tamanho da tarefa
Ao registrar uma definição de tarefa, você pode especificar o total de CPU e memória usados para a tarefa. Isso é separado dos valores de cpu
e memory
no nível de definição de contêiner. Para tarefas hospedadas em instâncias do Amazon EC2, esses campos são opcionais. Para tarefas hospedadas no Fargate (tanto de Linux quanto de Windows), esses campos são obrigatórios e existem valores específicos para cpu
e memory
com suporte.
nota
Os parâmetros de CPU e memória em nível de tarefa são ignorados para contêineres do Windows. É recomendável especificar recursos em nível de contêiner para contêineres do Windows.
O seguinte parâmetro é permitido em uma definição de tarefa:
cpu
-
Tipo: string
Obrigatório: condicional
nota
Este parâmetro não é compatível com contêineres do Windows.
O limite rígido de unidades de CPU a ser apresentado para a tarefa. Ele pode ser expresso como um número inteiro usando unidades de CPU, (por exemplo,
1024
), ou como uma string usando vCPUs (por exemplo,1 vCPU
ou1 vcpu
) em uma definição de tarefa. Quando a definição de tarefa for registrada, um valor de vCPU será convertido em um inteiro indicando as unidades de CPU.Para tarefas executadas em instâncias do EC2 ou em instâncias externas, este campo é opcional. Se o seu cluster não tiver registrado instâncias de contêiner com as unidades de CPU solicitadas disponíveis, ocorrerá uma falha na tarefa. Os valores compatíveis para tarefas executadas em instâncias do EC2 ou em instâncias externas estão entre
128
unidades de CPU (0.125
vCPUs) e10240
unidades de CPU (10
vCPUs).Para tarefas executadas no Fargate (tanto contêineres do Linux quanto do Windows), este campo é obrigatório e você deve usar um dos seguintes valores, o que determina seu intervalo de valores compatíveis para o parâmetro
memory
:Valor de CPU
Valor de memória
Sistemas operacionais com suporte para o 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 e 16 GB em incrementos de 1 GB
Linux, Windows
4096 (4 vCPU)
Entre 8 GB e 30 GB em incrementos de 1 GB
Linux, Windows
8192 (8 vCPU)
nota
Essa opção requer a plataforma Linux
1.4.0
ou posterior.Entre 16 GB e 60 GB em incrementos de 4 GB
Linux
16384 (16 vCPU)
nota
Essa opção requer a plataforma Linux
1.4.0
ou posterior.Entre 32 GB e 120 GB em incrementos de 8 GB
Linux
memory
-
Tipo: string
Obrigatório: condicional
nota
Este parâmetro não é compatível com contêineres do Windows.
O limite rígido (em MiB) de memória a ser apresentado para a tarefa. Ela pode ser expressa como um inteiro usando MiB (por exemplo
1024
), ou como uma string usando GB, por exemplo1GB
ou1 GB
, em uma definição de tarefa. Quando a definição de tarefa for registrada, um valor em GB será convertido em um inteiro indicando o MiB.Para tarefas hospedadas em instâncias do Amazon EC2, esse campo é opcional e qualquer valor pode ser usado. Se um valor de memória no nível de tarefa for especificado, o valor de memória no nível de contêiner será opcional. Se o seu cluster não tiver registrado instâncias de contêiner com a memória solicitada disponível, ocorrerá uma falha na tarefa. Você pode maximizar a utilização de recursos fornecendo às tarefas o máximo de memória possível para um determinado tipo de instância. Para obter mais informações, consulte Instância de contêiner Gerenciamento de memória.
Para tarefas hospedadas no Fargate (tanto contêineres de Linux quanto de Windows), esse campo é obrigatório e você deve usar um dos seguintes valores, o que determina seu intervalo de valores com suporte com o parâmetro
cpu
:Valor de memória (MiB)
Valor de CPU
Sistemas operacionais com suporte para o 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 (4 GB), 5120 (5 GB), 6144 (6 GB), 7168 (7 GB), 8192 (8 GB)
1024 (1 vCPU)
Linux, Windows
Entre 4096 (4 GB) e 16384 (16 GB) em incrementos de 1024 (1 GB)
2048 (2 vCPU)
Linux, Windows
Entre 8192 (8 GB) e 30720 (30 GB) em incrementos de 1024 (1 GB)
4096 (4 vCPU)
Linux, Windows
Entre 16 GB e 60 GB em incrementos de 4 GB
nota
Essa opção requer a plataforma Linux
1.4.0
ou posterior.8192 (8 vCPU)
Linux
Entre 32 GB e 120 GB em incrementos de 8 GB
nota
Essa opção requer a plataforma Linux
1.4.0
ou posterior.16384 (16 vCPU)
Linux
Definições de contêiner
Ao registrar uma definição de tarefa, você deve especificar uma lista de definições de contêiner passadas para o daemon do Docker em uma instância de contêiner. Os parâmetros a seguir são permitidos em uma definição de contêiner.
Tópicos
Parâmetros padrão de definição de contêiner
Os parâmetros de definição de tarefa a seguir são obrigatórios ou usados na maioria das definições de contêiner.
Name (Nome)
name
-
Tipo: string
Exigido: sim
O nome de um contêiner. São permitidos até 255 letras (caixa alta e baixa), números, hífens e sublinhados. Se estiver vinculando vários contêineres em uma definição de tarefa, o
name
de um contêiner poderá ser informado nolinks
de outro contêiner. Isso deve ser feito para conectar os contêineres.
Imagem
image
-
Tipo: string
Exigido: sim
A imagem usada para iniciar um contêiner. Esta string é passada diretamente para o daemon do Docker. As imagens no registro do Docker Hub estão disponíveis por padrão. Você também pode especificar outros repositórios com
ourepository-url
/image
:tag
. São permitidos até 255 letras (caixa alta e baixa), números, hifens, sublinhados, dois pontos, ponto, barras e sinais numéricos. Esse parâmetro é mapeado pararepository-url
/image
@digest
Image
na seção Criar um contêinerda API remota do Docker e o parâmetro IMAGE
de docker run. -
Quando uma nova tarefa é iniciada, o agente do contêiner do Amazon ECS obtém a versão mais recente da imagem especificada e a tag do contêiner a ser usado. No entanto, as atualizações subsequentes feitas em um repositório de imagens não são propagadas para tarefas já em execução.
-
As imagens em registros privados são suportadas. Para obter mais informações, consulte Autenticação de registro privado para tarefas.
-
As imagens nos repositórios do Amazon ECR podem ser especificadas usando a convenção de nomenclatura completa
registry/repository:tag
ouregistry/repository@digest
(por exemplo,aws_account_id
.dkr.ecr.region
.amazonaws.com/
oumy-web-app
:latest
aws_account_id
.dkr.ecr.region
.amazonaws.com/
).my-web-app
@sha256:94afd1f2e64d908bc90dbca0035a5b567EXAMPLE
-
As imagens em repositórios oficiais no Docker Hub usam um único nome (por exemplo,
ubuntu
oumongo
). -
As imagens em outros repositórios no Docker Hub são qualificadas com um nome de organização (por exemplo,
amazon/amazon-ecs-agent
). -
As imagens em outros repositórios online são ainda mais qualificadas por um nome de domínio (por exemplo,
quay.io/assemblyline/ubuntu
).
-
Memória
memory
-
Tipo: inteiro
Obrigatório: condicional
A quantidade (em MiB) de memória a ser apresentada ao contêiner. Caso tente exceder a memória especificada aqui, o contêiner será excluído. A quantidade total de memória reservada para todos os contêineres dentro da tarefa deve ser menor que o valor da tarefa
memory
, se estiver especificado. Esse parâmetro é mapeado paraMemory
na seção Criar um contêinerda API remota do Docker e a opção --memory
para docker run. Se estiver usando o tipo de inicialização Fargate, esse parâmetro será opcional.
Se estiver usando o tipo de inicialização do EC2, será necessário especificar um valor de memória em nível de tarefa ou um valor de memória em nível do contêiner. Se você especificar um nível de contêiner
memory
e um valormemoryReservation
,memory
deverá ser maior quememoryReservation
. Caso você especifiquememoryReservation
, o valor é subtraído dos recursos de memória disponíveis para a instância de contêiner na qual o contêiner está colocado. Caso contrário, o valor dememory
é usado.O daemon para Docker 20.10.0 ou versão posterior reserva no mínimo 6 MiB de memória para um contêiner. Por isso, não especifique menos de 6 MiB de memória para os seus contêineres.
O daemon para Docker 19.03.13-ce ou versão anterior reserva no mínimo 4 MiB de memória para um contêiner. Por isso, não especifique menos de 4 MiB de memória para os seus contêineres.
nota
Se você deseja maximizar a utilização de recursos fornecendo às tarefas o máximo de memória possível para um determinado tipo de instância, consulte Instância de contêiner Gerenciamento de memória.
memoryReservation
-
Tipo: inteiro
Obrigatório: não
O limite flexível (em MiB) de memória a ser reservado para o contêiner. Quando a memória do sistema estiver em contenção, o Docker tentará manter a memória do contêiner dentro desse limite flexível. Contudo, seu contêiner poderá consumir mais memória quando necessário, até o limite rígido especificado pelo parâmetro
memory
(se aplicável), ou toda a memória disponível na instância do contêiner, o que ocorrer primeiro. Esse parâmetro é mapeado paraMemoryReservation
na seção Criar um contêinerda API remota do Docker e a opção --memory-reservation
para docker run. Se um valor de memória no nível de tarefa não for especificado, será necessário especificar um número inteiro diferente de zero para um ou ambos
memory
oumemoryReservation
em uma definição de contêiner. Caso você especifique ambos,memory
deve ser maior quememoryReservation
. Caso você especifiquememoryReservation
, o valor é subtraído dos recursos de memória disponíveis para a instância de contêiner na qual o contêiner está colocado. Caso contrário, o valor dememory
é usado.Por exemplo, caso o contêiner normalmente use 128 MiB de memória, mas às vezes chega a 256 MiB de memória em períodos curtos, você pode definir um
memoryReservation
de 128 MiB e um limite fixomemory
de 300 MiB. Essa configuração permite que contêiner reservasse apenas 128 MiB de memória dos recursos restantes na instância de contêiner. Ao mesmo tempo, ela também possibilita que o contêiner utilize mais recursos de memória quando necessário.nota
Este parâmetro não é compatível com contêineres do Windows.
O daemon para Docker 20.10.0 ou versão posterior reserva no mínimo 6 MiB de memória para um contêiner. Por isso, não especifique menos de 6 MiB de memória para os seus contêineres.
O daemon para Docker 19.03.13-ce ou versão anterior reserva no mínimo 4 MiB de memória para um contêiner. Por isso, não especifique menos de 4 MiB de memória para os seus contêineres.
nota
Se você deseja maximizar a utilização de recursos fornecendo às tarefas o máximo de memória possível para um determinado tipo de instância, consulte Instância de contêiner Gerenciamento de memória.
Mapeamentos de porta
portMappings
-
Tipo: matriz de objeto
Obrigatório: não
Os mapeamentos de porta permitem que os contêineres acessem portas na instância de contêiner host para enviar ou receber tráfego.
Para definições de tarefa que usam o modo de rede
awsvpc
, apenas especifiquecontainerPort
. AhostPort
pode ser deixada em branco ou ser o mesmo valor decontainerPort
.Os mapeamentos de porta no Windows usam o endereço de gateway
NetNAT
, e não olocalhost
. Como não há loopback para mapeamentos de porta no Windows, não é possível acessar a porta mapeada de um contêiner no próprio host.A maioria dos campos desse parâmetro (
containerPort
,hostPort
,protocol
) é mapeada paraPortBindings
na seção Criar um contêinerda API remota do Docker e a opção --publish
para docker run. Caso o modo de rede de uma definição de tarefa seja definido como host
, as portas host devem ser indefinidas ou corresponder à porta de contêiner no mapeamento de porta.nota
Quando a tarefa obter o status
RUNNING
, as atribuições automáticas e manuais da porta do contêiner e do host estarão visíveis nos seguintes locais:-
Console: a seção Network Bindings (Associações de rede) de uma descrição de contêiner para uma tarefa selecionada.
-
AWS CLI: a seção
networkBindings
do resultado do comando describe-tasks. -
API: a resposta
DescribeTasks
. -
Metadados: o endpoint de metadados da tarefa.
appProtocol
-
Tipo: sequência
Obrigatório: não
O protocolo da aplicação usado no mapeamento da porta. Esse parâmetro só se aplica ao Service Connect. Recomendamos que você defina esse parâmetro para que seja consistente com o protocolo usado por sua aplicação. Se você definir esse parâmetro, o Amazon ECS adicionará o tratamento de conexão específico do protocolo ao proxy de conexão do serviço. Se você definir esse parâmetro, o Amazon ECS adicionará telemetria específica do protocolo no console do Amazon ECSCloudWatch e.
Se você não definir um valor para esse parâmetro, o TCP será usado. No entanto, o Amazon ECS não adiciona telemetria específica de protocolo para TCP.
Para obter mais informações, consulte Service Connect .
Valores de protocolo válidos:
"HTTP" | "HTTP2" | "GRPC"
containerPort
-
Tipo: inteiro
Obrigatório: sim, quando
portMappings
são usadosO número da porta no contêiner vinculado à porta host atribuída automaticamente ou especificada pelo usuário.
Se você estiver usando contêineres em uma tarefa com o tipo de inicialização do Fargate, as portas expostas deverão ser especificadas usando
containerPort
.Para contêineres Windows no Fargate, não é possível usar a porta 3150 para
containerPort
. Isso acontece porque ela está reservada.Se você estiver usando contêineres em uma tarefa com o tipo de inicialização do EC2 e especificar uma porta de contêiner e não uma porta de host, seus contêineres receberão automaticamente uma porta de host no intervalo de portas temporárias. Para obter mais informações, consulte
hostPort
. Os mapeamentos de porta atribuídos automaticamente dessa maneira não contam para o limite de 100 portas reservadas de uma instância de contêiner. containerPortRange
-
Tipo: sequência
Obrigatório: não
O intervalo de números de porta no contêiner vinculado ao intervalo de portas host mapeado dinamicamente.
Você só pode definir esse parâmetro usando a API
register-task-definition
. A opção está disponível no parâmetroportMappings
. Para obter mais informações, consulte register-task-definition na AWS Command Line Interface Referência.As regras a seguir se aplicam quando você especifica um
containerPortRange
:-
Você deve usar o modo de rede
bridge
ou o modo de redeawsvpc
. Esse parâmetro está disponível para os tipos de execução do EC2 e do AWS Fargate.
Esse parâmetro está disponível para os sistemas operacionais Windows e Linux.
-
A instância de contêiner deve ter pelo menos a versão 1.67.0 do agente do contêiner e pelo menos a versão 1.67.0-1 do pacote
ecs-init
-
Você pode especificar no máximo 100 intervalos de portas por contêiner.
-
Você não especifica um
hostPortRange
. O valor dohostPortRange
é definido da seguinte forma:-
Para contêineres em uma tarefa com o modo de rede
awsvpc
, ohostPort
é definido com o mesmo valor quecontainerPort
. Essa é uma estratégia de mapeamento estático. -
Para contêineres em uma tarefa com o modo de rede
bridge
, o agente do Amazon ECS encontra portas de host abertas no intervalo temporário padrão e as passa ao Docker para vinculá-las às portas do contêiner.
-
-
Os valores válidos de
containerPortRange
estão entre 1 e 65535. -
Uma porta só pode ser incluída em um mapeamento de portas por contêiner.
-
Não é possível especificar intervalos de portas sobrepostos.
-
A primeira porta no intervalo deve ser menor que a última porta no intervalo.
-
O Docker recomenda que você desative o docker-proxy no arquivo de configuração do daemon do Docker quando tiver um grande número de portas.
Para obter mais informações, consulte Issue #11185
(Problema n.º 11185) no site do GitHub. Para obter informações sobre como desativar o docker-proxy no arquivo de configuração do daemon do Docker, consulte Docker daemon (Daemon do Docker) no Guia do desenvolvedor do Amazon ECS.
Você pode chamar
DescribeTasks
para ver ohostPortRange
que são as portas do host vinculadas às portas do contêiner.Os intervalos de portas não estão incluídos nos eventos de tarefas do Amazon ECS para os quais são enviadosEventBridge. Para obter mais informações, consulte Eventos do Amazon ECS eEventBridge.
-
hostPortRange
-
Tipo: sequência
Obrigatório: não
O intervalo de números de portas no host que é usado com a vinculação de rede. Isso é atribuído pelo Docker e entregue pelo agente do Amazon ECS.
hostPort
-
Tipo: inteiro
Obrigatório: não
O número da porta na instância de contêiner a ser reservado para o contêiner.
Se você estiver usando contêineres em uma tarefa com o tipo de inicialização do Fargate o
hostPort
poderá ser deixado em branco ou ter o mesmo valor decontainerPort
.Se você estiver usando contêineres em uma tarefa com o tipo de inicialização do EC2, poderá especificar uma porta de host não reservada para o mapeamento da porta do contêiner (conhecido como mapeamento estático da porta do host) ou poderá omitir a
hostPort
(ou defini-la como0
) enquanto especifica umacontainerPort
e o contêiner receberá automaticamente uma porta (conhecido como mapeamento dinâmico da porta do host) no intervalo de portas temporárias para o sistema operacional da instância do contêiner e a versão do Docker.O intervalo de portas efêmero padrão para a versão 1.6.0 e posterior do Docker é listado na instância em
/proc/sys/net/ipv4/ip_local_port_range
. Se esse parâmetro do kernel não estiver disponível, será usado o intervalo de portas temporárias padrão de49153–65535
. Não tente especificar uma porta de host no intervalo de portas transitório. Isso ocorre porque essas portas são reservadas para atribuição automática. Em geral, as portas abaixo de32768
estão fora do intervalo de portas efêmero.As portas reservadas padrão são
22
para SSH, as portas do Docker2375
e2376
e as portas51678-51680
do agente de contêiner do Amazon ECS. Qualquer porta host que tenha sido especificada pelo usuário anteriormente para uma tarefa em execução também é reservada enquanto a tarefa está em execução (depois que uma tarefa para, a porta host é liberada). As portas reservadas são exibidas na janelaremainingResources
da saída de describe-container-instances, e uma instância de contêiner pode ter até 100 portas reservadas de cada vez, incluindo as portas reservadas padrão. As portas atribuídas automaticamente não contam em relação ao limite de 100 portas reservadas. name
-
Tipo: string
Obrigatório: não, obrigatório para que o Service Connect seja configurado em um serviço
Nome que é usado para o mapeamento da porta. Esse parâmetro só se aplica ao Service Connect. Esse parâmetro é o nome que você usa na configuração do Service Connect de um serviço.
Para obter mais informações, consulte Service Connect .
No exemplo a seguir, os dois campos obrigatórios para o Service Connect são mostrados.
"portMappings": [ { "name":
string
, "containerPort":integer
} ] protocol
-
Tipo: sequência
Obrigatório: não
O protocolo usado no mapeamento da porta. Os valores válidos são
tcp
eudp
. O padrão étcp
.Importante
Só
tcp
é compatível com o Service Connect. Lembre-se de quetcp
estará implícito se esse campo não estiver definido.Importante
O suporte a UDP só está disponível em instâncias de contêiner que foram iniciadas com a versão 1.2.0 ou posterior do agente de contêiner do Amazon ECS (como a AMI
amzn-ami-2015.03.c-amazon-ecs-optimized
) ou com agentes de contêiner que tenham sido atualizados para a versão 1.3.0 ou posterior. Para atualizar o agente de contêiner para a versão mais recente, consulte Atualizar o agente de contêiner do Amazon ECS.
Caso você esteja especificando uma porta host, use a seguinte sintaxe:
"portMappings": [ { "containerPort": integer, "hostPort": integer } ... ]
Caso você queira uma porta host atribuída automaticamente, use a seguinte sintaxe:
"portMappings": [ { "containerPort": integer } ... ]
-
Parâmetros avançados de definição de contêiner
Os parâmetros avançados de definição de contêiner a seguir fornecem recursos estendidos ao comando docker run
Tópicos
Verificação de integridade
healthCheck
-
O comando da verificação de integridade de contêiner e os parâmetros de configuração associados para o contêiner. Esse parâmetro é mapeado para
HealthCheck
na seção Create a containerda Docker Remote API e o parâmetro HEALTHCHECK
de docker run. nota
O agente de contêiner do Amazon ECS apenas monitora e comunica as verificações de integridade especificadas na definição da tarefa. O Amazon ECS não monitora as verificações de integridade do Docker incorporadas em uma imagem do contêiner, mas não especificadas na definição do contêiner. Os parâmetros de verificação de integridade especificados em uma definição de contêiner substituem as verificações de integridade do Docker existentes na imagem do contêiner.
Você pode visualizar o status de integridade de contêineres individuais e de uma tarefa com a operação daDescribeTasks API ou ao visualizar os detalhes da tarefa no console.
Os itens a seguir descrevem os valores possíveis de
healthStatus
para um contêiner.-
HEALTHY
: a verificação de integridade do contêiner foi aprovada. -
UNHEALTHY
: a verificação de integridade do contêiner falhou. -
UNKNOWN
: a verificação de integridade do contêiner está sendo avaliada ou não há verificações de integridade do contêiner definidas.
Os itens a seguir descrevem os valores possíveis de
healthStatus
para uma tarefa. O status da verificação de integridade de contêineres não essenciais não afeta o status de integridade de uma tarefa.-
HEALTHY
: todos os contêineres essenciais dentro da tarefa foram aprovados nas verificações de integridade. -
UNHEALTHY
: um ou mais contêineres essenciais foram reprovados nas verificações de integridade. -
UNKNOWN
—Os contêineres essenciais dentro da tarefa ainda estão tendo as verificações de integridade avaliadas, existem somente contêineres não essenciais com verificações de integridade definidas ou não há verificações de integridade do contêiner definidas.
Se uma tarefa for executada manualmente e não como parte de um serviço, ela continuará seu ciclo de vida independentemente do status de integridade. Para as tarefas que fazem parte de um serviço, se a tarefa for informada como não íntegra, ela será interrompida, e o programador de serviço a substituirá.
Veja a seguir observações sobre a compatibilidade de verificação de integridade do contêiner.
-
As verificações de integridade do contêiner exigem a versão 1.17.0 ou posterior do agente de contêiner do Amazon ECS. Para obter mais informações, consulte Atualizar o agente de contêiner do Amazon ECS.
-
As verificações de integridade do contêiner são compatíveis com tarefas do Fargate se você está usando a versão 1.1.0 ou posterior da plataforma Linux. Para obter mais informações, consulte Versões da plataforma AWS Fargate.
command
-
Uma matriz de strings que representa o comando executado pelo contêiner para determinar se ela está íntegra. A matriz de strings pode começar com
CMD
para executar os argumentos de comando diretamente ouCMD-SHELL
para executar o comando com o shell padrão do contêiner. Se nenhuma for especificado,CMD
será usada.Ao registrar uma definição de tarefa no AWS Management Console, use uma lista de comandos separados por vírgulas que é automaticamente convertida em uma string após a criação da definição de tarefa. Veja a seguir um exemplo de entrada para uma verificação de integridade.
CMD-SHELL, curl -f http://localhost/ || exit 1
Ao registrar uma definição de tarefa usando o painel JSON do AWS Management Console, a AWS CLI ou as APIs, você deve estabelecer a lista de comandos entre colchetes. Veja a seguir um exemplo de entrada para uma verificação de integridade.
[ "CMD-SHELL", "curl -f http://localhost/ || exit 1" ]
Um código de saída 0, sem saída de
stderr
, indica sucesso, e um código de saída diferente de zero indica falha. Para obter mais informações, consulteHealthCheck
na seção Criar um contêinerda the API remota do Docker . interval
-
O período em segundos entre cada verificação de integridade. É possível especificar entre 5 e 300 segundos. O valor padrão de é 30 segundos.
timeout
-
O período de espera (em segundos) para que uma verificação de integridade seja bem-sucedida antes de ser considerada uma falha. É possível especificar entre 2 e 60 segundos. O valor de padrão é de 5 segundos.
retries
-
O número de novas tentativas de uma verificação de integridade com falha até o contêiner ser considerado não íntegro. É possível especificar entre 1 e 10 novas tentativas. O valor padrão é três novas tentativas.
startPeriod
-
O período de carência opcional para que os contêineres possam inicializar antes de as verificações de integridade com falha serem contabilizadas no número máximo de novas tentativas. É possível especificar entre 0 e 300 segundos. Por padrão, o
startPeriod
está desabilitado.
-
Ambiente
cpu
-
Tipo: inteiro
Obrigatório: condicional
O número de unidades de
cpu
que o agente de contêiner do Amazon ECS reservará para o contêiner. No Linux, esse parâmetro é mapeado paraCpuShares
na seção Criar um contêinerda API remota do Docker e a opção --cpu-shares
para docker run. Este campo é opcional para tarefas que usam o tipo de inicialização do Fargate. A quantidade total de CPU reservada para todos os contêineres dentro da tarefa deve ser menor que o valor
cpu
de nível da tarefa.nota
Você pode determinar o número de unidades de CPU disponíveis por tipo de instância do Amazon EC2 multiplicando o número de vCPUs listadas para esse tipo de instância na página de detalhes Amazon EC2 Instances
(Instâncias do Amazon EC2) por 1.024. Os contêineres do Linux compartilham unidades de CPU não alocadas com outros contêineres na instância de contêiner que tem a mesma proporção que a respectiva quantidade alocada. Por exemplo, suponha que você execute uma tarefa de contêiner único em um tipo de instância de núcleo único com 512 unidades de CPU especificadas para esse contêiner e essa seja a única tarefa em execução na instância de contêiner. Nesse exemplo, o contêiner pode utilizar o compartilhamento total de 1.024 unidades de CPU a qualquer momento. Porém, suponha que você tenha iniciado outra cópia da mesma tarefa nessa instância de contêiner. Cada tarefa tem uma garantia mínima de 512 unidades de CPU quando necessário, e cada contêiner pode flutuar para maior utilização da CPU quando o outro contêiner não a estiver utilizando. Porém, se ambas as tarefas estiverem 100% ativas o tempo todo, elas ficarão limitadas a 512 unidades de CPU.
Nas instâncias de contêiner do Linux, o daemon do Docker na instância de contêiner usa o valor de CPU para calcular as proporções de compartilhamento de CPU para contêineres em execução. Para obter mais informações, consulte CPU share constraint
na documentação do Docker. O valor mínimo válido de compartilhamento da CPU permitido pelo kernel do Linux é 2. No entanto, o parâmetro de CPU não é necessário, e é possível usar valores de CPU abaixo de dois em suas definições de contêiner. Para valores de CPU abaixo de 2 (inclusive nulo), o comportamento varia com base na versão do agente de contêiner do Amazon ECS: -
Versões de agente <= 1.1.0: os valores de CPU nulo e zero são passados para o Docker como 0, que o Docker acaba convertendo em 1.024 compartilhamentos de CPU. Os valores de CPU de 1 são passados para o Docker como 1, que o kernel do Linux converte para dois compartilhamentos de CPU.
-
Versões de agente >= 1.2.0: os valores nulo, zero e de CPU de 1 são passados para o Docker como dois compartilhamentos de CPU.
Nas instâncias de contêiner do Windows, o limite de CPU é imposto como uma cota absoluta. Os contêineres do Windows só têm acesso à quantidade de CPU especificada na definição de tarefa. Um valor de CPU nulo ou zero é transmitido para o Docker como
0
, que o Windows interpreta como 1% de uma CPU.Para obter exemplos adicionais, consulte Como o Amazon ECS gerencia recursos de CPU e memória
. -
gpu
-
Tipo: objeto ResourceRequirement
Obrigatório: não
O número de
GPUs
físicas que o agente de contêiner do Amazon ECS reservará para o contêiner. O número de GPUs reservadas para todos os contêineres em uma tarefa não deve exceder o número de GPUs disponíveis na instância de contêiner na qual a tarefa é executada. Para obter mais informações, consulte Trabalhar com GPUs no Amazon ECS.nota
Esse parâmetro não tem suporte para contêineres do Windows ou contêineres hospedados no Fargate.
Elastic Inference accelerator
-
Tipo: objeto ResourceRequirement
Obrigatório: não
Para o tipo
InferenceAccelerator
, ovalue
corresponde aodeviceName
para umInferenceAccelerator
especificado em uma definição de tarefa. Para obter mais informações, consulte Nome do acelerador de inferência elástica.nota
A partir de 15 de abril de 2023, a AWS não integrará novos clientes ao Amazon Elastic Inference (EI) e ajudará os clientes atuais a migrar suas workloads para opções que ofereçam melhores preço e desempenho. Depois de 15 de abril de 2023, os novos clientes não poderão iniciar instâncias com aceleradores Amazon EI na AmazonSageMaker, Amazon ECS ou Amazon EC2. No entanto, os clientes que tenham usado o Amazon EI pelo menos uma vez durante os últimos 30 dias serão considerados clientes atuais e poderão continuar usando o serviço.
nota
Esse parâmetro não é suportado para contêineres do Windows ou contêineres hospedados no Fargate.
essential
-
Tipo: booliano
Obrigatório: não
Caso o parâmetro
essential
de um contêiner esteja marcado comotrue
e esse contêiner falhe ou pare por algum motivo, todos os outros contêineres que fazem parte da tarefa são parados. Caso o parâmetroessential
de um contêiner esteja marcado comofalse
, a falha não afeta o restante dos contêineres em uma tarefa. Caso esse parâmetro seja omitido, um contêiner pressupõe-se que um contêiner seja essencial.Todas as tarefas devem ter pelo menos um contêiner essencial. Caso tenha um aplicativo composto de vários contêineres, agrupe contêineres usados com uma finalidade em comum em componentes e separar os componentes diferentes em várias definições de tarefa. Para obter mais informações, consulte Arquitetura da aplicação.
"essential": true|false
entryPoint
-
Importante
As versões anteriores do agente de contêiner do Amazon ECS não lidam corretamente com parâmetros
entryPoint
. Caso você enfrente problemas para usarentryPoint
, atualize o agente de contêiner ou informe os comandos e os argumentos como itens de matrizcommand
em vez disso.Tipo: matriz de strings
Obrigatório: não
O ponto de entrada passado para o contêiner. Esse parâmetro é mapeado para
Entrypoint
na seção Criar um contêinerda API remota do Docker e a opção --entrypoint
para docker run. Para obter mais informações sobre o parâmetro ENTRYPOINT
do Docker, consulte https://docs.docker.com/engine/reference/builder/#entrypoint. "entryPoint": ["string", ...]
command
-
Tipo: matriz de strings
Obrigatório: não
O comando que é passado para o contêiner. Esse parâmetro é mapeado para
Cmd
na seção Criar um contêinerda API remota do Docker e o parâmetro COMMAND
de docker run. Para obter mais informações sobre o parâmetro CMD
do Docker, consulte https://docs.docker.com/engine/reference/builder/#cmd. Se houver vários argumentos, certifique-se de que cada um seja uma string separada na matriz. "command": ["string", ...]
workingDirectory
-
Tipo: sequência
Obrigatório: não
O diretório de trabalho no qual executar comandos no contêiner. Esse parâmetro é mapeado para
WorkingDir
na seção Criar um contêinerda API remota do Docker e a opção --workdir
para docker run. "workingDirectory": "string"
environmentFiles
-
Tipo: matriz de objeto
Obrigatório: não
Uma lista de arquivos que contêm as variáveis de ambiente a serem passadas para um contêiner. Esse parâmetro é mapeado para a opção
--env-file
para o docker run. Isso não está disponível para contêineres do Windows.
Você pode especificar até dez arquivos de ambiente. O arquivo deve ter uma extensão
.env
. Cada linha em um arquivo de ambiente contém uma variável de ambiente no formatoVARIABLE=VALUE
. As linhas que começam com#
são tratadas como comentários e são ignoradas. Para obter mais informações sobre a sintaxe de arquivos de variáveis de ambiente apropriadas, consulte Declarar variáveis de ambiente padrão em arquivo. Se houver variáveis de ambiente individuais especificadas na definição de contêiner, elas terão precedência sobre as variáveis contidas em um arquivo de ambiente. Se forem especificados vários arquivos de ambiente que contenham a mesma variável, elas serão processadas de cima para baixo. Recomendamos usar nomes de variáveis exclusivos. Para obter mais informações, consulte Passar variáveis de ambiente para um contêiner.
environment
-
Tipo: matriz de objeto
Obrigatório: não
As variáveis de ambiente a serem passadas para um contêiner. Esse parâmetro é mapeado para
Env
na seção Criar um contêinerda API remota do Docker e a opção --env
para docker run. Importante
Não recomendamos o uso de variáveis de ambiente de texto simples para informações confidenciais, tais como dados de credenciais.
"environment" : [ { "name" : "string", "value" : "string" }, { "name" : "string", "value" : "string" } ]
secrets
-
Tipo: matriz de objeto
Obrigatório: não
Um objeto que representa o segredo a ser exposto ao seu contêiner. Para obter mais informações, consulte Passar dados confidenciais para um contêiner.
name
-
Tipo: String
Obrigatório: sim
O valor a ser definido como a variável de ambiente no contêiner.
valueFrom
-
Tipo: String
Obrigatório: sim
O segredo a ser exposto ao contêiner. Os valores com suporte são o nome do recurso da Amazon (ARN) completo do segredo do AWS Secrets Manager ou o ARN completo do parâmetro no Parameter Store do AWS Systems Manager.
nota
Se o parâmetro do Systems Manager Parameter Store existir na mesma Região da AWS da tarefa que você está iniciando, você poderá usar o ARN completo ou o nome do segredo. Se o parâmetro existir em uma região diferente, o ARN completo deverá ser especificado.
"secrets": [ { "name": "environment_variable_name", "valueFrom": "arn:aws:ssm:
region
:aws_account_id
:parameter/parameter_name
" } ]
Network settings (Configurações de rede)
disableNetworking
-
Tipo: booliano
Obrigatório: não
Quando esse parâmetro é verdadeiro, a rede é desativada dentro do contêiner. Este parâmetro é mapeado para
NetworkDisabled
na seção Create a containerda Docker Remote API . nota
Esse parâmetro não oferece suporte para contêineres do Windows ou tarefas que usam o modo de rede
awsvpc
."disableNetworking": true|false
links
-
Tipo: matriz de strings
Obrigatório: não
O parâmetro
link
permite que os contêineres se comuniquem entre si sem a necessidade de mapeamentos de porta. Só haverá suporte se o modo de rede de uma definição de tarefa for definido comobridge
. O construtoname:internalName
é igual aoname:alias
em links do Docker. São permitidos até 255 letras (caixa alta e baixa), números, hífens e sublinhados. Para obter mais informações sobre como vincular contêineres do Docker, consulte https://docs.docker.com/engine/userguide/networking/default_network/dockerlinks/. Esse parâmetro é mapeado para Links
na seção Criar um contêinerda API remota do Docker e a opção --link
para docker run. nota
Esse parâmetro não oferece suporte para contêineres do Windows ou tarefas que usam o modo de rede
awsvpc
.Importante
Os contêineres colocados na mesma instância de contêiner podem ser capazes de se comunicar entre si sem exigir links ou mapeamentos de porta host. O isolamento de rede em uma instância de contêiner é controlado por grupos de segurança e configurações de VPC.
"links": ["name:internalName", ...]
hostname
-
Tipo: string
Obrigatório: não
O nome de host a ser usado para o contêiner. Esse parâmetro é mapeado para
Hostname
na seção Criar um contêinerda API remota do Docker e a opção --hostname
para docker run. nota
Se você estiver usando o modo de rede
awsvpc
, o parâmetrohostname
não terá suporte."hostname": "string"
dnsServers
-
Tipo: matriz de strings
Obrigatório: não
Uma lista de servidores DNS apresentados ao contêiner. Esse parâmetro é mapeado para
Dns
na seção Criar um contêinerda API remota do Docker e a opção --dns
para docker run. nota
Esse parâmetro não oferece suporte para contêineres do Windows ou tarefas que usam o modo de rede
awsvpc
."dnsServers": ["string", ...]
dnsSearchDomains
-
Tipo: matriz de strings
Obrigatório: não
Padrão: ^[a-zA-Z0-9-.]{0,253}[a-zA-Z0-9]$
Uma lista de domínios de pesquisa DNS apresentados ao contêiner. Esse parâmetro é mapeado para
DnsSearch
na seção Criar um contêinerda API remota do Docker e a opção --dns-search
para docker run. nota
Esse parâmetro não tem suporte para contêineres do Windows ou tarefas que usam o modo de rede
awsvpc
."dnsSearchDomains": ["string", ...]
extraHosts
-
Tipo: matriz de objeto
Obrigatório: não
Uma lista de nomes de host e mapeamentos de endereço IP a ser acrescentada ao arquivo
/etc/hosts
no contêiner.Esse parâmetro é mapeado para
ExtraHosts
na seção Criar um contêinerda API remota do Docker e a opção --add-host
para docker run. nota
Esse parâmetro não tem suporte para contêineres do Windows ou tarefas que usam o modo de rede
awsvpc
."extraHosts": [ { "hostname": "string", "ipAddress": "string" } ... ]
Armazenamento e registro
readonlyRootFilesystem
-
Tipo: booliano
Obrigatório: não
Quando esse parâmetro é verdadeiro, o contêiner recebe acesso somente leitura ao sistema de arquivos raiz. Esse parâmetro é mapeado para
ReadonlyRootfs
na seção Criar um contêinerda API remota do Docker e a opção --read-only
para docker run. nota
Este parâmetro não é compatível com contêineres do Windows.
"readonlyRootFilesystem": true|false
mountPoints
-
Tipo: matriz de objeto
Obrigatório: não
Os pontos de montagem para volumes de dados no contêiner.
Esse parâmetro é mapeado para
Volumes
na seção Criar um contêinerda API remota do Docker e a opção --volume
para docker run. Os contêineres do Windows podem montar diretórios inteiros na mesma unidade como
$env:ProgramData
. Os contêineres do Windows não podem montar diretórios em uma unidade diferente, e o ponto de montagem não pode ser entre unidades.sourceVolume
-
Tipo: String
Exigido: Sim, quando
mountPoints
são usadosO nome do volume a ser montado.
containerPath
-
Tipo: String
Exigido: Sim, quando
mountPoints
são usadosO caminho no contêiner no qual montar o volume.
readOnly
-
Tipo: booliano
Obrigatório: não
Caso o valor seja
true
, o contêiner tem acesso somente leitura ao volume. Caso esse valor sejafalse
, o contêiner pode gravar no volume. O valor padrão éfalse
.
volumesFrom
-
Tipo: matriz de objeto
Obrigatório: não
Volumes de dados a serem montados de outro contêiner. Esse parâmetro é mapeado para
VolumesFrom
na seção Criar um contêinerda API remota do Docker e a opção --volumes-from
para docker run. sourceContainer
-
Tipo: string
Obrigatório: sim, quando
volumesFrom
for usadoO nome do contêiner com base no qual montar volumes.
readOnly
-
Tipo: booliano
Obrigatório: não
Caso o valor seja
true
, o contêiner tem acesso somente leitura ao volume. Caso esse valor sejafalse
, o contêiner pode gravar no volume. O valor padrão éfalse
.
"volumesFrom": [ { "sourceContainer": "string", "readOnly": true|false } ]
logConfiguration
-
Tipo: LogConfigurationObjeto
Obrigatório: não
A especificação de configuração do log para o contêiner.
Para obter definições de tarefa de exemplo que usam uma configuração de log, consulte Exemplos de definições de tarefa.
Esse parâmetro é mapeado para
LogConfig
na seção Criar um contêinerda API remota do Docker e a opção --log-driver
paradocker run
. Por padrão, os contêineres usam o mesmo driver de registro que o daemon do Docker usa. No entanto, o contêiner pode usar um driver de registro diferente do daemon do Docker especificando um driver de log com esse parâmetro na definição de contêiner. Para usar um driver de registro em log diferente para um contêiner, o sistema de log deve ser configurado corretamente na instância de contêiner (ou em um servidor de log diferente para opções de registro em log remotas). Para obter mais informações sobre as opções para drivers de log compatíveis diferentes, consulte Configure logging drivers na documentação do Docker. Considere o seguinte ao especificar uma configuração de log para seus contêineres:
-
No momento, o Amazon ECS oferece suporte a um subconjunto de drivers de registro em log disponíveis para o daemon do Docker (mostrado nos valores válidos abaixo). Os drivers de log adicionais podem estar disponíveis em versões futuras do agente de contêiner do Amazon ECS.
-
Esse parâmetro requer que a versão 1.18 ou posterior da API remota do Docker na sua instância de contêiner.
-
Para tarefas que usam o tipo de inicialização do EC2, o agente de contêiner do Amazon ECS em execução em uma instância de contêiner deve registrar os drivers de registro disponíveis nesta instância com a variável de ambiente
ECS_AVAILABLE_LOGGING_DRIVERS
antes que os contêineres colocados nesta instância possam usar essas opções de configuração de log. Para obter mais informações, consulte Configuração do agente de contêiner do Amazon ECS. -
Para tarefas que usam o tipo de inicialização do Fargate, como você não tem acesso à infraestrutura subjacente na qual suas tarefas estão hospedadas, qualquer software adicional necessário terá que ser instalado fora da tarefa. Por exemplo, os agregadores de saída Fluentd ou um host remoto executando o Logstash para o qual enviar logs Gelf.
"logConfiguration": { "logDriver": "awslogs","fluentd","gelf","json-file","journald","logentries","splunk","syslog","awsfirelens", "options": {"
string
": "string
" ...}, "secretOptions": [{ "name": "string
", "valueFrom": "string
" }] }logDriver
-
Tipo: string
Valores válidos:
"awslogs","fluentd","gelf","json-file","journald","logentries","splunk","syslog","awsfirelens"
Obrigatório: sim, quando
logConfiguration
for usadoO driver de log a ser usado para o contêiner. Por padrão, os valores válidos listados anteriormente são drivers de log com os quais o agente de contêiner do Amazon ECS pode se comunicar.
Para tarefas que usam o tipo de inicialização do Fargate, os drivers de log compatíveis são
awslogs
,splunk
eawsfirelens
.Para tarefas que usam o tipo de inicialização do EC2, os drivers de log compatíveis são
awslogs
,fluentd
,gelf
,json-file
,journald
,logentries
,syslog
,splunk
eawsfirelens
.Para obter mais informações sobre como usar o driver de
awslogs
log em definições de tarefa para enviar os logs de contêiner aosCloudWatch Logs, consulteUsar o driver de log awslogs.Para obter mais informações sobre como usar o driver de log
awsfirelens
, consulte Roteamento de logs personalizados.nota
Se tiver um driver personalizado que não esteja listado acima, você poderá bifurcar o projeto do agente de contêiner do Amazon ECS que está disponível noGitHub
e personalizá-lo para funcionar com esse driver. Incentivamos você a enviar solicitações pull para alterações que você gostaria de ter incluído. Porém, no momento, não oferecemos suporte à execução de cópias modificadas desse software. Este parâmetro requer que a versão 1.18 da API remota do Docker ou posterior em sua instância de contêiner.
options
-
Tipo: mapa string para string
Obrigatório: não
As opções de configuração a serem enviadas para o driver de log.
Quando você usaFireLens para encaminhar logs para umAWS serviço da ou destino da Rede deAWS Parceiros da (APN) para armazenamento e análise de logs, pode definir a
log-driver-buffer-limit
opção de limitar o número de eventos em buffer na memória antes do envio ao contêiner do roteador de logs. Isso pode ajudar a resolver possíveis problemas de perda de logs, porque o alto throughput pode resultar na falta de memória para o buffer dentro do Docker. Para obter mais informações, consulte Limite do buffer do Fluentd.Este parâmetro requer que a versão 1.19 da API remota do Docker ou posterior em sua instância de contêiner.
secretOptions
-
Tipo: matriz de objeto
Obrigatório: não
Um objeto que representa o segredo a ser passado para a configuração de log. Segredos usados na configuração de log podem incluir, por exemplo, tokens de autenticação, certificados ou chaves de criptografia.) Para obter mais informações, consulte Passar dados confidenciais para um contêiner.
name
-
Tipo: String
Obrigatório: sim
O valor a ser definido como a variável de ambiente no contêiner.
valueFrom
-
Tipo: String
Obrigatório: sim
O segredo a ser exposto à configuração de log do contêiner.
"logConfiguration": { "logDriver": "splunk", "options": { "splunk-url": "https://cloud.splunk.com:8080", "splunk-token": "...", "tag": "...", ... }, "secretOptions": [{ "name": "
splunk-token
", "valueFrom": "/ecs/logconfig/splunkcred
" }] }
-
firelensConfiguration
-
Tipo: FirelensConfigurationObjeto
Obrigatório: não
AFireLens configuração do contêiner. Isso é usado para especificar e configurar um roteador de log para logs de contêiner. Para obter mais informações, consulte Roteamento de logs personalizados.
{ "firelensConfiguration": { "type": "fluentd", "options": { "KeyName": "" } } }
options
-
Tipo:: mapa de string para string
Obrigatório: não
As opções a serem usadas ao configurar o roteador de log. Esse campo é opcional e pode ser usado para especificar um arquivo de configuração personalizado ou para adicionar outros metadados, como a tarefa, a definição de tarefa, o cluster e detalhes da instância de contêiner ao evento de log. Se especificado, a sintaxe a ser usada é
"options":{"enable-ecs-log-metadata":"true|false","config-file-type:"s3|file","config-file-value":"arn:aws:s3:::mybucket/fluent.conf|filepath"}
. Para obter mais informações, consulte Criação de uma definição de tarefa que use uma configuração do FireLens. type
-
Tipo: String
Obrigatório: sim
O roteador de log a ser usado. Os valores válidos são
fluentd
oufluentbit
.
Segurança
Para obter mais informações sobre a segurança de contêiner, consulte Task and container security (Segurança de tarefas e contêineres) no Guia de práticas recomendadas do Amazon ECS.
privileged
-
Tipo: booliano
Obrigatório: não
Quando esse parâmetro é verdadeiro, o contêiner recebe privilégios elevados na instância de contêiner host (semelhante ao usuário
root
). Não recomendamos operar contêineres comprivileged
. Na maioria dos casos, é possível especificar os privilégios exatos necessários usando os parâmetros específicos em vez deprivileged
.Esse parâmetro é mapeado para
Privileged
na seção Criar um contêinerda API remota do Docker e a opção --privileged
para docker run. nota
Esse parâmetro não é compatível com os contêineres do Windows ou tarefas que usam o tipo de inicialização Fargate.
"privileged": true|false
user
-
Tipo: string
Obrigatório: não
O usuário a ser utilizado dentro do contêiner. Esse parâmetro é mapeado para
User
na seção Criar um contêinerda API remota do Docker e a opção --user
para docker run. Importante
Ao executar tarefas que usam o modo de rede
host
, não execute contêineres usando o usuário raiz (UID 0). Como uma prática recomendada de segurança, sempre utilize um usuário não raiz.É possível especificar o
user
usando os formatos a seguir. Se especificar um UID ou um GID, você deverá especificá-lo como um número inteiro positivo.-
user
-
user:group
-
uid
-
uid:gid
-
user:gid
-
uid:group
nota
Este parâmetro não é compatível com contêineres do Windows.
"user": "string"
-
dockerSecurityOptions
-
Tipo: matriz de strings
Valores válidos:no-new-privileges "" | “apparmor:PROFILE” | “rótulo:
valor
" | “credentialspec:CredentialSpecFilePath
”Obrigatório: não
Uma lista de strings para fornecer configuração personalizada para vários sistemas de segurança. Para obter mais informações sobre valores válidos, consulte Configuração de segurança na execução do Docker
. Esse campo não é válido para contêineres em tarefas usando o tipo de inicialização Fargate. Para tarefas do Linux no EC2, esse parâmetro pode ser usado para fazer referência a rótulos personalizados para SELinux e sistemasAppArmor de segurança multinível.
Para qualquer tarefa no EC2, esse parâmetro pode ser usado para fazer referência a um arquivo de especificação de credenciais que configura um contêiner para autenticação do Active Directory. Para ter mais informações, consulte Utilização do gMSAs para contêineres do Windows e Usando GMSAs para contêineres Linux.
Esse parâmetro é mapeado para
SecurityOpt
na seção Criar um contêinerda API remota do Docker e a opção --security-opt
para docker. "dockerSecurityOptions": ["string", ...]
nota
O agente de contêiner do Amazon ECS em execução em uma instância de contêiner deve se registrar com as variáveis de ambiente
ECS_SELINUX_CAPABLE=true
ouECS_APPARMOR_CAPABLE=true
para contêineres colocados nessa instância possam usar essas opções de segurança. Para obter mais informações, consulte Configuração do agente de contêiner do Amazon ECS.
Limites de recurso
ulimits
-
Tipo: matriz de objeto
Obrigatório: não
Lista de valores
ulimit
a serem definidos para um contêiner. Esse valor substitui a configuração de cota de recursos padrão do sistema operacional. Esse parâmetro é mapeado paraUlimits
na seção Criar um contêinerda API remota do Docker e a opção --ulimit
para docker run. As tarefas do Amazon ECS hospedadas no Fargate usam os valores de limite de recursos padrão limitados pelo sistema operacional, com exceção do parâmetro de limite de recursos
nofile
, que é substituído pelo Fargate. O limite de recursosnofile
define uma restrição sobre o número de arquivos abertos que um contêiner pode usar. O limite flexívelnofile
padrão é1024
e o limite rígido é4096
. Você pode definir os valores de ambos os limites até1048576
. Para obter mais informações, consulte Limites de recursos de tarefa.Este parâmetro requer que a versão 1.18 da API remota do Docker ou posterior em sua instância de contêiner.
nota
Este parâmetro não é compatível com contêineres do Windows.
"ulimits": [ { "name": "core"|"cpu"|"data"|"fsize"|"locks"|"memlock"|"msgqueue"|"nice"|"nofile"|"nproc"|"rss"|"rtprio"|"rttime"|"sigpending"|"stack", "softLimit": integer, "hardLimit": integer } ... ]
name
-
Tipo: string
Valores válidos:
"core" | "cpu" | "data" | "fsize" | "locks" | "memlock" | "msgqueue" | "nice" | "nofile" | "nproc" | "rss" | "rtprio" | "rttime" | "sigpending" | "stack"
Obrigatório: sim, quando
ulimits
são usadosO
type
doulimit
. hardLimit
-
Tipo: inteiro
Obrigatório: sim, quando
ulimits
são usadosO limite rígido do tipo
ulimit
. softLimit
-
Tipo: inteiro
Obrigatório: sim, quando
ulimits
são usadosO limite flexível do tipo
ulimit
.
Rótulos do Docker
dockerLabels
-
Tipo: mapa string para string
Obrigatório: não
Um mapa de chave/valor de rótulos a ser adicionado ao contêiner. Esse parâmetro é mapeado para
Labels
na seção Criar um contêinerda API remota do Docker e a opção --label
para docker run. Este parâmetro requer que a versão 1.18 da API remota do Docker ou posterior em sua instância de contêiner.
"dockerLabels": {"string": "string" ...}
Outros parâmetros de definição de contêiner
Os parâmetros de definição de contêiner a seguir podem ser usados durante o registro das definições de tarefa no console do Amazon ECS usando a opção Configure via JSON (Configurar via JSON). Para obter mais informações, consulte Criação de uma definição de tarefa usando o console.
Tópicos
Parâmetros do Linux
linuxParameters
-
Tipo: objeto LinuxParameters
Obrigatório: não
Opções específicas ao Linux aplicadas ao contêiner, como KernelCapabilities.
nota
Este parâmetro não é compatível com contêineres do Windows.
"linuxParameters": { "capabilities": { "add": ["string", ...], "drop": ["string", ...] } }
capabilities
-
Tipo: objeto KernelCapabilities
Obrigatório: não
Os recursos do Linux para o contêiner que são adicionados à configuração padrão fornecida pelo Docker ou descartados dela. Para obter mais informações sobre os recursos padrão e outros recursos disponíveis, consulte Privilégio de tempo de execução e recursos do Linux
na Referência de execução do Docker. Para obter mais informações sobre esses recursos do Linux, consulte a página do manual do Linux recursos(7) . add
-
Tipo: matriz de strings
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"
Obrigatório: não
Os recursos do Linux para o contêiner que são adicionados à configuração padrão fornecida pelo Docker. Esse parâmetro é mapeado para
CapAdd
na seção Create a container(Criar um contêiner) da Docker Remote API (API remota do Docker) e a opção --cap-add
para docker run. nota
As tarefas executadas no Fargate são compatíveis apenas com a adição do recurso kernel do
SYS_PTRACE
. drop
-
Tipo: matriz de strings
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"
Obrigatório: não
Os recursos do Linux para o contêiner que são removidos da configuração padrão fornecida pelo Docker. Esse parâmetro é mapeado para
CapDrop
na seção Create a container(Criar um contêiner) da Docker Remote API (API remota do Docker) e a opção --cap-drop
para docker run.
devices
-
Todos os dispositivos do host a serem expostos ao contêiner. Esse parâmetro é mapeado para
Devices
na seção Create a container(Criar um contêiner) da Docker Remote API (API remota do Docker) e a opção --device
para docker run. nota
Se você estiver usando tarefas que utilizem o tipo de inicialização Fargate,
devices
não haverá suporte para o parâmetro .Tipo: matriz de objetos Device
Obrigatório: não
hostPath
-
O caminho para o dispositivo na instância de contêiner host.
Tipo: String
Obrigatório: sim
containerPath
-
O caminho dentro do contêiner no qual expor o dispositivo do host.
Tipo: String
Obrigatório: não
permissions
-
As permissões explícitas a serem fornecidas ao contêiner para o dispositivo. Por padrão, o contêiner tem permissões para
read
,write
emknod
no dispositivo.Tipo: matriz de strings
Valores válidos:
read
|write
|mknod
initProcessEnabled
-
Execute um processo
init
dentro do contêiner que encaminha sinais e colhe processos. Esse parâmetro mapeia para a opção--init
para docker run. Este parâmetro requer a versão 1.25 ou posterior da API remota do Docker em sua instância de contêiner.
maxSwap
-
A quantidade total de memória de troca (em MiB) que um contêiner pode usar. Esse parâmetro será convertido na opção
--memory-swap
para execução do dockerem que o valor é a soma da memória do contêiner mais o valor de maxSwap
.Se um valor
maxSwap
de0
for especificado, o contêiner não usará a troca. Os valores aceitos são0
ou qualquer número inteiro positivo. Se o parâmetromaxSwap
for omitido, o contêiner usará a configuração de troca para a instância de contêiner na qual ele está sendo executado. Um valormaxSwap
deve ser definido para que o parâmetroswappiness
seja usado.nota
Se você estiver usando tarefas que utilizem o tipo de inicialização Fargate,
maxSwap
não haverá suporte para o parâmetro . sharedMemorySize
-
O valor do tamanho (em MiB) do volume
/dev/shm
. Esse parâmetro mapeia para a opção--shm-size
para docker run. nota
Se você estiver usando tarefas que utilizem o tipo de inicialização Fargate,
sharedMemorySize
não haverá suporte para o parâmetro .Tipo: inteiro
swappiness
-
Isso permite ajustar o comportamento de troca de memória de um contêiner. Um valor de
swappiness
igual a0
evita a troca, a menos que ela seja necessária. Um valor deswappiness
igual a100
resulta na troca frequente das páginas. Os valores aceitos são números inteiros entre0
e100
. Se você não especificar um valor, será usado o valor padrão de60
. Além disso, se você não especificar um valor paramaxSwap
, esse parâmetro será ignorado. Esse parâmetro mapeia para a opção--memory-swappiness
para docker run. nota
Se você estiver usando tarefas que utilizem o tipo de inicialização Fargate,
swappiness
não haverá suporte para o parâmetro .Se você estiver usando tarefas no Amazon Linux 2023, o
swappiness
parâmetro não haverá suporte para o parâmetro. tmpfs
-
O caminho do contêiner, as opções de montagem e o tamanho (em MiB) da montagem tmpfs. Esse parâmetro mapeia para a opção
--tmpfs
para docker run. nota
Se você estiver usando tarefas que utilizem o tipo de inicialização Fargate,
tmpfs
não haverá suporte para o parâmetro .Tipo: matriz de objetos Tmpfs
Obrigatório: não
containerPath
-
O caminho absoluto do arquivo no qual o volume tmpfs deve ser montado.
Tipo: String
Obrigatório: sim
mountOptions
-
A lista de opções de montagem de volume tmpfs.
Tipo: matriz de strings
Obrigatório: não
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
-
O tamanho máximo (em MiB) do volume tmpfs.
Tipo: inteiro
Obrigatório: Sim
Dependência de contêiner
dependsOn
-
Tipo: matriz de objetos ContainerDependency
Obrigatório: não
As dependências definidas para inicialização e desligamento do contêiner. Um contêiner pode conter várias dependências. Quando uma dependência é definida para a inicialização do contêiner, ela é revertida para o desligamento do contêiner. Para ver um exemplo, consulte Exemplo: dependência de contêiner.
nota
Se um contêiner não atender a uma restrição de dependência ou expirar antes de cumprir a restrição, o Amazon ECS não evoluirá contêineres dependentes para seu próximo estado.
Para tarefas do Amazon ECS hospedadas em instâncias do Amazon EC2, as instâncias exigem pelo menos a versão
1.26.0
do agente do contêiner para habilitar dependências de contêiner. No entanto, recomendamos usar a versão mais recente do agente de contêiner. Para obter informações sobre como verificar a versão do agente e atualizar para a versão mais recente, consulte Atualizar o agente de contêiner do Amazon ECS. Se você estiver usando uma AMI do Amazon Linux otimizada para o Amazon ECS, sua instância precisará pelo menos da versão1.26.0-1
do pacoteecs-init
. Se as instâncias de contêiner são executadas na versão20190301
ou posterior, então elas contêm as versões necessárias do agente de contêiner e doecs-init
. Para obter mais informações, consulte AMIs otimizadas para Amazon ECS.Para tarefas do Amazon ECS hospedadas no Fargate, esse parâmetro exige que a tarefa ou o serviço use a versão
1.3.0
ou posterior (Linux) ou1.0.0
(Windows) da plataforma."dependsOn": [ { "containerName": "
string
", "condition": "string
" } ]containerName
-
Tipo: String
Obrigatório: sim
O nome do contêiner que deve atender à condição especificada.
condition
-
Tipo: String
Obrigatório: sim
A condição de dependência do contêiner. A seguir estão as condições disponíveis e seus comportamentos.
-
START
: essa condição emula o comportamento de links e volumes atuais. Ela valida que um contêiner dependente seja iniciado antes de permitir que outros contêineres sejam iniciados. -
COMPLETE
: essa condição valida que um contêiner dependente seja executado até a conclusão (encerramento) antes de permitir que outros contêineres sejam iniciados. Isso pode ser útil para os contêineres não essenciais que executam um script e depois são encerrados. Não é possível definir essa condição em um contêiner essencial. -
SUCCESS
: essa condição é igual aCOMPLETE
, mas também exige que o contêiner seja encerrado com um statuszero
. Não é possível definir essa condição em um contêiner essencial. -
HEALTHY
: essa condição valida que o contêiner dependente foi aprovado na verificação de integridade do Docker antes de permitir que outros contêineres sejam iniciados. Isso requer que o contêiner dependente tenha verificações de integridade configuradas na definição de tarefa. Essa condição é confirmada apenas na inicialização da tarefa.
-
Tempos limite de contêiner
startTimeout
-
Tipo: inteiro
Obrigatório: não
Valores de exemplo:
120
Tempo a ser aguardado (em segundos) antes de desistir de resolver dependências para um contêiner.
Por exemplo, você especifica dois contêineres em uma definição de tarefa com o
containerA
tendo uma dependência docontainerB
atingir um statusCOMPLETE
,SUCCESS
ouHEALTHY
. Se um valor destartTimeout
for especificado para ocontainerB
e ele não atingir o status desejado nesse tempo, ocontainerA
não será iniciado.nota
Se um contêiner não atender a uma restrição de dependência ou expirar antes de cumprir a restrição, o Amazon ECS não evoluirá contêineres dependentes para seu próximo estado.
Para tarefas do Amazon ECS hospedadas no Fargate, esse parâmetro exige que a tarefa ou o serviço use a versão
1.3.0
ou posterior (Linux) da plataforma. stopTimeout
-
Tipo: inteiro
Obrigatório: não
Valores de exemplo:
120
Período (em segundos) a ser aguardado antes de o contêiner ser interrompido se não for encerrado normalmente por conta própria.
Para tarefas que usam o tipo de execução do Fargate, a tarefa ou o serviço exige a versão 1.3.0 ou posterior (Linux) ou 1.0.0 ou posterior (Windows) da plataforma. O valor de tempo limite para max stop é 120 segundos. No entanto, se o parâmetro não for especificado, o valor padrão de 30 segundos será usado.
Para tarefas que usam o tipo de execução do EC2, se o parâmetro
stopTimeout
não for especificado, o valor definido para a variável de configuração do agente do contêiner do Amazon ECSECS_CONTAINER_STOP_TIMEOUT
será usado. Se nem o parâmetrostopTimeout
nem a variável de configuração do agenteECS_CONTAINER_STOP_TIMEOUT
forem definidos, serão usados os valores padrão de 30 segundos para contêineres do Linux e 30 segundos para contêineres do Windows. As instâncias de contêiner exigem pelo menos a versão 1.26.0 do agente de contêiner para habilitar um valor de tempo limite de interrupção de contêiner. No entanto, recomendamos usar a versão mais recente do agente de contêiner. Para obter informações sobre como verificar a versão do agente e atualizar para a versão mais recente, consulte Atualizar o agente de contêiner do Amazon ECS. Se você estiver usando a AMI do Amazon Linux otimizada para o Amazon ECS, sua instância precisará pelo menos da versão 1.26.0-1 do pacoteecs-init
. Se as instâncias de contêiner são executadas na versão20190301
ou posterior, então elas contêm as versões necessárias do agente de contêiner e doecs-init
. Para obter mais informações, consulte AMIs otimizadas para Amazon ECS.
Controles do sistema
systemControls
-
Tipo: objeto SystemControl
Obrigatório: não
Uma lista de parâmetros de kernel com namespace a ser definida no contêiner. Esse parâmetro é mapeado para
Sysctls
na seção Criar um contêinerda API remota do Docker e a opção --sysctl
para docker run. Não recomendamos especificar parâmetros
systemControls
relacionados à rede para vários contêineres em uma única tarefa que também usa o modo de redeawsvpc
ouhost
pelos seguintes motivos:-
Para tarefas que usam o modo de rede
awsvpc
, se você definirsystemControls
para qualquer contêiner, ele se aplicará a todos os contêineres na tarefa. Se você definir umsystemControls
diferente para vários contêineres em uma única tarefa, o contêiner iniciado por último determinará qualsystemControls
entra em vigor. -
Para tarefas que usam o modo de rede
host
, o namespace de redesystemControls
não é compatível.
Se você estiver configurando um namespace de recurso IPC para usar nos contêineres da tarefa, as condições a seguir serão aplicadas aos controles do sistema. Para obter mais informações, consulte Modo IPC.
-
Para tarefas que usam o modo IPC
host
, o namespace IPCsystemControls
não é compatível. -
Para tarefas que usam o modo IPC de
task
, os valores desystemControls
do namespace IPC são aplicados a todos os contêineres em uma tarefa.
nota
Esse parâmetro não é compatível com os contêineres do Windows ou tarefas que usam o tipo de inicialização Fargate.
"systemControls": [ { "namespace":"
string
", "value":"string
" } ]namespace
-
Tipo: String
Obrigatório: não
O parâmetro de kernel com namespace para definição de um
value
.Valores de namespace IPC válidos:
"kernel.msgmax" | "kernel.msgmnb" | "kernel.msgmni" | "kernel.sem" | "kernel.shmall" | "kernel.shmmax" | "kernel.shmmni" | "kernel.shm_rmid_forced"
, bem como Sysctls começando com"fs.mqueue.*"
Valores de namespace de rede válidos: Sysctls começando com
"net.*"
value
-
Tipo: String
Obrigatório: não
O valor do parâmetro de kernel do namespace especificado em
namespace
.
-
Interativo
interactive
-
Tipo: booliano
Obrigatório: não
Quando esse parâmetro é
true
, você pode implantar aplicações em contêineres que exigem a alocação de stdin ou um tty. Esse parâmetro é mapeado paraOpenStdin
na seção Criar um contêinerda API remota do Docker e a opção --interactive
para docker run.
Pseudoterminal
pseudoTerminal
-
Tipo: booliano
Obrigatório: não
Quando esse parâmetro é
true
, um TTY é alocado. Esse parâmetro é mapeado paraTty
na seção Criar um contêinerda API remota do Docker e a opção --tty
para docker run.
Nome do acelerador de inferência elástica
nota
A partir de 15 de abril de 2023, a AWS não integrará novos clientes ao Amazon Elastic Inference (EI) e ajudará os clientes atuais a migrar suas workloads para opções que ofereçam melhores preço e desempenho. Depois de 15 de abril de 2023, os novos clientes não poderão iniciar instâncias com aceleradores Amazon EI na AmazonSageMaker, Amazon ECS ou Amazon EC2. No entanto, os clientes que tenham usado o Amazon EI pelo menos uma vez durante os últimos 30 dias serão considerados clientes atuais e poderão continuar usando o serviço.
Requisito do recurso acelerador Elastic Inference para a definição de tarefa. Para obter mais informações, consulte What Is Elastic Inference? (O que é o Elastic Inference?) no Amazon Elastic Inference Developer Guide (Guia do desenvolvedor do Amazon Elastic Inference).
Os seguintes parâmetros são permitidos em uma definição de tarefa:
deviceName
-
Tipo: string
Exigido: sim
O nome do dispositivo do acelerador de inferência elástica. O
deviceName
também deve ser referenciado em uma definição de contêiner, consulte Elastic Inference accelerator. deviceType
-
Tipo: string
Exigido: sim
O acelerador de inferência elástica a ser usado.
Limitações de posicionamento de tarefa
Ao registrar uma definição de tarefa, você pode fornecer restrições de posicionamento de tarefa que personalizam como o Amazon ECS posiciona tarefas.
Se você estiver usando o tipo de inicialização do Fargate, não haverá suporte para restrições de posicionamento de tarefas. Por padrão, as tarefas do Fargate são distribuídas entre as zonas de disponibilidade.
Para tarefas que usam o tipo de inicialização do EC2, você pode usar restrições para inserir tarefas com base na zona de disponibilidade, no tipo de instância ou nos atributos personalizados. Para obter mais informações, consulte Restrições de posicionamento de tarefas do Amazon ECS.
Os parâmetros a seguir são permitidos em uma definição de contêiner.
expression
-
Tipo: string
Obrigatório: não
Uma expressão de idioma de consulta de cluster a ser aplicada à restrição. Para obter mais informações, consulte Linguagem de consulta de cluster.
type
-
Tipo: string
Exigido: sim
O tipo de restrição. Use
memberOf
para restringir a seleção a um grupo de candidatos válidos.
Configuração do proxy
proxyConfiguration
-
Tipo: objeto ProxyConfiguration
Obrigatório: não
Os detalhes de configuração do proxy do App Mesh.
Para as tarefas que usam o tipo de execução do EC2, as instâncias de contêiner exigem pelo menos a versão 1.26.0 do agente de contêiner e pelo menos a versão 1.26.0-1 do pacote
ecs-init
para habilitar uma configuração de proxy. Se as instâncias de contêiner forem executadas na AMI otimizada para o Amazon ECS versão20190301
ou posterior, elas conterão as versões necessárias do agente de contêiner e doecs-init
. Para obter mais informações, consulte AMIs otimizadas para Amazon ECS.Para tarefas que usam o tipo de inicialização do Fargate, esse recurso exige que a tarefa ou o serviço use a versão 1.3.0 ou posterior da plataforma.
nota
Este parâmetro não é compatível com contêineres do Windows.
"proxyConfiguration": { "type": "APPMESH", "containerName": "
string
", "properties": [ { "name": "string
", "value": "string
" } ] }type
-
Tipo: String
Valor:
APPMESH
Obrigatório: não
O tipo de proxy. O único valor aceito é
APPMESH
. containerName
-
Tipo: String
Obrigatório: sim
O nome do contêiner que serve como proxy do App Mesh.
properties
-
Tipo: matriz de objetos KeyValuePair
Obrigatório: não
O conjunto de parâmetros de configuração de rede para fornecer o plugin Container Network Interface (CNI), especificado como pares de chave/valor.
-
IgnoredUID
: (obrigatório) o ID de usuário (UID) do contêiner de proxy conforme definido pelo parâmetrouser
em uma definição de contêiner. Isso é usado para garantir que o proxy ignore seu próprio tráfego. SeIgnoredGID
for especificado, esse campo poderá estar vazio. -
IgnoredGID
: (obrigatório) o ID de grupo (GID) do contêiner de proxy conforme definido pelo parâmetrouser
em uma definição de contêiner. Isso é usado para garantir que o proxy ignore seu próprio tráfego. SeIgnoredUID
for especificado, esse campo poderá estar vazio. -
AppPorts
: (obrigatório) a lista de portas usadas pelo aplicativo. O tráfego de rede para essas portas é encaminhado paraProxyIngressPort
eProxyEgressPort
. -
ProxyIngressPort
: (obrigatório) especifica a porta para a qual o tráfego de entrada paraAppPorts
é direcionado. -
ProxyEgressPort
: (obrigatório) especifica a porta para a qual o tráfego de saída deAppPorts
é direcionado. -
EgressIgnoredPorts
: (obrigatório) o tráfego de saída para essas portas especificadas é ignorado e não é redirecionado paraProxyEgressPort
. Ele pode ser uma lista vazia. -
EgressIgnoredIPs
: (obrigatório) o tráfego de saída para esses endereços IP especificados é ignorado e não é redirecionado paraProxyEgressPort
. Ele pode ser uma lista vazia.
-
Volumes
Se preferir, ao registrar uma definição de tarefa, você poderá especificar uma lista de volumes a serem passados para o daemon do Docker em uma instância de contêiner, que se tornará disponível para o acesso de outros contêineres da mesma instância de contêiner.
A seguir estão os tipos de volumes de dados que podem ser usados.
-
Volumes de Docker: um volume de Docker gerenciado que é criado em
/var/lib/docker/volumes
na instância host do .Amazon EC2. Drivers de volume do Docker (também conhecidos como plugins) são usados para integrar os volumes com sistemas de armazenamento externos, como o Amazon EBS. O driver de volumelocal
integrado ou um driver de volume de terceiros podem ser usados. Os volumes do Docker só são compatíveis com a execução de tarefas em instâncias do Amazon EC2. Os contêineres do Windows só são compatíveis com o uso do driverlocal
. Para usar os volumes do Docker, especifique umadockerVolumeConfiguration
em sua definição de tarefa. Para obter mais informações, consulte Usar volumes. -
Montagens bind: um arquivo ou diretório da máquina host é montado em um contêiner. Os volumes de host de montagem bind são compatíveis quando são executadas tarefas em instâncias do AWS Fargate ou do Amazon EC2. Para usar os volumes de host de montagens bind, especifique um
host
e um valorsourcePath
opcional em sua definição de tarefa. Para obter mais informações, consulte Usar montagens bind.
Para obter mais informações, consulte Usar volumes de dados em tarefas.
Os parâmetros a seguir são permitidos em uma definição de contêiner.
name
-
Tipo: String
Obrigatório: não
O nome do volume. São permitidos até 255 letras (caixa alta e baixa), números, hífens e sublinhados. Esse nome é referenciado no parâmetro
sourceVolume
do objetomountPoints
de definição do contêiner. host
-
Obrigatório: não
nota
O parâmetro
host
só é compatível quando forem usadas tarefas hospedadas em instâncias do Amazon EC2.O parâmetro
host
é usado para vincular o ciclo de vida da montagem bind à instância host do Amazon EC2, em vez da tarefa, e onde ela está armazenada. Caso o parâmetrohost
esteja vazio, o daemon do Docker atribui um caminho host para o volume de dados, mas os dados não têm garantia de persistir depois que os contêineres associados deixarem de ser executados.Os contêineres do Windows podem montar diretórios inteiros na mesma unidade como
$env:ProgramData
.sourcePath
-
Tipo: String
Obrigatório: não
Quando o parâmetro
host
é usado, especifique umsourcePath
para declarar o caminho na instância host do Amazon EC2 que é apresentada ao contêiner. Caso esse parâmetro esteja vazio, o daemon do Docker atribui um caminho host para você. Caso o parâmetrohost
contenha um local de arquivosourcePath
, o volume de dados persistirá no local especificado na instância host do Amazon EC2 até você excluí-lo manualmente. Caso o valorsourcePath
não exista na instância host do Amazon EC2, o daemon do Docker o criará. Caso o local exista, o conteúdo da pasta do caminho de origem é exportado.
dockerVolumeConfiguration
-
Tipo: objeto
Obrigatório: não
Esse parâmetro é especificado ao usar volumes do Docker. Os volumes do Docker só são compatíveis com a execução de tarefas em instâncias do EC2. Os contêineres do Windows só são compatíveis com o uso do driver
local
. Para usar montagens bind, em vez disso, especifique umhost
.scope
-
Tipo: String
Valores válidos:
task
|shared
Exigido: Não
O escopo para o volume do Docker, que determina o ciclo de vida. Os volumes do Docker que são delimitados para uma
task
são provisionados automaticamente quando a tarefa é iniciada e destruídos quando a tarefa é interrompida. Volumes do Docker delimitados comoshared
são mantidos após a interrupção da tarefa. autoprovision
-
Tipo: booliano
Valor padrão:
false
Obrigatório: não
Se o valor for
true
, o volume de Docker é criado se ele não existir. Esse campo só é usado sescope
forshared
. Se oscope
fortask
, esse parâmetro deve ser omitido ou definido comofalse
. driver
-
Tipo: String
Obrigatório: não
O driver do volume do Docker a ser usado. O valor de driver deve combinar com o nome de driver fornecido pelo Docker, porque ele é usado para o posicionamento de tarefas. Se o driver foi instalado usando a CLI de plugin do Docker, use
docker plugin ls
para recuperar o driver de sua instância de contêiner. Se o driver foi instalado usando outro método, use a descoberta de plugin do Docker para recuperar o nome do driver. Para obter mais informações, consulte Descoberta de plugin do Docker. Esse parâmetro é mapeado para Driver
na seção Criar um volumeda API remota do Docker e a opção --driver
paradocker volume create
. driverOpts
-
Tipo: String
Obrigatório: não
Um mapa de opções específicas do driver do Docker pelas quais você vai passar. Esse parâmetro é mapeado para
DriverOpts
na seção Criar um volumeda API remota do Docker e a opção --opt
paradocker volume create
. labels
-
Tipo: String
Obrigatório: não
Metadados personalizados para adicionar ao volume do Docker. Esse parâmetro é mapeado para
Labels
na seção Criar um volumeda API remota do Docker e a opção --label
paradocker volume create
.
efsVolumeConfiguration
-
Tipo: objeto
Obrigatório: não
Esse parâmetro é especificado quando são usados volumes do Amazon EFS.
fileSystemId
-
Tipo: String
Obrigatório: sim
O ID do sistema de arquivos do Amazon EFS a ser usado.
rootDirectory
-
Tipo: String
Obrigatório: não
O diretório dentro do sistema de arquivos do Amazon EFS que deve ser montado como o diretório raiz dentro do host. Se esse parâmetro for omitido, a raiz do volume do Amazon EFS será usada. Especificar
/
terá o mesmo efeito que omitir este parâmetro.Importante
Se um ponto de acesso EFS for especificado no
authorizationConfig
, o parâmetro de diretório raiz deverá ser omitido ou definido como/
, o que imporá o caminho definido no ponto de acesso EFS. transitEncryption
-
Tipo: String
Valores válidos:
ENABLED
|DISABLED
Exigido: Não
Habilitar ou não a criptografia para dados do Amazon EFS em trânsito entre o host do Amazon ECS e o servidor do Amazon EFS. A criptografia de trânsito deverá ser habilitada se a autorização do IAM do Amazon EFS for usada. Se esse parâmetro for omitido, o valor padrão de
DISABLED
será usado. Para obter mais informações, consulte Criptografar dados em trânsito no Guia do usuário do Amazon Elastic File System. transitEncryptionPort
-
Tipo: inteiro
Obrigatório: não
A porta a ser usada ao enviar dados criptografados entre o host do Amazon ECS e o servidor do Amazon EFS. Se você não especificar uma porta de criptografia em trânsito, será usada a estratégia de seleção de porta usada pelo assistente de montagem do Amazon EFS. Para obter mais informações, consulte Auxiliar de montagem do EFS no Guia do usuário do Amazon Elastic File System.
authorizationConfig
-
Tipo: objeto
Obrigatório: não
Os detalhes da configuração de autorização do sistema de arquivos do Amazon EFS.
accessPointId
-
Tipo: String
Obrigatório: não
O ID do ponto de acesso a ser usado. Se um ponto de acesso for especificado, o valor do diretório raiz no
efsVolumeConfiguration
deve ser omitido ou definido como/
, que imporá o caminho definido no ponto de acesso do EFS. Se um ponto de acesso for usado, a criptografia em trânsito deverá ser habilitada noEFSVolumeConfiguration
. Para obter mais informações, consulte Trabalhar com pontos de acesso do Amazon EFS no Guia do usuário do Amazon Elastic File System. iam
-
Tipo: String
Valores válidos:
ENABLED
|DISABLED
Exigido: Não
Usar ou não a função do IAM para a tarefa do Amazon ECS estabelecida em uma definição de tarefa ao montar o sistema de arquivos do Amazon EFS. Se habilitado, a criptografia de trânsito deve estar habilitada no
EFSVolumeConfiguration
. Se esse parâmetro for omitido, o valor padrão deDISABLED
será usado. Para obter mais informações, consulte Funções do IAM para tarefas.
FSxWindowsFileServerVolumeConfiguration
-
Tipo: objeto
Obrigatório: Sim
Esse parâmetro é especificado quando você está usando o sistema de arquivos para armazenamento de tarefas FSx for Windows File Server.
fileSystemId
-
Tipo: String
Obrigatório: sim
O ID do sistema de arquivos do FSx for Windows File Server a ser usado.
rootDirectory
-
Tipo: String
Obrigatório: sim
O diretório no sistema de arquivos do FSx for Windows File Server que deve ser montado como o diretório raiz dentro do host.
authorizationConfig
-
credentialsParameter
-
Tipo: String
Obrigatório: sim
As opções de credencial de autorização.
opções:
Nome do recurso da Amazon (ARN) de um segredo do AWSSecrets Manager.
ARN de um parâmetro do AWS Systems Manager.
domain
-
Tipo: String
Obrigatório: sim
Um nome de domínio totalmente qualificado hospedado por um diretório ativo do Microsoft AD gerenciado AWS Directory Service ou por um AD do EC2 auto-hospedado.
Tags
Quando você registra uma definição de tarefa, pode especificar opcionalmente etiquetas de metadados aplicadas à definição de tarefa. As etiquetas ajudam você a categorizar e organizar sua definição de tarefa. Cada tag consiste em uma chave e um valor opcional. Defina ambos. Para obter mais informações, consulte Marcar recursos do Amazon ECS.
Importante
Não adicione informações de identificação pessoal nem outras informações confidenciais ou sigilosas em tags. As tags são acessíveis a muitos serviços da AWS, incluindo faturamento. As tags não devem ser usadas para dados privados ou confidenciais.
Os parâmetros a seguir são permitidos em um objeto de etiqueta.
key
-
Tipo: string
Obrigatório: não
Uma parte de um par de chave/valor que compõe uma tag. Uma chave é um rótulo geral que age como uma categoria para valores de tag mais específicos.
value
-
Tipo: string
Obrigatório: não
A parte opcional de um par de chave/valor que compõe uma tag. Um valor atua como um descritor dentro de uma categoria de tag (chave).
Outros parâmetros de definição de tarefa
Os parâmetros de definição de tarefa a seguir podem ser usados durante o registro das definições de tarefa no console do Amazon ECS usando a opção Configure via JSON (Configurar via JSON). Para obter mais informações, consulte Criação de uma definição de tarefa usando o console.
Armazenamento temporário
ephemeralStorage
-
Tipo: objeto
Obrigatório: não
A quantidade de armazenamento temporário (em GB) a ser alocado para a tarefa. Esse parâmetro é usado para expandir a quantidade total de armazenamento temporário, além da quantidade padrão, para tarefas hospedadas no AWS Fargate. Para obter mais informações, consulte Montagens bind.
nota
O parâmetro só é compatível com tarefas hospedadas no queAWS Fargate usem a versão posterior (Linux)
1.4.0
ou posterior (Linux)1.0.0
ou posterior (Windows).
Modo IPC
ipcMode
-
Tipo: String
Obrigatório: não
O namespace de recurso IPC a ser usado para os contêineres na tarefa. Os valores válidos são
host
,task
ounone
. Se ohost
for especificado, todos os contêineres dentro das tarefas que especificaram o modo IPChost
na mesma instância de contêiner compartilham os mesmos recursos IPC com a instância do Amazon EC2 do host. Setask
for especificado, todos os contêineres dentro da tarefa especificada compartilharão os mesmos recursos IPC. Senone
for especificado, os recursos IPC nos contêineres de uma tarefa serão privados e não serão compartilhados com outros contêineres em uma tarefa ou na instância de contêiner. Se nenhum valor for especificado, o valor para IPCMode será definido comoshareable
. Para obter mais informações, consulte Configurações IPCna Referência de execução do Docker. Se o modo IPC
host
for usado, haverá um risco elevado de exposição indesejada do namespace IPC. Para obter mais informações, consulte Segurança do Docker. Se você estiver definindo parâmetros de kernel com namespace que usa
systemControls
para os contêineres na tarefa, os itens a seguir serão aplicados ao seu namespace de recurso IPC. Para obter mais informações, consulte Controles do sistema.-
Para tarefas que usam o modo IPC
host
, o namespace IPC relacionadosystemControls
não é compatível. -
Para tarefas que usam o modo IPC
task
,systemControls
relacionados ao namespace IPC serão aplicados a todos os contêineres em uma tarefa.
-
nota
Esse parâmetro não é compatível com os contêineres do Windows ou tarefas que usam o tipo de inicialização Fargate.
Modo PID
pidMode
-
Tipo: String
Obrigatório: não
O namespace do processo a ser usado para os contêineres na tarefa. Os valores válidos são
host
outask
. Se ohost
for especificado, todos os contêineres das tarefas que especificaram o modo PIDhost
na mesma instância de contêiner compartilharão namespace de processo com a instância do Amazon EC2 do host. Se atask
for especificada, todos os contêineres da tarefa especificada compartilharão o mesmo namespace de processo. Se nenhum valor for especificado, o padrão será um namespace privado. Para obter mais informações, consulte Configurações PIDna Referência de execução do Docker. Se o modo PID
host
for usado, haverá um risco elevado de exposição indesejada do namespace de processo. Para obter mais informações, consulte Segurança do Docker.
nota
Esse parâmetro não é compatível com os contêineres do Windows ou tarefas que usam o tipo de inicialização Fargate.