Parâmetros de definição de tarefa - Amazon ECS

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 Exemplo de definições de tarefas de opções de registro.

Veja a seguir as descrições mais detalhadas de cada parâmetro de definição de tarefa.

Família

family

Tipo: String

Obrigatório: 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 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 no Fargate, é necessário o modo de redeawsvpc.

Quando o modo de rede for awsvpc, será alocada uma interface de rede elástica para a tarefa e você deverá especificar uma NetworkConfiguration ao criar um serviço ou executar uma tarefa com a definição da tarefa. Para obter mais informações, consulte Redes de tarefas do Fargate no Guia do usuário do Amazon Elastic Container Service para o AWS Fargate.

O modo de rede awsvpc oferece a melhor performance de rede para contêineres, pois usa a pilha de rede do Amazon EC2. As portas do contêiner expostas são mapeadas diretamente para a porta da interface de rede elástica conectada. Por causa disso, não é possível usar mapeamentos dinâmicos de portas de host.

Plataforma de tempo de execução

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 e WINDOWS_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 e WINDOWS_SERVER_2019_CORE, WINDOWS_SERVER_2016_FULL, WINDOWS_SERVER_2004_CORE e WINDOWS_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. Se o parâmetro for deixado como estánull, o valor padrão é atribuído automaticamente no início de uma tarefa hospedada no Fargate.

Ao registrar uma definição de tarefa, você especifica a arquitetura da CPU. Os valores válidos são X86_64 e ARM64.

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 ou 1 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 no Fargate (contêineres Linux e Windows), esse campo é obrigatório e você deve usar um dos valores a seguir, que determina sua faixa de valores suportados para o memory parâmetro. Os valores de memória no arquivo JSON são especificados em MiB. Você pode converter o valor de GB em MiB multiplicando o valor por 1024. Por exemplo, 1 GB = 1024 MiB.

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 exemplo 1GB ou 1 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 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 que são passadas para o Docker daemon em uma instância de contêiner. Os parâmetros a seguir são permitidos em uma definição de contêiner.

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

Obrigatório: 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 no links de outro contêiner. Isso deve ser feito para conectar os contêineres.

Imagem

image

Tipo: String

Obrigatório: sim

A imagem usada para iniciar um contêiner. Essa string é passada diretamente para o Docker daemon. Por padrão, as imagens no Docker Hub registro estão disponíveis. Você também pode especificar outros repositórios com repository-url/image:tag ou repository-url/image@digest. 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 para Image na seção Criar um contêiner da 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 ou registry/repository@digest (por exemplo, aws_account_id.dkr.ecr.region.amazonaws.com/my-web-app:latest ou aws_account_id.dkr.ecr.region.amazonaws.com/my-web-app@sha256:94afd1f2e64d908bc90dbca0035a5b567EXAMPLE).

  • Imagens em repositórios oficiais Docker Hub usam um único nome (por exemplo, ubuntu oumongo).

  • As imagens em outros repositórios Docker Hub são qualificadas com o nome de uma 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 para Memory na seção Criar um contêiner da API remota do Docker e a opção --memory para docker run.

Se você estiver usando o tipo de lançamento Fargate, esse parâmetro é opcional.

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.

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 está sob contenção, Docker tenta manter a memória do contêiner nesse limite flexível. No entanto, seu contêiner pode usar mais memória quando necessário. O contêiner pode usar até o limite rígido especificado com o memory parâmetro (se aplicável) ou toda a memória disponível na instância do contêiner, o que ocorrer primeiro. Esse parâmetro é mapeado para MemoryReservation na seção Criar um contêiner da 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 ou memoryReservation em uma definição de contêiner. Caso você especifique ambos, memory deve ser maior que memoryReservation. Caso você especifique memoryReservation, 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 de memory é usado.

Por exemplo, suponha que seu contêiner normalmente use 128 MiB de memória, mas ocasionalmente aumente para 256 MiB de memória por curtos períodos de tempo. Você pode definir um memoryReservation de 128 MiB e um limite memory rígido 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, essa configuração também permite que o contêiner use 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.

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 especifique containerPort. O hostPort pode ser mantido em branco ou com o mesmo valor docontainerPort.

