Parâmetros de definição de tarefa do Amazon ECS para instâncias gerenciadas do Amazon ECS
As definições de tarefa são divididas em partes distintas: a família de tarefas, o perfil de tarefa do AWS Identity and Access Management (IAM), o modo de rede, definições de contêiner, volumes e capacidade. As definições de família e de contêiner são obrigatórias em uma definição de tarefa. Por outro lado, perfil de tarefa, modo de rede, volumes e capacidade são opcionais.
É possível usar esses parâmetros em um arquivo JSON para configurar sua definição de tarefa.
Veja a seguir descrições mais detalhadas de cada parâmetro de definição de tarefa para instâncias gerenciadas do Amazon ECS.
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.
Capacidade
Ao registrar uma definição de tarefa, você pode especificar a capacidade segundo a 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:
MANAGED_INSTANCESA capacidade segundo a 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 das instâncias gerenciadas do Amazon ECS.
Função do para 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 Perfil do IAM para tarefas do Amazon ECS.
Função do para 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. Para obter mais informações, consulte Função do IAM de execução de tarefas do Amazon ECS.
nota
A função do IAM para execução da tarefa é necessária dependendo dos requisitos da sua tarefa. O perfil é necessário para extrações de imagens privadas do ECR e uso do driver de log
awslogs.
Modo de rede
networkMode-
Tipo: string
Obrigatório: não
Padrão:
awsvpcO modo de rede a ser usado para os contêineres na tarefa. Para tarefas do Amazon ECS hospedadas em instâncias gerenciadas do Amazon ECS, os valores válidos são
awsvpcehost. Se nenhum modo de rede for especificado, o modo de rede padrão seráawsvpc.Se o modo de rede for
host, a tarefa vai ignorar o isolamento da rede e os contêineres usarão diretamente a pilha de rede do host.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 umaNetworkConfigurationao 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 para instâncias gerenciadas do Amazon ECS.Os modos de rede
hosteawsvpcoferecem a melhor performance de rede para contêineres, pois usam a pilha de rede do Amazon EC2. Com os modos de redehosteawsvpc, 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.
Plataforma de runtime
operatingSystemFamily-
Tipo: string
Obrigatório: não
Padrão: LINUX
Ao registrar uma definição de tarefa, você especifica a família do sistema operacional.
O valor válido para esse campo é
LINUX.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
platformFamilydo serviço. cpuArchitecture-
Tipo: string
Obrigatório: Condicional
Ao registrar uma definição de tarefa, você especifica a arquitetura da CPU. Os valores válidos são
X86_64eARM64.Se você não especificar um valor, o Amazon ECS tentará colocar tarefas na arquitetura de CPU disponível com base na configuração do provedor de capacidade. Para garantir que as tarefas sejam colocadas em uma arquitetura de CPU específica, informe um valor para
cpuArchitecturena definição de tarefa.Todas as definições de tarefa usadas em um serviço devem ter o mesmo valor para esse parâmetro.
Para obter mais informações sobre o
ARM64, consulte Definições de tarefa do Amazon ECS para workloads do ARM de 64 bits.
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.
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.
cpu-
Tipo: string
Obrigatório: Condicional
O limite rígido de unidades de CPU a ser apresentado para a tarefa. Você pode especificar valores de CPU no arquivo JSON como uma string em unidades de CPU ou em CPUs virtuais (vCPUs). Por exemplo, você pode especificar um valor de CPU como
1024em unidades de CPU ou1 vCPUem vCPUs. Quando a definição de tarefa for registrada, um valor de vCPU será convertido em um inteiro indicando as unidades de CPU.Esse 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ível são de
0.125vCPUs a10vCPUs.
memory-
Tipo: string
Obrigatório: Condicional
O limite fixo de memória a ser apresentada para a tarefa. É possível especificar valores de memória na definição de tarefa como uma string em mebibytes (MiB) ou gigabytes (GB). Por exemplo, você pode especificar um valor de memória como
3072em MiB ou3 GBem GB. Quando a definição de tarefa for registrada, um valor em GB será convertido em um inteiro indicando o MiB.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. É possível 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 Reserva de memória da instância de contêiner do Linux no Amazon ECS.
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 Criar uma definição de tarefa do Amazon ECS usando o console.
Tópicos
Armazenamento temporário
ephemeralStorage-
nota
Esse parâmetro não é compatível com tarefas executadas em instâncias gerenciadas do Amazon ECS.
Tipo: objeto EphemeralStorage
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 Uso de montagens vinculadas com o Amazon ECS.
Modo IPC
ipcMode-
nota
Esse parâmetro não é compatível com tarefas executadas em instâncias gerenciadas do Amazon ECS.
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,taskounone. Se ohostfor especificado, todos os contêineres dentro das tarefas que especificaram o modo IPChostna mesma instância de contêiner compartilham os mesmos recursos IPC com a instância do Amazon EC2 do host. Setaskfor especificado, todos os contêineres dentro da tarefa especificada compartilharão os mesmos recursos IPC. Senonefor 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 compartilhamento do namespace de recurso IPC dependerá da configuração de runtime do contêiner.
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
hostoutask. Sehostfor especificado, todos os contêineres que estiverem nas tarefas que especificaram o modo PIDhostna mesma instância de contêiner compartilharão o mesmo namespace de processo com a instância host do Amazon EC2. Setaskfor especificado, todos os contêineres que estiverem na tarefa especificada compartilharão o mesmo namespace de processo. Se nenhum valor for especificado, o padrão será um namespace privado.Se o modo PID
hostfor usado, haverá um risco elevado de exposição indesejada do namespace de processo.
Configuração do proxy
proxyConfiguration-
nota
Esse parâmetro não é compatível com tarefas executadas em instâncias gerenciadas do Amazon ECS.
Tipo: objeto ProxyConfiguration
Obrigatório: não
Os detalhes de configuração do proxy do App Mesh.
Tags
Os metadados que você aplica a uma definição de tarefa para ajudar a categorizá-los e organizá-los. Cada tag consiste em uma chave e um valor opcional. Defina ambos.
As restrições básicas a seguir se aplicam às tags.
-
Número máximo de tags por recurso: 50
-
Em todos os recursos, cada chave de tag deve ser exclusiva e possuir apenas um valor.
-
Comprimento máximo da chave: 128 caracteres Unicode em UTF-8
-
Comprimento máximo do valor: 256 caracteres Unicode em UTF-8
-
Se seu esquema de tags é usado em vários serviços e recursos, lembre-se de que outros serviços podem ter restrições nos caracteres permitidos. Em geral, os caracteres permitidos são: letras, números e espaços representáveis em UTF-8 e os seguintes caracteres: + - = . _ : / @.
-
As chaves e os valores de tags diferenciam maiúsculas de minúsculas.
-
Não use
aws:,AWS:nem qualquer combinação de letras maiúsculas e minúsculas deles como um prefixo para chaves ou valores, pois são reservados para uso pela AWS. Você não pode editar nem excluir chaves nem valores de tag com esse prefixo. As tags com esse prefixo não contam para as tags por limite de recurso.
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).
Acelerador do Elastic Inference (obsoleto)
nota
O Amazon Elastic Inference (EI) não está mais disponível para clientes.
inferenceAccelerator-
nota
Esse parâmetro não é compatível com tarefas executadas em instâncias gerenciadas do Amazon ECS.
Tipo: objeto InferenceAccelerator
Obrigatório: não
As aceleradoras do Elastic Inference que devem ser usadas para os contêineres na tarefa.
Limitações de posicionamento
placementConstraints-
Tipo: matriz de objetos TaskDefinitionPlacementConstraint
Obrigatório: não
Uma matriz de objetos de restrição de posicionamento para uso na tarefa. É possível especificar um máximo de dez restrições por tarefa (esse limite inclui restrições na definição da tarefa e as especificadas no runtime).
O Amazon ECS aceita as restrições de posicionamento
distinctInstaceememberOfpara tarefas executadas nas instâncias gerenciadas do Amazon ECS. Os atributos a seguir são compatíveis com tarefas que usam a restrição de posicionamentomemberOf:-
ecs.subnet-id -
ecs.availability-zone -
ecs.cpu-architecture -
ecs.instance-type
Para obter mais informações sobre restrições de posicionamento, consulte Definição de quais instâncias de contêiner o Amazon ECS usa em tarefas.
-
Volumes
Quando você registra uma definição de tarefa, tem a opção de especificar uma lista de volumes para as tarefas. Isso permite que você use volumes de dados em suas tarefas.
Para obter mais informações sobre tipos de volume e outros parâmetros, consulte Opções de armazenamento para tarefas do Amazon ECS.
name-
Tipo: String
Exigido: sim
O nome do volume. São permitidos até 255 letras (caixa alta e baixa), números e hifens. Este nome é referenciado no parâmetro
sourceVolumeda definição de contêinermountPoints. host-
Tipo: objeto HostVolumeProperties
Obrigatório: não
Esse parâmetro é especificado quando você está usando volumes do host de montagem bind. O conteúdo do parâmetro
hostdetermina se o volume de dados da montagem de host persiste na instância de contêiner host e onde é armazenado. Se o parâmetrohostestiver vazio, o sistema atribuirá um caminho de host para o volume de dados. No entanto, não há garantia de que os dados persistirão depois que os contêineres associados a eles deixarem de ser executados. dockerVolumeConfiguration-
nota
Esse parâmetro não é compatível com tarefas executadas em instâncias gerenciadas do Amazon ECS.
Tipo: objeto DockerVolumeConfiguration
Obrigatório: não
Esse parâmetro é especificado quando você está usando volumes do Docker.
efsVolumeConfiguration-
Tipo: objeto EFSVolumeConfiguration
Obrigatório: não
Esse parâmetro é especificado quando você está usando um sistema de arquivos Amazon EFS para armazenamento de tarefas.
fsxWindowsFileServerVolumeConfiguration-
nota
Esse parâmetro não é compatível com tarefas executadas em instâncias gerenciadas do Amazon ECS.
Tipo: objeto FSxWindowsFileServerVolumeConfiguration
Obrigatório: não
Esse parâmetro é especificado quando você está usando o sistema de arquivos Amazon FSx para Windows File Server para armazenamento de tarefas.
configuredAtLaunch-
Tipo: booliano
Obrigatório: não
Especifica se o volume deve ser configurado no momento da inicialização. Isso é usado para criar volumes do Amazon EBS para tarefas autônomas ou tarefas criadas como parte de um serviço. Cada revisão da definição de tarefa pode ter somente um volume configurado na inicialização na configuração do volume.
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
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
namede um contêiner poderá ser informado nolinksde 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. Essa string é passada diretamente para o daemon do Docker. Por padrão, as imagens no registro do Docker Hub estão disponíveis. 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@digestImageno comando create-container do docker e no parâmetroIMAGEdo comando run do docker.-
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.
-
Quando não é especificada uma tag ou um resumo no caminho da imagem na definição da tarefa, o agente de contêiner do Amazon ECS usa a tag
latestpara extrair a imagem especificada. -
As atualizações subsequentes para 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 Uso de imagens de contêiner que não são da AWS no Amazon ECS.
-
As imagens nos repositórios do Amazon ECR podem ser especificadas usando a convenção de nomenclatura completa
registry/repository:tagouregistry/repository@digest(por exemplo,aws_account_id.dkr.ecr.region.amazonaws.com/oumy-web-app:latestaws_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,
ubuntuoumongo). -
Imagens em outros repositórios Docker Hub são qualificadas com um nome de organização (por exemplo,
amazon/amazon-ecs-agent). -
Imagens em outros repositórios online também são qualificadas por um nome de domínio (por exemplo,
quay.io/assemblyline/ubuntu).
-
versionConsistency-
Tipo: string
Valores válidos:
enabled|disabledObrigatório: não
Especifica se o Amazon ECS resolverá a tag de imagem do contêiner fornecida na definição do contêiner em um resumo de imagem. Por padrão, esse comportamento é
enabled. Se você definir o valor de um contêiner comodisabled, o Amazon ECS não resolverá a tag da imagem do contêiner como um resumo e usará o URI da imagem original especificado na definição do contêiner para implantação. Para obter mais informações sobre resolução de imagem do contêiner, consulte Resolução da imagem do contêiner.
Memória
memory-
Tipo: inteiro
Obrigatório: não
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 paraMemoryno comando create-container do docker na opção--memoryde execução do docker.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 Reserva de memória da instância de contêiner do Linux no Amazon ECS.
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. Entrentanto, seu contêiner pode usar mais memória quando necessário. O contêiner pode consumir até o limite rígido especificado pelo parâmetro
memory(se aplicável), ou toda a memória disponível na instância de contêiner, o que ocorrer primeiro. Esse parâmetro é mapeado paraMemoryReservationno comando create-container do docker na opção--memory-reservationde execução do docker.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
memoryoumemoryReservationem uma definição de contêiner. Caso você especifique ambos,memorydeve 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, suponha que seu contêiner normalmente use 128 MiB de memória, mas às vezes chegue a 256 MiB de memória por períodos curtos. É possível definir um
memoryReservationde 128 MiB e um limite rígido dememoryde 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, essa configuração também possibilita que o contêiner utilize mais recursos de memória quando necessário.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 Reserva de memória da instância de contêiner do Linux no Amazon ECS.
CPU
cpu-
Tipo: inteiro
Obrigatório: não
O número de unidades
cpureservadas para o contêiner. Esse parâmetro é mapeado paraCpuSharesno comando create-container do docker na opção--cpu-sharesde execução do docker.Esse campo é opcional para tarefas que usam provedores de capacidade do EC2 e a única exigência é que a quantidade total de CPU reservada para todos os contêineres dentro de uma tarefa seja inferior ao valor
cpuno nível da tarefa.nota
Você pode determinar o número de unidades de CPU disponíveis por tipo de instância do EC2 multiplicando as vCPUs listadas para esse tipo de instância na página de detalhes 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, caso 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, esse contêiner poderá usar as 1.024 unidades de CPU integrais a qualquer momento. No entanto, se você executou outra cópia da mesma tarefa nessa instância de contêiner, cada tarefa terá garantido um mínimo de 512 unidades de CPU quando necessário. Além disso, cada contêiner poderá flutuar para o uso maior da CPU, se o outro contêiner não o estiver usando. 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 inferiores ou iguais a 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 inferiores ou iguais a 1.2.0: os valores nulo, zero e de CPU de 1 são passados para o Docker como 2.
Nas instâncias de contêiner do Windows, o limite de CPU é imposto como um limite absoluto ou uma cota. Os contêineres do Windows só têm acesso à quantidade de CPU descrita na definição da tarefa. Um valor de CPU nulo ou zero é transmitido para o Docker como
0, que o Windows interpreta como 1% de uma CPU. -
Mapeamentos de porta
portMappings-
Tipo: Matriz de objeto
Obrigatório: não
Os mapeamentos de portas expõem as portas de rede do seu contêiner ao mundo externo. Isso permite que os clientes acessem sua aplicação. Também é usado para comunicação entre contêineres dentro da mesma tarefa.
Para definições de tarefa que usam o modo de rede
awsvpc, apenas especifiquecontainerPort. AhostPorté sempre ignorada e a porta do contêiner é automaticamente mapeada para uma porta aleatória de alto número no host.A maioria dos campos desse parâmetro (incluindo
containerPort,hostPort,protocol) é mapeada paraPortBindingsno comando create-container do docker e a opção--publishde execução do docker. Caso o modo de rede de uma definição de tarefa seja definido comohost, 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
networkBindingsdo resultado do comando describe-tasks. -
API: a resposta
DescribeTasks. -
Metadados: o endpoint de metadados da tarefa.
appProtocol-
Tipo: string
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 do Service Connect. Se você definir esse parâmetro, o Amazon ECS adicionará telemetria específica de protocolo no console do Amazon ECS e no CloudWatch.
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 Uso do Service Connect para conectar serviços do Amazon ECS com nomes abreviados.
Valores de protocolo válidos:
"HTTP" | "HTTP2" | "GRPC" containerPort-
Tipo: inteiro
Exigido: Sim, quando
portMappingssão usadosO número da porta no contêiner vinculado à porta host atribuída automaticamente ou especificada pelo usuário.
Para as tarefas que usam o modo de rede
awsvpc, você usacontainerPortpara especificar as portas expostas. containerPortRange-
Tipo: string
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 Referência da AWS Command Line Interface.As regras a seguir se aplicam quando você especifica um
containerPortRange:-
Você deve usar o modo de rede
awsvpc. -
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 -
É possível especificar no máximo 100 intervalos de portas para cada 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.
-
-
Os valores válidos de
containerPortRangeestão entre 1 e 65535. -
Uma porta só pode ser incluída em um mapeamento de portas para cada 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
no GitHub. Para obter informações sobre como desativar o docker-proxy no arquivo de configuração do daemon do Docker, consulte Daemon do Docker no Guia do desenvolvedor do Amazon ECS.
É possível chamar DescribeTasks para visualizar o
hostPortRange, 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 que são enviados ao EventBridge. Para obter mais informações, consulte Automatização de respostas a erros do Amazon ECS usando o EventBridge.
-
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 fornecido 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.
A
hostPortpode ser deixada em branco ou ter um valor igual acontainerPort.O intervalo de portas temporárias 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 de32768estão fora do intervalo de portas temporárias.As portas reservadas padrão são
22para SSH, as portas do Docker2375e2376e as portas do agente de contêiner do Amazon ECS51678-51680. Qualquer porta de 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 é interrompida, a porta do host é liberada. As portas reservadas atuais são exibidas nosremainingResourcesde describe-container-instances de saída. Uma instância de contêiner pode ter até 100 portas reservadas por vez, incluindo as portas reservadas padrão. As portas atribuídas automaticamente não contam em relação à cota de 100 portas reservadas. name-
Tipo: string
Obrigatório: não, obrigatório para que o Service Connect e o VPC Lattice sejam configurados em um serviço
Nome que é usado para o mapeamento da porta. Esse parâmetro só se aplica ao Service Connect e ao VPC Lattice. Esse parâmetro é o nome que você usa na configuração do Service Connect e do VPC Lattice de um serviço.
Para obter mais informações, consulte Uso do Service Connect para conectar serviços do Amazon ECS com nomes abreviados.
No exemplo a seguir, ambos os campos obrigatórios para o Service Connect e o VPC Lattice são usados.
"portMappings": [ { "name":string, "containerPort":integer} ] protocol-
Tipo: string
Obrigatório: não
O protocolo usado no mapeamento da porta. Os valores válidos são
tcpeudp. O padrão étcp.Importante
Só
tcpé compatível com o Service Connect. Lembre-se de quetcpestará implícito se esse campo não estiver definido.
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 } ... ] -
Credenciais de repositório privado
repositoryCredentials-
Tipo: objeto RepositoryCredentials
Obrigatório: não
As credenciais do repositório para autenticação de registro privado.
Para obter mais informações, consulte Uso de imagens de contêiner que não são da AWS no Amazon ECS.
-
credentialsParameter -
Tipo: string
Exigido: Sim, quando
repositoryCredentialssão usadosO nome de recurso da Amazon (ARN) do segredo que contém as credenciais do repositório privado.
Para obter mais informações, consulte Uso de imagens de contêiner que não são da AWS no Amazon ECS.
nota
Quando você usa a API do Amazon ECS, a AWS CLI ou os AWS SDKs, se o segredo existir na mesma região da tarefa que estiver sendo executada, será possível usar o ARN completo ou o nome do segredo. Ao usar o Console de gerenciamento da AWS, é preciso especificar o ARN completo do segredo.
Veja a seguir um trecho de uma definição de tarefa que mostra os parâmetros necessários.
"containerDefinitions": [ { "image": "private-repo/private-image", "repositoryCredentials": { "credentialsParameter": "arn:aws:secretsmanager:region:aws_account_id:secret:secret_name" } } ]
-
Essential
essential-
Tipo: booliano
Obrigatório: não
Caso o parâmetro
essentialde um contêiner esteja marcado comotruee 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âmetroessentialde um contêiner esteja marcado comofalse, a falha não afetará 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 Projetar sua aplicação para o Amazon ECS.
Ponto de entrada
entryPoint-
Tipo: Matriz de strings
Obrigatório: não
O ponto de entrada passado para o contêiner. Esse parâmetro é mapeado para
Entrypointno comando create-container do docker na opção--entrypointde execução do docker."entryPoint": ["string", ...]
Command
command-
Tipo: Matriz de strings
Obrigatório: não
O comando que é passado para o contêiner. Esse parâmetro é mapeado para
Cmdno comando create-container do docker e o parâmetroCOMMANDpara execução do docker. Se houver vários argumentos, cada um será uma string separada na matriz."command": ["string", ...]
Diretório de trabalho
workingDirectory-
Tipo: string
Obrigatório: não
O diretório de trabalho no qual executar comandos no contêiner. Esse parâmetro é mapeado para
WorkingDirno comando create-container do docker na opção--workdirde execução do docker.
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 run do docker usado para iniciar contêineres nas instâncias de contêiner do Amazon ECS.
Tópicos
Política de reinicialização
restartPolicy-
A política de reinicialização do contêiner e os parâmetros de configuração associados. Quando você configura uma política de reinicialização para um contêiner, o Amazon ECS pode reiniciar o contêiner sem precisar substituir a tarefa. Para obter mais informações, consulte Reiniciar contêineres individuais em tarefas do Amazon ECS com políticas de reinicialização de contêineres.
enabled-
Tipo: booliano
Obrigatório: Sim
Especifica se uma política de reinicialização está habilitada para o contêiner.
ignoredExitCodes-
Tipo: matriz de inteiros
Obrigatório: não
Uma lista de códigos de saída que o Amazon ECS ignorará e não tentará reiniciar. Você pode especificar um máximo de 50 códigos de saída de contêiner. Por padrão, o Amazon ECS não ignora nenhum código de saída.
restartAttemptPeriod-
Tipo: inteiro
Obrigatório: não
A quantidade de tempo (em segundos) que o contêiner deve ser executado antes de uma tentativa de reinicialização. Um contêiner só pode ser reiniciado uma vez a cada
restartAttemptPeriodsegundos. Se um contêiner não puder ser executado nesse período e sair mais cedo, ele não será reiniciado. Você pode especificar umrestartAttemptPeriodmínimo de 60 segundos e umrestartAttemptPeriodmáximo de 1800 segundos. Por padrão, um contêiner deve ser executado por 300 segundos antes de ser reiniciado.
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. Para obter mais informações, consulte Como determinar a integridade das tarefas do Amazon ECS usando verificações de integridade de contêineres.
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
CMDpara executar os argumentos de comando diretamente ouCMD-SHELLpara executar o comando com o shell padrão do contêiner. Se nenhuma for especificado,CMDserá usada.Ao registrar uma definição de tarefa no Console de gerenciamento da AWS, use uma lista de comandos separados por vírgulas. Esses comandos serão convertidos 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 1Ao registrar uma definição de tarefa usando o painel JSON do Console de gerenciamento da AWS, a AWS CLI ou as APIs, delimite a lista de comandos por 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. 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 é 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. Você pode especificar um valor entre 0 e 300 segundos. Por padrão, o
startPeriodestá desabilitado.Se uma verificação de integridade for bem-sucedida dentro do
startPeriod, então o contêiner é considerado saudável e quaisquer falhas subsequentes contam para o número máximo de novas tentativas.
Environment
cpu-
Tipo: inteiro
Obrigatório: não
O número de unidades de
cpuque o agente de contêiner do Amazon ECS reservará para o contêiner. No Linux, esse parâmetro é mapeado comoCpuSharesna seção Criar um contêiner. Esse campo é opcional para tarefas executadas em instâncias gerenciadas do Amazon ECS. A quantidade total de CPU reservada para todos os contêineres dentro da tarefa deve ser menor que o valor
cpude nível da tarefa.Os contêineres de 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. Além disso, essa tarefa é a única 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 garantido um mínimo de 512 unidades de CPU quando necessário. Da mesma forma, se o outro contêiner não estiver usando a CPU restante, cada contêiner poderá flutuar para o uso maior da CPU. 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 de 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. O valor de compartilhamento de CPU mínimo válido permitido pelo kernel do Linux é 2 e o valor de compartilhamento de CPU máximo válido permitido pelo kernel do Linux é 262144. No entanto, o parâmetro de CPU não é necessário, e é possível usar valores de CPU abaixo de dois e superior a 262144 em suas definições de contêiner. Para valores de CPU abaixo de dois (inclusive nulo) e acima de 262144, o comportamento varia com base na versão do agente de contêiner do Amazon ECS:
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
GPUsfí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 Definições de tarefa do Amazon ECS para workloads de GPU. Elastic Inference accelerator-
nota
Esse parâmetro não é compatível com contêineres hospedados em instâncias gerenciadas do Amazon ECS.
Tipo: objeto ResourceRequirement
Obrigatório: não
Para o tipo
InferenceAccelerator, ovaluecorresponde aodeviceNamepara umInferenceAcceleratorespecificado em uma definição de tarefa. Para obter mais informações, consulte Nome do acelerador do Elastic Inference (obsoleto). essential-
Tipo: booliano
Obrigatório: não
Suponha que o parâmetro
essentialde um contêiner esteja marcado comotrue, e que esse contêiner falhe ou seja interrompido por algum motivo. Em seguida, todos os outros contêineres que fazem parte da tarefa são interrompidos. Caso o parâmetroessentialde 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. Suponha que você tenha uma aplicação composta por vários contêineres. Em seguida, agrupe os contêineres usados para uma finalidade em comum em componentes e separe os componentes diferentes em várias definições de tarefa. Para obter mais informações, consulte Projetar sua aplicação para o Amazon ECS.
"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 matrizcommandem vez disso.Tipo: Matriz de strings
Obrigatório: não
O ponto de entrada passado para o contêiner.
"entryPoint": ["string", ...] command-
Tipo: Matriz de strings
Obrigatório: não
O comando que é passado para o contêiner. Esse parâmetro é mapeado para
Cmdno comando create-container e o parâmetroCOMMANDde execução do docker. Se houver vários argumentos, certifique-se de que cada um seja uma string separada na matriz."command": ["string", ...] workingDirectory-
Tipo: string
Obrigatório: não
O diretório de trabalho no qual executar comandos no contêiner. Esse parâmetro é mapeado para
WorkingDirna seção Criar um contêinerda Docker Remote API e a opção --workdirpara 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-filepara o comando run do docker.É possível especificar até 10 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.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 Transferência de uma variável de ambiente individual para um contêiner do Amazon ECS.
value-
Tipo: String
Exigido: sim
O nome de recurso da Amazon (ARN) do objeto do Amazon S3 que contém o arquivo de variáveis de ambiente.
type-
Tipo: String
Exigido: sim
Tipo de arquivo a ser usado O único valor aceito é
s3.
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
Envno comando create-container do docker na opção--envpara o comando run do docker.Importante
Não recomendamos o uso de variáveis de ambiente de texto simples para informações confidenciais, tais como dados de credenciais.
name-
Tipo: string
Exigido: sim, quando
environmentfor usadoO nome da variável de ambiente.
value-
Tipo: string
Exigido: sim, quando
environmentfor usadoO valor da variável de ambiente.
"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 Transferência de dados confidenciais para um contêiner do Amazon ECS.
name-
Tipo: String
Exigido: sim
O valor a ser definido como a variável de ambiente no contêiner.
valueFrom-
Tipo: String
Exigido: 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 ou do Secrets Manager existir na mesma Região da AWS que a tarefa sendo iniciada, 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" } ]
Segurança
privileged-
Tipo: booliano
Obrigatório: não
Quando esse parâmetro é
true, o contêiner recebe privilégios elevados na instância de contêiner host (semelhante ao usuárioroot). Esse parâmetro é mapeado paraPrivilegedno comando create-container do docker na opção--privilegedde execução do docker. user-
Tipo: string
Obrigatório: não
O usuário a ser utilizado dentro do contêiner. Esse parâmetro é mapeado para
Userno comando create-container do docker na opção--userde execução do docker.Importante
Quando executar tarefas usando o modo de rede
host, não execute contêineres usando o usuário raiz (UID 0). Recomendamos o uso de um usuário que não seja raiz para melhor segurança.É possível especificar o
userusando 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
-
readonlyRootFilesystem-
Tipo: booliano
Obrigatório: não
Quando esse parâmetro é
true, o contêiner recebe um sistema de arquivos raiz somente leitura. Esse parâmetro é mapeado paraReadonlyRootfsno comando create-container do docker na opção--read-onlyde execução do docker. dockerSecurityOptions-
nota
Esse parâmetro não é compatível com tarefas executadas em instâncias gerenciadas do Amazon ECS.
Tipo: Matriz de strings
Obrigatório: não
Uma lista de strings a fim de fornecer rótulos personalizados para sistemas de segurança multinível SELinux e AppArmor. Esse campo não é válido para contêineres em tarefas que usam o Fargate.
ulimits-
Tipo: matriz de objetos Ulimit
Obrigatório: não
Uma lista de
ulimitsa ser definida no contêiner. Se um valor ulimit for especificado em uma definição de tarefa, ele substituirá os valores padrão definidos pelo Docker. Esse parâmetro é mapeado paraUlimitsno comando create-container do docker na opção--ulimitde execução do docker. Valores de nomenclatura válidos são exibidos no tipo de dados Ulimit.As tarefas do Amazon ECS hospedadas no Fargate usam os valores de limite de recursos padrão definidos pelo sistema operacional, com exceção do parâmetro de limite de recursos
nofile, que é substituído pelo Fargate. O limite de recursosnofiledefine uma restrição sobre o número de arquivos abertos que um contêiner pode usar. O limite flexível padrãonofileé1024e o limite rígido padrão é65535.Este parâmetro requer a versão 1.18 da Docker Remote API ou posterior em sua instância de contêiner. Para verificar a versão da API remota do Docker na instância de contêiner, faça login na instância de contêiner e execute o seguinte comando:
sudo docker version --format '{{.Server.APIVersion}}'
dockerLabels-
Tipo: mapa de 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
Labelsno comando create-container do docker na opção--labelde execução do docker.Este parâmetro requer a versão 1.18 da Docker Remote API ou posterior em sua instância de contêiner.
"dockerLabels": {"string": "string" ...}
Configurações de rede
disableNetworking-
nota
Esse parâmetro não é compatível com tarefas executadas em instâncias gerenciadas do Amazon ECS.
Tipo: booliano
Obrigatório: não
Quando esse parâmetro é verdadeiro, a rede é desativada dentro do contêiner.
O padrão é
false."disableNetworking": true|false links-
nota
Esse parâmetro não é compatível com tarefas executadas em instâncias gerenciadas do Amazon ECS.
Tipo: Matriz de strings
Obrigatório: não
O parâmetro
linkpermite que os contêineres se comuniquem entre si sem a necessidade de mapeamentos de porta. Só há suporte para esse parâmetro se o modo de rede de uma definição de tarefa estiver definido comobridge. O construtoname:internalNameé igual aoname:aliasem links do Docker. São permitidos até 255 letras (caixa alta e baixa), números, hífens e sublinhados.Importante
Os contêineres colocados na mesma instância de contêiner podem se comunicar entre si sem exigir links ou mapeamentos de porta de 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-
nota
Esse parâmetro não é compatível com tarefas executadas em instâncias gerenciadas do Amazon ECS.
Tipo: string
Obrigatório: não
O nome de host a ser usado para o contêiner. Esse parâmetro é mapeado para
Hostnameem create-container do docker na opção--hostnamede execução do docker."hostname": "string" dnsServers-
nota
Esse parâmetro não é compatível com tarefas executadas em instâncias gerenciadas do Amazon ECS.
Tipo: Matriz de strings
Obrigatório: não
Uma lista de servidores DNS apresentados ao contêiner.
"dnsServers": ["string", ...] extraHosts-
nota
Esse parâmetro não é compatível com tarefas que usam o modo de rede
awsvpc.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/hostsno contêiner.Esse parâmetro é mapeado para
ExtraHostsno comando create-container do docker na opção--add-hostde execução do docker."extraHosts": [ { "hostname": "string", "ipAddress": "string" } ... ]hostname-
Tipo: string
Exigido: Sim, quando
extraHostssão usadosO nome do host a ser usado na entrada
/etc/hosts. ipAddress-
Tipo: string
Exigido: Sim, quando
extraHostssão usadosO endereço IP a ser usado na entrada
/etc/hosts.
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
ReadonlyRootfsno comando create-container do docker na opção--read-onlyde execução do docker.O padrão é
false."readonlyRootFilesystem": true|false mountPoints-
Tipo: Matriz de objeto
Obrigatório: não
Os pontos de montagem dos volumes de dados no contêiner. Esse parâmetro é mapeado em
Volumesna API create-container do Docker na opção--volumede execução do docker.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 os pontos de montagem não podem ser usados entre unidades. Você deve especificar pontos de montagem para anexar um volume do Amazon EBS diretamente a uma tarefa do Amazon ECS.sourceVolume-
Tipo: string
Exigido: Sim, quando
mountPointssão usadosO nome do volume a ser montado.
containerPath-
Tipo: string
Exigido: Sim, quando
mountPointssão usadosO caminho no contêiner onde o volume será montado.
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.Para tarefas executadas em instâncias do EC2 que executam o sistema operacional Windows, deixe o valor como o padrão de
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
VolumesFromno comando create-container do docker na opção--volumes-fromde execução do docker.sourceContainer-
Tipo: string
Exigido: sim, quando
volumesFromfor 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: objeto LogConfiguration
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 do Amazon ECS.
Esse parâmetro é mapeado para
LogConfigno comando create-container do docker na opção--log-driverde execução do docker. Por padrão, os contêineres usam o mesmo driver de registro em log que o daemon do Docker usa. No entanto, o contêiner pode usar um driver de registro em log 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).Considere o seguinte ao especificar uma configuração de log para seus contêineres:
-
O Amazon ECS oferece suporte a um subconjunto dos drivers de registro em log disponíveis para o daemon Docker.
-
Esse parâmetro exige a versão 1.18 ou posterior da API remota do Docker na sua instância de contêiner.
"logConfiguration": { "logDriver": "awslogs",""splunk", "awsfirelens", "options": {"string": "string" ...}, "secretOptions": [{ "name": "string", "valueFrom": "string" }] }logDriver-
Tipo: string
Valores válidos:
"awslogs","splunk","awsfirelens"Exigido: sim, quando
logConfigurationfor 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.
Os drivers de log compatíveis são
awslogs,splunkeawsfirelens.Para obter mais informações sobre como usar o driver de log
awslogsnas definições de tarefa para enviar os logs de contêiner ao CloudWatch Logs, consulte Envio de logs do Amazon ECS para o CloudWatch .Para obter mais informações sobre o uso do driver de log
awsfirelens, consulte Envio de logs do Amazon ECS para um serviço da AWS ou para uma AWS Partner.nota
Se tiver um driver personalizado que não esteja listado acima, será possível bifurcar o projeto do agente de contêiner do Amazon ECS que está disponível no GitHub
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 a versão 1.18 da Docker Remote API ou posterior em sua instância de contêiner.
options-
Tipo: mapa de string para string
Obrigatório: não
O mapa chave/valor de opções de configuração a serem enviadas para o driver de log.
As opções que você pode especificar dependem do driver de log. Algumas das opções que você pode especificar ao usar o roteador
awslogspara rotear os logs para o Amazon CloudWatch incluem o seguinte:awslogs-create-group-
Obrigatório: não
Especifique se você deseja que o grupo de logs seja criado automaticamente. Se essa opção não for especificada, o padrão será
false.nota
Sua política do IAM deve incluir a permissão
logs:CreateLogGroupantes que você tente usarawslogs-create-group. awslogs-region-
Obrigatório: Sim
Especifique a Região da AWS para a qual o driver de log do
awslogsdeve enviar seus logs do Docker. É possível optar por enviar todos os logs de clusters em regiões distintas para uma única região no CloudWatch Logs. Isso tem o objetivo de fazer com que todos fiquem visíveis em um único local. Caso contrário, você pode separá-los por região para mais granularidade. Certifique-se de que o grupo de logs especificado exista na região especificada com essa opção. awslogs-group-
Obrigatório: Sim
Certifique-se de especificar um grupo de logs para o qual o driver de log do
awslogsenvia seus fluxos de logs. awslogs-stream-prefix-
Obrigatório: Sim
Use a opção
awslogs-stream-prefixpara associar um fluxo de log ao prefixo especificado, ao nome do contêiner e ao ID da tarefa do Amazon ECS à qual o contêiner pertence. Caso você especifique um prefixo com essa opção, o fluxo de log utiliza o seguinte formato.prefix-name/container-name/ecs-task-idSe você não especificar um prefixo com essa opção, o fluxo de log será nomeado depois que o ID do contêiner for atribuído pelo daemon do Docker na instância de contêiner. Como é difícil rastrear logs até o contêiner que os enviou apenas com o ID do contêiner do Docker (disponível apenas na instância de contêiner), recomendamos especificar um prefixo com essa opção.
Para serviços do Amazon ECS, é possível utilizar o nome do serviço como prefixo. Ao fazer isso, será possível rastrear fluxos de logs até o serviço ao qual o contêiner pertence, o nome do contêiner que os enviou e o ID da tarefa à qual o contêiner pertence.
Você deve especificar um stream-prefix para seus logs para fazer com que eles apareçam no painel Logs quando o console do Amazon ECS for usado.
awslogs-datetime-format-
Obrigatório: não
Essa opção define um padrão de início de várias linhas no formato
strftimeem Python. Uma mensagem de log é formada por uma linha em conformidade com o padrão e as linhas seguintes que não correspondem ao padrão. A linha em conformidade é o delimitador entre as mensagens de log.Um exemplo de um caso de uso para esse formato é a análise da saída, como um despejo de pilha, que poderia ser registrado em várias entradas. O padrão correto permite que ele seja capturado em uma única entrada.
Para obter mais informações, consulte awslogs-datetime-format
. Você não pode configurar as opções
awslogs-datetime-formateawslogs-multiline-pattern.nota
O registro em várias linhas executa a análise da expressão regular e a correspondência de todas as mensagens de log. Isso pode ter um impacto negativo na performance do registro em log.
awslogs-multiline-pattern-
Obrigatório: não
Essa opção define um padrão inicial de várias linhas que usa uma expressão regular. Uma mensagem de log é formada por uma linha em conformidade com o padrão e as linhas seguintes que não correspondem ao padrão. A linha em conformidade é o delimitador entre as mensagens de log.
Para obter mais informações, consulte awslogs-multiline-pattern
. Essa opção será ignorada se
awslogs-datetime-formattambém estiver configurado.Você não pode configurar as opções
awslogs-datetime-formateawslogs-multiline-pattern.nota
O registro em várias linhas executa a análise da expressão regular e a correspondência de todas as mensagens de log. Isso pode ter um impacto negativo na performance do registro em log.
mode-
Obrigatório: não
Valores válidos:
non-blocking|blockingEssa opção define o modo de entrega de mensagens de log do contêiner para o driver de log do
awslogs. O modo de entrega escolhido afeta a disponibilidade da aplicação quando o fluxo de logs do contêiner é interrompido.Se você usar o modo
blockinge o fluxo de logs para o CloudWatch for interrompido, as chamadas do código do contêiner para gravar nos fluxosstdoutestderrserão bloqueadas. Como resultado, o encadeamento de logs da aplicação será bloqueado. Isso pode fazer com que a aplicação pare de responder e causar uma falha na verificação de integridade do contêiner.Se você usar o modo
non-blocking, os registros do contêiner serão armazenados em um buffer intermediário na memória configurado com a opçãomax-buffer-size. Isso evita que a aplicação pare de responder quando os registros não puderem ser enviados para o CloudWatch. Recomendamos usar esse modo se você quiser garantir a disponibilidade do serviço e aceitar alguma perda de logs. Para obter mais informações, consulte Preventing log loss with non-blocking mode in theawslogscontainer log driver. max-buffer-size-
Obrigatório: não
Valor padrão:
1mQuando o modo
non-blockingé usado, a opção de logmax-buffer-sizecontrola o tamanho do buffer de anel usado para armazenamento de mensagens intermediárias. Certifique-se de especificar um tamanho de buffer adequado com base na sua aplicação. Quando o buffer ficar cheio, logs adicionais não poderão ser armazenados. Os logs que não puderem ser armazenados serão perdidos.
Para rotear logs usando o roteador de logs do
splunk, você precisa especificar umsplunk-tokene umsplunk-url.Ao usar o roteador de log
awsfirelenspara rotear logs para um destino do AWS service (Serviço da AWS) ou para armazenamento e analytics de logs do AWS Partner Network, você pode definir a opçãolog-driver-buffer-limitpara limitar o número de eventos que são armazenados em buffer na memória antes de serem enviados ao contêiner do roteador de logs. Isso pode ajudar a resolver possíveis problemas de perda de logs, pois o alto throughput pode resultar na falta de memória para o buffer dentro do Docker. Para obter mais informações, consulte Configuração de logs do Amazon ECS para obtenção de alto throughput.Outras opções que você pode especificar ao usar o
awsfirelenspara rotear logs dependem do destino. Ao exportar logs para o Amazon Data Firehose, você pode especificar a Região da AWS com aregione um nome para o fluxo de logs comdelivery_stream.Ao exportar logs para o Amazon Kinesis Data Streams, você pode especificar um Região da AWS com a
regionum com e um nome de fluxo de dados comstream.Ao exportar logs para o Amazon OpenSearch Service, você pode especificar opções como
Name,Host(endpoint do OpenSearch Service sem protocolo)Port,Index,Type,Aws_auth,Aws_region,Suppress_Type_Nameetls.Ao exportar logs para o Amazon S3, você pode especificar o bucket usando a opção
bucket. Você também pode especificarregion,total_file_size,upload_timeouteuse_put_objectcomo opções.Este parâmetro requer a versão 1.19 da Docker Remote API 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. Os segredos usados na configuração de log podem incluir tokens de autenticação, certificados ou chaves de criptografia. Para obter mais informações, consulte Transferência de dados confidenciais para um contêiner do Amazon ECS.
name-
Tipo: String
Exigido: sim
O valor a ser definido como a variável de ambiente no contêiner.
valueFrom-
Tipo: String
Exigido: 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-
Tipe: objeto FirelensConfiguration
Obrigatório: não
A configuração do FireLens para o contêiner. Isso é usado para especificar e configurar um roteador de log para logs de contêiner. Para obter mais informações, consulte Envio de logs do Amazon ECS para um serviço da AWS ou para uma AWS Partner.
{ "firelensConfiguration": { "type": "fluentd", "options": { "KeyName": "" } } }options-
Tipo: Mapa de string para string
Obrigatório: não
O mapa chave/valor de 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:::. Para obter mais informações, consulte Exemplo de definição de tarefa do Amazon ECS: rotear logs para o FireLens.amzn-s3-demo-bucket/fluent.conf|filepath"} type-
Tipo: String
Exigido: sim
O roteador de log a ser usado. Os valores válidos são
fluentdoufluentbit.
Requisitos de recursos
resourceRequirements-
Tipo: objetos ResourceRequirement
Obrigatório: não
O tipo e a quantidade de um recurso a serem atribuídos a um contêiner. O único recurso compatível é uma GPU.
type-
Tipo: String
Exigido: sim
O tipo de recurso a ser atribuído a um contêiner. O valor suportado é
GPU. value-
Tipo: String
Exigido: sim
O valor do tipo de recurso especificado.
Se o tipo
GPUfor usado, o valor será o número deGPUsfísicas que o agente de contêiner do Amazon ECS reserva para o contêiner. O número de GPUs reservadas para todos os contêineres em uma tarefa não pode exceder o número de GPUs disponíveis na instância de contêiner na qual a tarefa é iniciada.As GPUs não estão disponíveis para tarefas executados no Fargate.
Tempos limite de contêiner
startTimeout-
Tipo: inteiro
Obrigatório: não
Valores de exemplo:
120Tempo 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
containerAtendo uma dependência docontainerBatingir um statusCOMPLETE,SUCCESSouHEALTHY. Se um valor destartTimeoutfor especificado para ocontainerBe ele não atingir o status desejado nesse tempo, ocontainerAnã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.
O valor máximo é de 600 segundos (10 minutos).
stopTimeout-
Tipo: inteiro
Obrigatório: não
Valores de exemplo:
120Período (em segundos) a ser aguardado antes de o contêiner ser eliminado de maneira forçada se não for encerrado normalmente por conta própria.
Se o parâmetro não for especificado, então o valor padrão de 30 segundos será usado. O valor máximo é de 86.400 segundos (24 horas).
Dependência de contêiner
dependsOn-
Tipo: matriz de objetos ContainerDependency
Obrigatório: não
As dependências definidas para startup e desligamento do contêiner. Um contêiner pode conter várias dependências. Quando uma dependência é definida para o startup do contêiner, ela é revertida para o desligamento do contêiner. Para ver um exemplo, consulte 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.
Este parâmetro exige que a tarefa ou o serviço usem a plataforma versão
1.3.0ou posterior (Linux), ou1.0.0(Windows)."dependsOn": [ { "containerName": "string", "condition": "string" } ]containerName-
Tipo: String
Exigido: sim
O nome do contêiner que deve atender à condição especificada.
condition-
Tipo: String
Exigido: 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. A condição 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 no startup da tarefa.
-
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
Sysctlsno comando create-container do docker e na opção--sysctlde execução do docker. Por exemplo, é possível definir a configuraçãonet.ipv4.tcp_keepalive_timepara manter conexões de longa duração.Não recomendamos que você especifique parâmetros
systemControlsrelacionados à rede para vários contêineres em uma única tarefa que também use o modo de redeawsvpcouhost. Fazer isso apresenta as desvantagens a seguir:-
Se você definir
systemControlspara algum contêiner, isso se aplicará a todos os contêineres na tarefa. Se você definir umsystemControlsdiferente para vários contêineres em uma única tarefa, o contêiner iniciado por último determinará qualsystemControlsentra em vigor.
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 IPCsystemControlsnão é compatível. -
Para tarefas que usam o modo IPC de
task, os valores desystemControlsdo namespace IPC serão aplicados a todos os contêineres em uma tarefa.
"systemControls": [ { "namespace":"string", "value":"string" } ]namespace-
Tipo: string
Obrigatório: não
O parâmetro de kernel com namespace para o qual definir 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"eSysctls, que comecem com"fs.mqueue.*"Valores de namespace de rede válidos:
Sysctls, que comece com"net.*". No Fargate, apenas osSysctlscom namespace existentes dentro do contêiner são aceitos.Há suporte para todos esses valores no Fargate.
value-
Tipo: string
Obrigatório: não
O valor do parâmetro de kernel com 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 destdinoutty. Esse parâmetro é mapeado paraOpenStdinno comando create-container do docker na opção--interactivede execução do docker.O padrão é
false.
Pseudoterminal
pseudoTerminal-
Tipo: booliano
Obrigatório: não
Quando esse parâmetro é
true, um TTY é alocado. Esse parâmetro é mapeado paraTtyno comando create-container do docker na opção--ttyde execução do docker.O padrão é
false.
Parâmetros do Linux
linuxParameters-
Tipo: Objeto LinuxParameters
Obrigatório: não
Modificações específicas ao Linux aplicadas ao contêiner, como recursos do kernel do Linux.
capabilities-
Tipo: objeto KernelCapabilities
Obrigatório: não
Os recursos do Linux para o contêiner que são adicionados ou descartados da configuração padrão fornecida pelo Docker.
devices-
Tipo: Matriz de objetos Device
Obrigatório: não
Todos os dispositivos do host a serem expostos ao contêiner. Esse parâmetro é mapeado para
Devicesno comando create-container do docker na opção--devicede execução do docker. initProcessEnabled-
Tipo: booliano
Obrigatório: não
Execute um processo
initdentro do contêiner que encaminha sinais e colhe processos. Esse parâmetro é mapeado para a opção--initde execução do docker. maxSwap-
nota
Esse parâmetro não é compatível com tarefas executadas em instâncias gerenciadas do Amazon ECS.
Tipo: inteiro
Obrigatório: não
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-swappara execução do docker em que o valor é a soma da memória do contêiner mais o valor demaxSwap. swappiness-
nota
Esse parâmetro não é compatível com tarefas executadas em instâncias gerenciadas do Amazon ECS.
Tipo: inteiro
Obrigatório: não
Isso permite ajustar o comportamento de troca de memória de um contêiner. Um valor
swappinessde0fará com que a troca não ocorra, a menos que seja absolutamente necessário. Um valorswappinessde100fará com que as páginas sejam trocadas de forma muito agressiva. Os valores válidos são números inteiros de0a100. Se o parâmetroswappinessnão for especificado, será usado um valor padrão de60. Se nenhum valor for especificado paramaxSwap, esse parâmetro será ignorado. Esse parâmetro é mapeado para a opção--memory-swappinessde execução do docker. -
nota
Esse parâmetro não é compatível com tarefas executadas em instâncias gerenciadas do Amazon ECS.
Tipo: inteiro
Obrigatório: não
O tamanho (em MiB) do volume
/dev/shm. Esse parâmetro é mapeado para a opção--shm-sizede execução do docker. tmpfs-
Tipo: Matriz de objetos Tmpfs
Obrigatório: não
O caminho do contêiner, as opções de montagem e o tamanho (em MiB) da montagem tmpfs. Esse parâmetro é mapeado para a opção
--tmpfsde execução do docker.