A maioria dos campos desse parâmetro (incluindocontainerPort,hostPort,protocol) são PortBindings mapeados para a seção Criar um contêiner da Docker Remote API e a --publish opção 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: 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á tratamento de conexão específico ao protocolo ao proxy de conexão de serviço. Se você definir esse parâmetro, o Amazon ECS adicionará telemetria específica do protocolo no console do Amazon ECS e. 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 Service Connect .

Valores de protocolo válidos: "HTTP" | "HTTP2" | "GRPC"

containerPort

Tipo: inteiro

Exigido: Sim, quando portMappings são usados

O 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.

Suponha que você esteja usando contêineres em uma tarefa com o tipo de execução do EC2 e especifique uma porta de contêiner e não uma porta de host. Em seguida, seu contêiner recebe automaticamente uma porta de host no intervalo de portas efêmeras. Para obter mais informações, consulte hostPort. Os mapeamentos de portas atribuídos automaticamente dessa forma não contam para a cota de 100 portas reservadas de uma instância de contêiner.

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âmetro portMappings. 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 rede awsvpc.

  • 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 do 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 para cada contêiner.

  • Você não especifica umhostPortRange. O valor do hostPortRange é definido da seguinte forma:

    • Para contêineres em uma tarefa com o modo de rede awsvpc, o hostPort é definido com o mesmo valor que containerPort. 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 porta para cada contêiner.

  • Você não pode especificar intervalos de portas sobrepostos.

  • A primeira porta no intervalo deve ser menor que a última porta no intervalo.

  • Dockerrecomenda que você desative o docker-proxy no arquivo de configuração do Docker daemon quando tiver um grande número de portas.

    Para obter mais informações, consulte o problema #11185 no Github.

    Para obter informações sobre como desativar o docker-proxy no arquivo de configuração do Docker daemon, consulte Dockerdaemon no Guia do desenvolvedor do Amazon ECS.

Você pode ligar DescribeTaskspara ver ashostPortRange, 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 para o. EventBridge Para obter mais informações, consulte Eventos do Amazon ECS e EventBridge.

hostPortRange

Tipo: String

Obrigatório: não

O intervalo de números de portas no host que é usado com a vinculação de rede. Isso é atribuído 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 de containerPort.

Suponha que você esteja usando contêineres em uma tarefa com o tipo de execução do EC2. Você pode especificar uma porta de host não reservada para o mapeamento da porta do contêiner. Isso é conhecido como mapeamento estático da porta do host. Ou você pode omitir o hostPort (ou configurá-lo como0) ao especificar um. containerPort Seu contêiner recebe automaticamente uma porta no intervalo de portas efêmeras para o sistema operacional e a versão da instância do contêiner. Docker Isso é conhecido como mapeamento dinâmico da porta do host.

O intervalo de portas efêmeras padrão Docker versão 1.6.0 e posterior está listado na instância abaixo. /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 de 49153–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 32768 estão fora do intervalo de portas efêmeras.

As portas reservadas padrão são 22 para SSH, as Docker portas e. 2375 e 2376 as portas do agente de contêiner do Amazon ECS. 51678-51680 Qualquer porta de host que tenha sido previamente especificada pelo usuário 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 na describe-container-instances saída remainingResources of. 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 para a cota de 100 portas reservadas.

name

Tipo: String

Obrigatório: Não, necessá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 do Service Connect 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 tcp e udp. O padrão é tcp.

Importante

tcp é compatível com o Service Connect. Lembre-se de que tcp estará 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 do 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 Autenticação de registro privado para tarefas.

credentialsParameter

Tipo: String

Exigido: Sim, quando repositoryCredentials são usados

O nome de recurso da Amazon (ARN) do segredo que contém as credenciais do repositório privado.

Para obter mais informações, consulte Autenticação de registro privado para tarefas.

nota

Ao usar a API ou AWS SDKs do Amazon ECS, se o segredo existir na mesma região da tarefa que você está iniciando, você poderá usar o ARN completo ou o nome do segredo. AWS CLI Ao usar oAWS Management Console, você deve 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" } } ]

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 usado para iniciar contêineres nas instâncias de contêiner do Amazon ECS.

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 container da 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 usando um dos dois métodos. Você pode chamar a operação DescribeTasks da API ou visualizar os detalhes da tarefa no console.

A verificação de integridade foi projetada para garantir que seus contêineres sobrevivam às reinicializações, atualizações ou indisponibilidade temporária do agente.

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 com sucesso.

  • UNHEALTHY— A verificação da integridade do contêiner falhou.

  • UNKNOWN— A verificação de integridade do contêiner está sendo avaliada, não há nenhuma verificação de integridade do contêiner definida ou o Amazon ECS não tem o status de integridade do contêiner.

A seguir, descrevemos os healthStatus valores possíveis com base no status do verificador de integridade dos contêineres essenciais na tarefa com a seguinte ordem de prioridade (alta para baixa):

  • UNHEALTHY—Um ou mais recipientes essenciais falharam na verificação de saúde.

  • UNKNOWN—Qualquer contêiner essencial executado na tarefa está em um UNKNOWN estado e nenhum outro contêiner essencial tem um UNHEALTHY estado.

  • HEALTHY—Todos os contêineres essenciais da tarefa foram aprovados nas verificações de saúde.

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 tarefas que fazem parte de um serviço, se a tarefa for relatada como não íntegra, uma tarefa de substituição será iniciada primeiro pelo agendador de serviços. Quando a tarefa de substituição tiver um healthStatus valor de HEALTHY ouUNHEALTHY, o agendador de serviços poderá interromper a tarefa não íntegra. Para obter mais informações, consulte Conceitos do agendador de serviços.

Veja a seguir observações sobre a compatibilidade de verificação de integridade do contêiner.

  • Quando o agente do Amazon ECS não consegue se conectar ao serviço Amazon ECS, o serviço relata o contêiner como. UNHEALTHY

  • Os status da verificação de saúde são a resposta da “última vez que ouvi falar” do agente do Amazon ECS. Não há suposições sobre o status das verificações de integridade do contêiner.

  • Se você estiver usando a plataforma Linux versão 1.1.0 ou posteriorContainer, as verificações de integridade do contêiner são suportadas para tarefas do Fargate. Para obter mais informações, consulte Versões da plataforma do AWS Fargate.

command

Uma matriz de strings que representa o comando que o contêiner executa para determinar se está íntegro. A matriz de strings pode começar com CMD para executar os argumentos de comando diretamente ou CMD-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 noAWS Management Console, use uma lista de comandos separados por vírgulas. Esses comandos são convertidos em uma string após a criação da definição da 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 AWS Management Console JSON, o, ou as APIsAWS CLI, coloque 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, consulte HealthCheck na seção Criar um contêiner da the API remota do Docker.

interval

O período em segundos entre cada verificação de integridade. Você pode 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. Você pode 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. Você pode 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 para CpuShares na seção Criar um contêiner da 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 que estão disponíveis para cada tipo de instância do Amazon EC2. Para fazer isso, multiplique o número de vCPUs listadas para esse tipo de instância na página de detalhes das Instâncias do Amazon EC2 por 1.024.

Linuxos contêineres compartilham unidades de CPU não alocadas com outros contêineres na instância do contêiner na mesma proporção da 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 do 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 a garantia de 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 um 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.

Em instâncias de Linux contêiner, o Docker daemon na instância de contêiner usa o valor da CPU para calcular as taxas relativas 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 do agente <= 1.1.0: valores de CPU nulos e zero são passados como 0. Docker Dockerem seguida, converte esse valor em 1.024 compartilhamentos de CPU. Os valores de CPU de um são passados para Docker um, que o Linux kernel converte em dois compartilhamentos de CPU.

  • Versões do agente >= 1.2.0: valores nulos, zero e de CPU de um são passados Docker como dois compartilhamentos de CPU.

Em instâncias de Windows contêiner, a cota de CPU é imposta como uma cota absoluta. Windowsos contêineres só têm acesso à quantidade especificada de CPU definida na definição da tarefa. Um valor de CPU nulo ou zero é passado para Docker as0. Windowsem seguida, interpreta esse valor como 1% de uma CPU.

Para obter mais exemplos, consulte Como o Amazon ECS gerencia recursos de CPU e memória.

essential

Tipo: booliano

Obrigatório: não

Suponha que o essential parâmetro de um contêiner esteja marcado como true e que esse contêiner falhe ou pare por qualquer motivo. Em seguida, todos os outros contêineres que fazem parte da tarefa são interrompidos. Caso o parâmetro essential de um contêiner esteja marcado como false, 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 um aplicativo composto por vários contêineres. Em seguida, agrupe os contêineres usados para uma finalidade comum em componentes e separe os diferentes componentes em várias definições de tarefas. Para obter mais informações, consulte Arquitetando seu aplicativo 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 usar entryPoint, atualize o agente de contêiner ou informe os comandos e os argumentos como itens de matriz command 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êiner da API remota do Docker e a opção --entrypoint para docker run. Para obter mais informações sobre o Docker ENTRYPOINT parâmetro, 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êiner da API remota do Docker e o parâmetro COMMAND de docker run. Para obter mais informações sobre o Docker CMD parâmetro, consulte https://docs.docker.com/engine/reference/builder/#cmd. Se houver vários argumentos, certifique-se de que cada argumento 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 WorkingDir na seção Criar um contêiner da API remota do Docker e a opção --workdir para docker run.

"workingDirectory": "string"
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êiner da 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.

name

Tipo: String

Exigido: sim, quando environment for usado

O nome da variável de ambiente.

value

Tipo: String

Exigido: sim, quando environment for usado

O 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 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)

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êiner da API remota do Docker e a opção --dns para docker run.

nota

Esse parâmetro não é compatível com Windows contêineres ou tarefas usando o modo awsvpc de rede.

"dnsServers": ["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êiner da 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.

O padrão é false.

"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êiner da 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 usados

O nome do volume a ser montado.

containerPath

Tipo: String

Exigido: Sim, quando mountPoints são usados

O 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 seja false, 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êiner da API remota do Docker e a opção --volumes-from para docker run.

sourceContainer

Tipo: String

Exigido: sim, quando volumesFrom for usado

O 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 seja false, 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êiner da API remota do Docker e a opção --log-driver para docker run. Por padrão, os contêineres usam o mesmo driver de registro usado pelo Docker daemon. No entanto, o contêiner pode usar um driver de registro diferente do Docker daemon especificando um driver de log com esse parâmetro na definição do 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 dos diferentes drivers de registro suportados, consulte Configurar drivers de registro na Docker documentação.

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 que estão disponíveis para o Docker daemon. Os drivers de log adicionais podem estar disponíveis em versões futuras do agente de contêiner do Amazon ECS.

  • Esse parâmetro exige a versão 1.18 ou posterior da API Docker Remote em sua instância de contêiner.

  • 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 Fluentd de saída ou um host remoto executando o Logstash para o qual enviar Gelf registros.

"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"

Exigido: sim, quando logConfiguration for usado

O 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 e awsfirelens.

Para obter mais informações sobre como usar o driver de awslogs log nas definições de tarefas para enviar seus registros de contêiner para o CloudWatch 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.

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 de string para string

Obrigatório: não

O mapa de chave/valor das opções de configuração a serem enviadas ao driver de log.

Ao FireLens rotear registros para um AWS Partner Network destino AWS service (Serviço da AWS) OR para armazenamento e análise de registros, você pode definir a log-driver-buffer-limit opção de limitar o número de eventos que são armazenados em buffer na memória, antes de serem enviados para o contêiner do roteador de registros. Isso pode ajudar a resolver um possível problema de perda de log, pois a alta taxa de transferência pode resultar na falta de memória do buffer interno. 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. Os segredos usados na configuração do log podem incluir um token de autenticação, certificado ou chave 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

A FireLens 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

O mapa de chave/valor das 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 ou fluentbit.

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.

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êiner da API remota do Docker e a opção --user para docker run.

É 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"

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 para Ulimits na seção Criar um contêiner da API remota do Docker e a opção --ulimit para docker run.

As tarefas do Amazon ECS hospedadas no Fargate usam os valores-limite de recursos padrão definidos pelo sistema operacional, com exceção do parâmetro de limite de nofile recursos. O limite de recursos nofile define uma restrição sobre o número de arquivos abertos que um contêiner pode usar. No Fargate, o limite nofile flexível padrão é 1024 e o limite rígido é. 4096 Você pode definir os valores de ambos os limites até1048576.

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"

Exigido: Sim, quando ulimits são usados

O type do ulimit.

hardLimit

Tipo: inteiro

Exigido: Sim, quando ulimits são usados

O limite rígido do tipo ulimit.

softLimit

Tipo: inteiro

Exigido: Sim, quando ulimits são usados

O limite flexível do tipo ulimit.

Rótulos do Docker

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 Labels na seção Criar um contêiner da 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.

Parâmetros do Linux

linuxParameters

Tipo: objeto LinuxParameters

Obrigatório: não

Linux-opções específicas que são aplicadas ao contêiner, como KernelCapabilities.

nota

Esse parâmetro não é compatível com Windows contêineres.

"linuxParameters": { "capabilities": { "add": ["string", ...], "drop": ["string", ...] } }
capabilities

Tipo: objeto KernelCapabilities

Obrigatório: não

Os Linux recursos do contêiner que são retirados da configuração padrão fornecida peloDocker. Para obter mais informações sobre os recursos padrão e os outros recursos disponíveis, consulte Privilégio de tempo de execução e recursos do Linux na referência de Docker execução. Para obter mais informações sobre esses Linux recursos, consulte a página de manual de capacidades (7) do Linux.

add

Tipo: matriz de strings

Valores válidos: "SYS_PTRACE"

Obrigatório: não

Os Linux recursos que o contêiner deve ser adicionado à configuração padrão fornecida peloDocker. 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.

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 Linux recursos que o contêiner deve remover da configuração padrão fornecida peloDocker. 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.

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.

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 no Fargate, esse parâmetro exige que a tarefa ou o serviço use a 1.3.0 versão da plataforma ou posterior Linux () 1.0.0 ou Windows ().

"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. 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 a COMPLETE, mas também exige que o contêiner seja encerrado com um status zero. 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 do containerB atingir um status COMPLETE, SUCCESS ou HEALTHY. Se um valor de startTimeout for especificado para o containerB e ele não atingir o status desejado nesse tempo, o containerA 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 1.3.0 versão da plataforma ou posterior Linux ().

stopTimeout

Tipo: inteiro

Obrigatório: não

Valores de exemplo: 120

Perí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.

Para tarefas do Amazon ECS hospedadas no Fargate, esse parâmetro exige que a tarefa ou o serviço use a 1.3.0 versão da plataforma ou posterior Linux (). Se o parâmetro não for especificado, o valor padrão de 30 segundos será usado. O valor máximo é 120 segundos.

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êiner da API remota do Docker e a opção --sysctl para docker run. Por exemplo, você pode net.ipv4.tcp_keepalive_time definir a configuração para manter conexões de longa duração.

Não recomendamos que você especifique systemControls parâmetros relacionados à rede para vários contêineres em uma única tarefa que também use o modo de host rede awsvpc ou. Fazer isso tem as seguintes desvantagens:

  • Para tarefas que usam o modo de awsvpc rede, incluindo o Fargate, se você definir systemControls qualquer contêiner, ele se aplica a todos os contêineres na tarefa. Se você definir um systemControls diferente para vários contêineres em uma única tarefa, o contêiner iniciado por último determinará qual systemControls entra em vigor.

  • Para tarefas que usam o modo de rede host, o namespace de rede systemControls 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 IPC systemControls não é compatível.

  • Para tarefas que usam o modo task IPC, os systemControls valores de namespace IPC se aplicam a todos os contêineres em uma tarefa.

nota

Este parâmetro não é compatível com contêineres do Windows.

nota

Esse parâmetro só é suportado para tarefas hospedadas AWS Fargate se as tarefas estiverem usando a versão da plataforma 1.4.0 ou posterior (Linux). Não há suporte para isso nos contêineres do Windows no 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", e Sysctls que começam com "fs.mqueue.*"

Valores de namespace de rede válidos: Sysctls que começam com "net.*"

Todos esses valores são apoiados pelo Fargate.

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 tty. Esse parâmetro é mapeado para OpenStdin na seção Criar um contêiner da API remota do Docker e a opção --interactive para docker run.

O padrão é false.

Pseudoterminal

pseudoTerminal

Tipo: booliano

Obrigatório: não

Quando esse parâmetro é true, um TTY é alocado. Esse parâmetro é mapeado para Tty na seção Criar um contêiner da API remota do Docker e a opção --tty para docker run.

O padrão é false.

Configuração do proxy

proxyConfiguration

Tipo: objeto ProxyConfiguration

Obrigatório: não

Os detalhes de configuração do proxy do App Mesh.

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âmetro user em uma definição de contêiner. Isso é usado para garantir que o proxy ignore seu próprio tráfego. Se IgnoredGID for especificado, esse campo poderá estar vazio.

  • IgnoredGID: (obrigatório) o ID de grupo (GID) do contêiner de proxy conforme definido pelo parâmetro user em uma definição de contêiner. Isso é usado para garantir que o proxy ignore seu próprio tráfego. Se IgnoredUID 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 para ProxyIngressPort e ProxyEgressPort.

  • ProxyIngressPort: (obrigatório) especifica a porta para a qual o tráfego de entrada para AppPorts é direcionado.

  • ProxyEgressPort: (obrigatório) especifica a porta para a qual o tráfego de saída de AppPorts é direcionado.

  • EgressIgnoredPorts: (obrigatório) o tráfego de saída para essas portas especificadas é ignorado e não é redirecionado para ProxyEgressPort. 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 para ProxyEgressPort. Ele pode ser uma lista vazia.

name

Tipo: String

Obrigatório: não

O nome do par de chave/valor.

value

Tipo: String

Obrigatório: não

O valor do par de chave/valor.

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.

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 objeto mountPoints de definição do contêiner.

efsVolumeConfiguration

Tipo: VolumeConfiguration Objeto EFS

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: AuthorizationConfiguration Objeto EFS

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 no EFSVolumeConfiguration. 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 de DISABLED será usado. Para obter mais informações, consulte Funções do IAM para tarefas.

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 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 Montagens bind.

nota

Esse parâmetro só é suportado para tarefas hospedadas AWS Fargate usando a versão da plataforma 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 ou none. Se o host for especificado, todos os contêineres dentro das tarefas que especificaram o modo IPC host na mesma instância de contêiner compartilham os mesmos recursos IPC com a instância do Amazon EC2 do host. Se task for especificado, todos os contêineres dentro da tarefa especificada compartilharão os mesmos recursos IPC. Se none 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 como shareable. Para obter mais informações, consulte Configurações IPC na 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 relacionado systemControls 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

Valores válidos: host | task

Exigido: Não

O namespace do processo a ser usado para os contêineres na tarefa. Os valores válidos são host ou task. Em contêineres Fargate para Linux, o único valor válido é. task Por exemplo, o monitoramento de sidecars pode precisar pidMode acessar informações sobre outros contêineres em execução na mesma tarefa.

Se o host for especificado, todos os contêineres das tarefas que especificaram o modo PID host na mesma instância de contêiner compartilharão namespace de processo com a instância do Amazon EC2 do host.

Se a task 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 cada contêiner. Para obter mais informações, consulte Configurações PID na 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

Este parâmetro não é compatível com contêineres do Windows.

nota

Esse parâmetro só é suportado para tarefas hospedadas AWS Fargate se as tarefas estiverem usando a versão da plataforma 1.4.0 ou posterior (Linux). Não há suporte para isso nos contêineres do Windows no Fargate.