Parâmetros de definição de serviço do Amazon ECS - Amazon Elastic Container Service

Parâmetros de definição de serviço do Amazon ECS

Uma definição de serviço define como executar o serviço do .Amazon ECS. É possível especificar os parâmetros a seguir em uma definição de serviço.

Tipo de inicialização

launchType

Tipo: string

Valores válidos: EC2 | FARGATE | EXTERNAL

Obrigatório: Não

O tipo de inicialização na qual executar seu serviço. Se não for especificado um tipo de inicialização, o padrão capacityProviderStrategy será usado. Para ter mais informações, consulte Tipos de inicialização do Amazon ECS.

Se um launchType for especificado, o parâmetro capacityProviderStrategy deverá ser omitido.

Estratégia de provedor de capacidade

capacityProviderStrategy

Tipo: matriz de objetos

Obrigatório: Não

A estratégia de provedor de capacidade a ser usada para o serviço.

Uma estratégia de provedor de capacidade consiste em um ou mais provedores de capacidade junto com o base e o weight a serem atribuídos a eles. Um provedor de capacidade deve ser associado ao cluster a ser usado em uma estratégia de provedor de capacidade. A API PutClusterCapacityProviders é usada para associar um provedor de capacidade a um cluster. Somente provedores de capacidade com um status UPDATING ou ACTIVE podem ser usados.

Se um capacityProviderStrategy for especificado, o parâmetro launchType deverá ser omitido. Se nenhum capacityProviderStrategy ou launchType for especificado, o defaultCapacityProviderStrategy do cluster será usado.

Se quiser especificar um provedor de capacidade que use um grupo do Auto Scaling, o provedor de capacidade já deverá estar criado. Novos provedores de capacidade podem ser criados com a operação de API CreateCapacityProvider.

Para usar um provedor de capacidade do AWS Fargate, especifique os provedores de capacidade FARGATE ou FARGATE_SPOT. Os provedores de capacidade do AWS Fargate estão disponíveis para todas as contas e só precisam estar associados a um cluster para serem utilizados.

A operação de API PutClusterCapacityProviders é usada para atualizar a lista de provedores de capacidade disponíveis para um cluster após a criação do cluster.

capacityProvider

Tipo: string

Obrigatório: Sim

O nome abreviado ou o Nome de recurso da Amazon (ARN) completo do provedor de capacidade.

weight

Tipo: número inteiro

Intervalo válido: inteiros entre 0 e 1.000.

Obrigatório: Não

O valor do peso designa a porcentagem relativa do número total de tarefas executadas que usam o provedor de capacidade especificado.

Por exemplo, imagine que você tenha uma estratégia contendo dois provedores de capacidade e ambos têm um peso de um. Quando a base é atendida, as tarefas se dividem igualmente entre os dois provedores de capacidade. Com base nessa mesma lógica, imagine que você especifique um peso de 1 para capacityProviderA e um peso de 4 para capacityProviderB. Em seguida, para cada tarefa executada utilizando capacityProviderA, quatro tarefas utilizam capacityProviderB.

base

Tipo: número inteiro

Intervalo válido: inteiros entre 0 e 100.000.

Obrigatório: Não

O valor da base designa o número mínimo de tarefas que serão executadas no provedor de capacidade especificado. Somente um provedor de capacidade em uma estratégia de provedor de capacidade pode ter uma base definida.

Definição de tarefa

taskDefinition

Tipo: string

Obrigatório: Não

O family e revision (family:revision) ou o nome do recurso da Amazon (ARN) completo da definição de tarefa a ser executada no serviço. Se um revision não for especificado, a última revisão ACTIVE da família especificada será usada.

É necessário especificar uma definição de tarefa ao usar o controlador de implantação (ECS) de atualização contínua.

Sistema operacional da plataforma

platformFamily

Tipo: sequência

Obrigatório: Condicional

Padrão: Linux

Esse parâmetro é necessário para serviços do Amazon ECS hospedados no Fargate.

Esse parâmetro é ignorado para serviços do Amazon ECS hospedados no Amazon EC2.

O sistema operacional nos contêineres que executa o serviço. Os valores válidos são LINUX, WINDOWS_SERVER_2019_FULL, WINDOWS_SERVER_2019_CORE, WINDOWS_SERVER_2022_FULL e WINDOWS_SERVER_2022_CORE.

O valor platformFamily para cada tarefa especificada para o serviço deve corresponder ao valor platformFamily do serviço. Por exemplo, se você definir a platformFamily como WINDOWS_SERVER_2019_FULL, o valor de platformFamily para todas as tarefas deve ser WINDOWS_SERVER_2019_FULL.

Versão da plataforma

platformVersion

Tipo: string

Obrigatório: Não

A versão da plataforma na qual suas tarefas no serviço estão em execução. Uma versão da plataforma é especificada apenas para tarefas que usam o tipo de inicialização do Fargate. Se não for especificada, a versão mais recente (LATEST) será usada como padrão.

As versões da plataforma do AWS Fargate são usadas para fazer referência a um ambiente de runtime específico para a infraestrutura de tarefas do Fargate. Ao especificar a versão da plataforma LATEST quando estiver executando uma tarefa ou criando um serviço, você obtém a versão de plataforma mais atual disponível para suas tarefas. Ao escalar seu serviço, essas tarefas recebem a versão de plataforma especificada na implantação atual do serviço. Para ter mais informações, consulte Versões da plataforma do Fargate para o Amazon ECS.

nota

Versões de plataforma não são especificadas para tarefas que usam o tipo de inicialização do EC2.

Cluster

cluster

Tipo: string

Obrigatório: Não

O nome abreviado ou o Nome de recurso da Amazon (ARN) completo do cluster no qual executar o serviço. Se você não especificar um cluster, consideraremos o cluster default.

Nome do serviço

serviceName

Tipo: string

Obrigatório: Sim

O nome do serviço. São permitidos até 255 letras (caixa alta e baixa), números, hífens e sublinhados. Os nomes dos serviços devem ser exclusivos em um cluster, mas é possível ter serviços com nomes semelhantes em vários clusters em uma ou várias regiões.

Estratégia de programação

schedulingStrategy

Tipo: string

Valores válidos: REPLICA | DAEMON

Obrigatório: Não

A estratégia de programação para usar. Se nenhuma estratégia de agendamento for especificada, será usada a estratégia REPLICA. Para ter mais informações, consulte Serviços do Amazon ECS.

Há duas estratégias de programador de serviços disponíveis:

  • REPLICA: a estratégia de programação de réplica coloca e mantém o número desejado de tarefas no seu cluster. Por padrão, o programador de serviço distribui tarefas por zonas de disponibilidade. É possível usar estratégias e limitações de posicionamento de tarefas para personalizar decisões de posicionamento de tarefa. Para ter mais informações, consulte Estratégia de réplica.

  • DAEMON: a estratégia de programação do daemon implanta exatamente uma tarefa em cada instância de contêiner ativa que atenda a todas as restrições de posicionamento de tarefas que você especifica no seu cluster. Ao usar essa estratégia, não há necessidade de especificar um número desejado de tarefas, uma estratégia de posicionamento de tarefas ou usar políticas de Auto Scaling do serviço. Para ter mais informações, consulte Estratégia de daemon.

    nota

    As tarefas do Fargate não são compatíveis com a estratégia de programação do DAEMON.

Contagem desejada

desiredCount

Tipo: número inteiro

Obrigatório: não

O número de instanciações da definição de tarefa específica a posicionar e manter em execução no seu serviço.

Esse parâmetro será necessário se a estratégia de agendamento REPLICA for usada. Se o serviço usar a estratégia de agendamento DAEMON, esse parâmetro será opcional.

Configuração de implantação

deploymentConfiguration

Tipo: Objeto

Obrigatório: Não

Parâmetros opcionais de implantação que controlam quantas tarefas são executadas durante a implantação e o pedido de encerramento e iniciação de tarefas.

maximumPercent

Tipo: número inteiro

Obrigatório: não

Se um serviço estiver usando o tipo de implantação de atualização contínua (ECS), o parâmetro maximumPercent representará um limite superior no número de tarefas do serviço que são permitidas no estado RUNNING, STOPPING ou PENDING durante a implantação. Ele é expresso como uma porcentagem do desiredCount arredondado para o número inteiro mais próximo. É possível usar esse parâmetro para definir o tamanho do lote de implantação. Por exemplo, se o serviço estiver usando o programador de serviços REPLICA e tiver uma desiredCount de quatro tarefas e um valor maximumPercent de 200%, o programador poderá iniciar quatro novas tarefas antes de interromper as quatro tarefas mais antigas. Isso é fornecido desde que os recursos de cluster necessários para isso estejam disponíveis. O valor padrão maximumPercent para um serviço que usa o programador de serviço REPLICA é 200%.

Se o seu serviço estiver usando o tipo de programador de serviços DAEMON, maximumPercent deverá permanecer em 100%. Este é o valor padrão.

O número máximo de tarefas durante uma implantação é desiredCount multiplicado por maximumPercent/100, arredondado para o valor inteiro mais próximo.

Se um serviço estiver usando o tipo de implantação azul/verde (CODE_DEPLOY) ou tipos de implantação EXTERNAL e as tarefas que usam o tipo de inicialização do EC2, os valores de porcentagem máxima serão definidos para os valores padrão. Eles são usados para definir os limites superiores do número de tarefas no serviço que permanecem no estado RUNNING enquanto as instâncias de contêiner estão no estado DRAINING.

nota

Você não pode especificar um valor personalizado maximumPercent para um serviço que usa os tipos azul/verde (CODE_DEPLOY) ou de implantação EXTERNAL e tem tarefas que usam o tipo de inicialização do EC2.

Se as tarefas do serviço usarem o tipo de inicialização do Fargate, o valor de porcentagem máxima não será usado, embora seja retornado durante a descrição do seu serviço.

minimumHealthyPercent

Tipo: número inteiro

Obrigatório: não

Se um serviço estiver usando o tipo de implantação de atualização contínua (ECS), minimumHealthyPercent representará um limite inferior no número de tarefas do serviço que devem permanecer no RUNNING ou durante a implantação. Isso é expresso como uma porcentagem de desiredCount, arredondada para cima até o número inteiro mais próximo. É possível usar esse parâmetro para implantar sem usar capacidade adicional de cluster. Por exemplo, se o serviço tiver um desiredCount de quatro tarefas e um minimumHealthyPercent de 50%, o programador de serviço poderá interromper duas tarefas existentes para liberar a capacidade do cluster antes de iniciar duas novas tarefas.

Para serviços que não usam um balanceador de carga, considere o seguinte:

  • Um serviço será considerado íntegro se todos os contêineres essenciais dentro das tarefas no serviço forem aprovados em suas verificações de integridade.

  • Se uma tarefa não tiver contêineres essenciais com uma verificação de integridade definida, o programador de serviço aguardará 40 segundos depois que uma tarefa atingir um estado RUNNING antes de a tarefa ser contabilizada no percentual mínimo íntegro total.

  • Se uma tarefa tiver um ou mais contêineres essenciais com uma verificação de integridade definida, o programador de serviço aguardará que a tarefa atinja um status íntegro antes de a contabilizar no percentual mínimo íntegro total. Uma tarefa é considerada íntegra quando todos os contêineres essenciais dentro da tarefa são aprovados em suas verificações de integridade. O período de tempo que o programador de serviço pode aguardar é determinado pelas configurações de verificação de integridade do contêiner. Para ter mais informações, consulte Verificação de integridade.

Para serviços que usam um balanceador de carga, considere o seguinte:

  • Se uma tarefa não tiver contêineres essenciais com uma verificação de integridade definida, o programador de serviço aguardará a verificação de integridade do grupo de destino do balanceador de carga retornar um status íntegro antes de contabilizar a tarefa no percentual mínimo íntegro total.

  • Se uma tarefa tiver um contêiner essencial com uma verificação de integridade definida, o programador de serviço aguardará que a tarefa atinja um status íntegro e a verificação de integridade do grupo de destino do balanceador de carga retorne um status íntegro antes de contabilizar a tarefa no percentual mínimo íntegro total.

O valor padrão para um serviço réplica para minimumHealthyPercent é 100%. O valor padrão minimumHealthyPercent para um serviço que usa o programador de serviço DAEMON é 0% para a AWS CLI, os AWS SDKs e as APIs, e 50% para o AWS Management Console.

O número mínimo de tarefas íntegras durante uma implantação é desiredCount multiplicado por minimumHealthyPercent/100, arredondado para o valor inteiro mais próximo acima.

Se um serviço estiver usando o tipo de implantação azul/verde (CODE_DEPLOY) ou tipos de implantação EXTERNAL e executando tarefas que usam o tipo de inicialização do EC2, os valores de porcentagem de integridade mínima serão definidos para os valores padrão. Eles são usados para definir os limites inferiores do número de tarefas no serviço que permanecem no estado RUNNING enquanto as instâncias de contêiner estão no estado DRAINING.

nota

Você não pode especificar um valor personalizado maximumPercent para um serviço que usa os tipos azul/verde (CODE_DEPLOY) ou de implantação EXTERNAL e tem tarefas que usam o tipo de inicialização do EC2.

Se um serviço estiver usando os tipos de implantação azul/verde (CODE_DEPLOY) ou EXTERNAL e estiver executando tarefas que usam o tipo de inicialização do Fargate, o valor percentual mínimo de integridade não será usado, embora ele seja retornado ao descrever o serviço.

Controlador de implantação

deploymentController

Tipo: Objeto

Obrigatório: Não

O controlador de implantação a ser usado para o serviço. Se nenhum controlador de implantação for especificado, será usado o controlador ECS. Para ter mais informações, consulte Serviços do Amazon ECS.

type

Tipo: string

Valores válidos: ECS | CODE_DEPLOY | EXTERNAL

Obrigatório: sim

O tipo de controlador de implantação a ser usado. Existem três tipos de controlador de implantação disponíveis:

ECS

O tipo de implantação de atualização contínua (ECS) envolve substituir a versão atual em execução do contêiner pela versão mais recente. O número de contêineres que o Amazon ECS adiciona ou remove do serviço durante uma atualização contínua é controlado ajustando-se os números mínimo e máximo de tarefas íntegras permitidas durante uma implantação de serviço, conforme especificado na deploymentConfiguration.

CODE_DEPLOY

O tipo de implantação azul/verde (CODE_DEPLOY) usa o modelo de implantação azul/verde desenvolvido pelo CodeDeploy, que permite que você verifique a nova implantação de um serviço antes de enviar tráfego de produção para ele.

EXTERNAL

Use o tipo de implantação externa quando desejar usar qualquer controlador de implantação de terceiros para o controle total do processo de implantação para um serviço do Amazon ECS.

Posicionamento de tarefas

placementConstraints

Tipo: matriz de objetos

Obrigatório: Não

Um array de objetos de restrição de posicionamento para usar em tarefas no serviço. É possível especificar no máximo 10 restrições por tarefa. Esse limite inclui restrições na definição de tarefa e aquelas especificadas em tempo de execução. Se você utilizar o tipo de inicialização do Fargate, não haverá suporte para restrições de posicionamento de tarefas.

type

Tipo: string

Obrigatório: Não

O tipo de restrição. Use distinctInstance para garantir que cada tarefa em um determinado grupo esteja em execução em uma instância de contêiner diferente. Use memberOf para restringir a seleção a um grupo de candidatos válidos. O valor distinctInstance não é compatível em definições de tarefa.

expression

Tipo: string

Obrigatório: Não

Uma expressão de idioma de consulta de cluster a ser aplicada à restrição. Você não pode especificar uma expressão, caso o tipo de restrição seja distinctInstance. Para ter mais informações, consulte Criação de expressões para definir instâncias de contêiner em tarefas do Amazon ECS.

placementStrategy

Tipo: matriz de objetos

Obrigatório: Não

A estratégia de posicionamento de objetos para usar em tarefas no serviço. É possível especificar um máximo de quatro regras de estratégia por serviço.

type

Tipo: string

Valores válidos: random | spread | binpack

Obrigatório: Não

O tipo de estratégia de posicionamento. A estratégia de posicionamento random posiciona as tarefas de candidatos disponíveis aleatoriamente. A estratégia de posicionamento spread distribui o posicionamento entre os candidatos disponíveis uniformemente com base no parâmetro do field. A estratégia binpack posiciona as tarefas em candidatos disponíveis que tenham a menor quantia disponível do recurso que está especificado no parâmetro field. Por exemplo, se você efetuar binpack na memória, uma tarefa será posicionada na instância com a menor quantidade de memória remanescente (mas ainda o suficiente para executar a tarefa).

field

Tipo: string

Obrigatório: Não

O campo em que a estratégia de posicionamento será aplicada. Para a estratégia de posicionamento spread, os valores válidos são instanceId (ou host, que tem o mesmo efeito), ou qualquer atributo de plataforma ou personalizado que seja aplicado em uma instância de contêiner, como attribute:ecs.availability-zone. Para a estratégia de posicionamento binpack, os valores válidos são cpu e memory. Para a estratégia de posicionamento random, esse campo não é usado.

Tags

tags

Tipo: matriz de objetos

Obrigatório: Não

Os metadados que você aplica ao serviço para ajudá-lo a categorizá-los e organizá-los. Cada tag consiste em uma chave e um valor opcional, ambos definidos por você. Quando um serviço é excluído, as tags também são excluídas. Um máximo de 50 tags podem ser aplicadas ao serviço. Para ter mais informações, consulte Marcação de recursos do Amazon ECS.

key

Tipo: String

Restrições de tamanho: tamanho mínimo 1. O tamanho máximo é 128.

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

Restrições de tamanho: o tamanho mínimo é 0. O tamanho máximo é 256.

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

enableECSManagedTags

Tipo: booliano

Valores válidos: true | false

Obrigatório: Não

Especifica se devem ser usadas as tags gerenciadas do Amazon ECS para as tarefas no serviço. Se nenhum valor for especificado, o padrão será false. Para ter mais informações, consulte Usar etiquetas para faturamento.

propagateTags

Tipo: Sequência

Valores válidos: TASK_DEFINITION | SERVICE

Obrigatório: Não

Especifica se deve copiar as tags da definição de tarefa ou do serviço para as tarefas no serviço. Se nenhum valor for especificado, as tags não serão copiadas. As tags só podem ser copiadas para tarefas no serviço durante a criação do serviço. Para adicionar etiquetas a uma tarefa após a criação do serviço ou da tarefa, use a ação de API TagResource.

Configuração de rede

networkConfiguration

Tipo: Objeto

Obrigatório: Não

A configuração de rede para o serviço. Esse parâmetro é necessário para definições de tarefa que usam o modo de rede awsvpc para receber sua própria Interface de rede elástica e não tem suporte para outros modos de rede. Se você estiver usando o tipo de inicialização do Fargate, será necessário o modo de rede awsvpc. Para obter mais informações sobre redes para o tipo de execução do Amazon EC2, consulte Opções de redes de tarefas do Amazon ECS para o tipo de inicialização do EC2. Para obter mais informações sobre redes para o tipo de execução do Fargate, consulte Fargate Task Networking.

awsvpcConfiguration

Tipo: Objeto

Obrigatório: Não

Um objeto que representa as sub-redes e os security groups de uma tarefa ou serviço.

subnets

Tipo: Matriz de strings

Obrigatório: Sim

As sub-redes associadas à tarefa ou ao serviço. Existe um limite de 16 sub-redes que podem ser especificadas de acordo com awsvpcConfiguration.

securityGroups

Tipo: Matriz de strings

Obrigatório: Não

Os security groups associados à tarefa ou ao serviço. Se você não especificar um grupo de segurança, o grupo de segurança padrão da VPC será usado. Existe um limite de cinco grupos de segurança que podem ser especificados com base em awsvpcConfiguration.

assignPublicIP

Tipo: string

Valores válidos: ENABLED | DISABLED

Obrigatório: Não

Indica se a interface de rede elástica da tarefa recebe um endereço IP público. Se nenhum valor for especificado, será usado o valor padrão de DISABLED.

healthCheckGracePeriodSeconds

Tipo: número inteiro

Obrigatório: não

O período, em segundos, em que o programador de serviço do Amazon ECS deve ignorar verificações de integridade de destino não íntegras do Elastic Load Balancing, verificações de integridade de contêiner e verificações de integridade do Route 53 depois que uma tarefa entra no estado RUNNING. Isso será válido somente se o serviço estiver configurado para usar um load balancer. Se o serviço tiver um load balancer definido e você não especificar um valor de período de tolerância de verificação de integridade, será usado o valor padrão de 0.

Se as tarefas do seu serviço demoram para iniciar e responder às verificações de integridade, você pode especificar um período de carência de verificação de integridade de até 2.147.483.647 segundos durante o qual o programador do serviço ECS vai ignorar o status da verificação de integridade. Esse período de carência pode evitar que o programador do serviço ECS marque tarefas como não íntegras e as interrompa antes de terem tempo de surgir.

Se você não usa um Elastic Load Balancing, recomendamos que use o startPeriod nos parâmetros de verificação de integridade da definição de tarefa. Para obter mais informações, consulte Como determinar a integridade das tarefas do Amazon ECS usando verificações de integridade de contêineres.

loadBalancers

Tipo: matriz de objetos

Obrigatório: Não

Um objeto load balancer que representa os load balancers para uso com o serviço. Para serviços que usam um Application Load Balancer ou um Network Load Balancer, existe um limite de cinco grupos de destino que você pode anexar a um serviço.

Após você criar um serviço, a configuração do balanceador de carga não poderá ser alterada no AWS Management Console. É possível usar o AWS Copilot, o AWS CloudFormation, a AWS CLI ou o SDK para modificar a configuração do balanceador de carga somente para o controlador de implantação rolling do ECS, e não o AWS CodeDeploy azul/verde ou externo. Quando você adiciona, atualiza ou remove uma configuração de balanceador de carga, o Amazon ECS inicia uma nova implantação com a configuração atualizada do Elastic Load Balancing. Isso faz com que as tarefas se registrem e cancelem o registro dos balanceadores de carga. Recomendamos verificar isso em um ambiente de teste antes de atualizar a configuração do Elastic Load Balancing. Para obter informações sobre como modificar a configuração, consulte UpdateService na Referência da API do Amazon Elastic Container Service.

Para Application Load Balancers e Network Load Balancers, esse objeto deve conter o ARN do grupo de destino do balanceador de carga, o nome do contêiner (conforme aparece em uma definição de contêiner) e a porta do contêiner para acesso a partir do balanceador de carga. Quando uma tarefa desse serviço é colocada em uma instância do contêiner, combinação da instância do contêiner e a porta é registrada como um destino no grupo de destino especificado.

targetGroupArn

Tipo: string

Obrigatório: Não

O nome do recurso da Amazon (ARN) completo do grupo de destino do Elastic Load Balancing associado a um serviço.

O ARN de um grupo de destino só é especificado ao usar um Application Load Balancer ou um Network Load Balancer.

loadBalancerName

Tipo: string

Obrigatório: Não

O nome do load balancer que deve ser associado ao serviço.

Se estiver usando um Application Load Balancer ou um Network Load Balancer, omita o parâmetro de nome do balanceador de carga.

containerName

Tipo: string

Obrigatório: Não

O nome do contêiner (conforme aparece na definição de contêiner) para associar ao balanceador de carga.

containerPort

Tipo: número inteiro

Obrigatório: não

A porta no contêiner para associar ao balanceador de carga. Essa porta deve corresponder a um containerPort na definição de tarefa usada pelas tarefas do serviço. Para as tarefas que usam o tipo de inicialização do EC2, a instância de contêiner deve permitir tráfego de entrada no hostPort do mapeamento da porta.

role

Tipo: string

Obrigatório: Não

O nome curto ou o ARN completo da função do IAM que permite que o Amazon ECS faça chamadas para o balanceador de carga em seu nome. Esse parâmetro só será permitido se você estiver usando um balanceador de carga com um único grupo de destino para o serviço e a definição de tarefa não usar o modo de rede awsvpc. Se você especificar o parâmetro role, você também deve especificar um objeto do load balancer com o parâmetro loadBalancers.

Se a função especificada tiver um caminho diferente de /, você deverá especificar a função completa de Nome de região da Amazon (ARN), isso é recomendado, ou prefixar o nome da função com o caminho. Por exemplo, se uma função com o nome bar tiver um caminho /foo/, você especificaria /foo/bar como o nome da função. Para obter mais informações, consulte Nome e caminhos amigáveis no Guia do usuário do IAM.

Importante

Se sua conta já tiver criado a função vinculada ao serviço do Amazon ECS, essa função será usada por padrão para o serviço, a menos que você especifique uma função aqui. A função vinculada ao serviço será necessária se a definição de sua tarefa usar o modo de rede awsvpc e, nesse caso, você não deve especificar uma função aqui. Para ter mais informações, consulte Uso de perfis vinculados ao serviço para o Amazon ECS.

serviceConnectConfiguration

Tipo: Objeto

Obrigatório: Não

A configuração desse serviço para detectar e se conectar a serviços e para ser detectado por outros serviços e ser conectado a eles em um namespace.

Para ter mais informações, consulte Uso do Service Connect para conectar serviços do Amazon ECS com nomes abreviados.

enabled

Tipo: booliano

Obrigatório: Sim

Especifica se o Service Connect deverá ser usado com esse serviço.

namespace

Tipo: string

Obrigatório: Não

O nome do recurso da Amazon (ARN) abreviado ou completo do namespace AWS Cloud Map para uso com o Service Connect. O namespace deve estar na mesma Região da AWS que o serviço e o cluster do Amazon ECS. O tipo de namespace não afeta o Service Connect. Para obter mais informações sobre o AWS Cloud Map, consulte Working with Services (Trabalhar com serviços) no Guia do desenvolvedor do AWS Cloud Map.

services

Tipo: matriz de objetos

Obrigatório: Não

Uma matriz de objetos de serviço do Service Connect. Estes são os nomes e aliases (também conhecidos como endpoints) que são usados por outros serviços do Amazon ECS para se conectar a esse serviço.

Este campo não é obrigatório para um serviço “cliente” do Amazon ECS que seja membro de um namespace somente para se conectar a outros serviços dentro do namespace. Um exemplo é a aplicação de frontend que aceita solicitações recebidas de um balanceador de carga conectado ao serviço ou por outros meios.

Um objeto seleciona uma porta na definição da tarefa, atribui um nome para o serviço do AWS Cloud Map e uma matriz de aliases (também conhecidos como endpoints) e portas para que as aplicações clientes se refiram a esse serviço.

portName

Tipo: string

Obrigatório: Sim

O portName deve corresponder ao name de um dos portMappings de todos os contêineres na definição de tarefa desse serviço do Amazon ECS.

discoveryName

Tipo: string

Obrigatório: Não

O discoveryName é o nome do novo serviço do AWS Cloud Map que o Amazon ECS cria para esse serviço do Amazon ECS. Esse nome deve ser exclusivo no namespace do AWS Cloud Map.

Se esse campo não for especificado, será usado portName.

clientAliases

Tipo: matriz de objetos

Obrigatório: Não

A lista de aliases de cliente para esse serviço de conexão de serviços. Você os usa para atribuir nomes que podem ser usados por aplicações clientes. O número máximo de aliases de cliente que você pode ter nesta lista é 1.

Cada alias (“endpoint”) é um nome DNS e um número de porta que outros serviços (“clientes”) do Amazon ECS podem usar para se conectar a esse serviço.

Cada nome e cada combinação de porta deve ser exclusivo dentro do namespace.

Esses nomes são configurados em cada tarefa do serviço de cliente, não no AWS Cloud Map. As solicitações DNS para resolver esses nomes não saem da tarefa e não contam para a cota de solicitações DNS por segundo por interface de rede elástica.

port

Tipo: número inteiro

Obrigatório: Sim

O número da porta receptora para o proxy de conexão de serviços. Essa porta está disponível em todas as tarefas dentro do mesmo namespace.

Para evitar a alteração das suas aplicações nos serviços do cliente Amazon ECS, defina isso como a mesma porta que a aplicação cliente usa por padrão.

dnsName

Tipo: string

Obrigatório: Não

O dnsName é o nome que você usa nas aplicações das tarefas do cliente para se conectar a esse serviço. O nome deve ser um rótulo DNS válido.

O valor padrão será o discoveryName.namespace se esse campo não for especificado. Se a discoveryName não for especificada, será usada a portName da definição de tarefa.

Para evitar a alteração das suas aplicações nos serviços do cliente Amazon ECS, defina isso como o mesmo nome que a aplicação cliente usa por padrão. Por exemplo, alguns nomes comuns são database, db ou o nome em minúsculas de um banco de dados, como mysql ou redis.

ingressPortOverride

Tipo: número inteiro

Obrigatório: não

(Opcional) O número da porta para o proxy do Service Connect receber.

Use o valor desse campo para ignorar o proxy para tráfego no número da porta especificado na portMapping nomeada na definição de tarefa dessa aplicação e, em seguida, use-o em seus grupos de segurança da Amazon VPC para permitir tráfego para o proxy para esse serviço do Amazon ECS.

No modo awsvpc, o valor padrão é o número da porta do contêiner especificado no portMapping nomeado na definição de tarefa dessa aplicação. No modo bridge, o valor padrão é a porta temporária do proxy do Service Connect.

logConfiguration

Tipo: objeto LogConfiguration

Obrigatório: Não

Isso define o local em que os logs do proxy do Service Connect são publicados. Use os logs para depuração durante eventos inesperados. Essa configuração define o parâmetro logConfiguration no contêiner do proxy do Service Connect em cada tarefa nesse serviço do Amazon ECS. O contêiner do proxy não é especificado na definição de tarefa.

Recomendamos que você use a mesma configuração de log dos contêineres de aplicações da definição de tarefa para esse serviço do Amazon ECS. Para o FireLens, esta é a configuração de log do contêiner da aplicação. Não é o contêiner de roteador de log do FireLens que usa a imagem de contêiner fluent-bit ou fluentd .

serviceRegistries

Tipo: matriz de objetos

Obrigatório: Não

Os detalhes da configuração de descoberta de serviço para o seu serviço. Para ter mais informações, consulte Uso da descoberta de serviços para conectar serviços do Amazon ECS com nomes DNS.

registryArn

Tipo: Sequência

Obrigatório: Não

O nome do recurso da Amazon (ARN) do registro de serviço. O registro de serviço atualmente compatível é AWS Cloud Map. Para obter mais informações, consulte Trabalhar com serviços no Guia do desenvolvedor do AWS Cloud Map.

port

Tipo: número inteiro

Obrigatório: não

O valor da porta usado se o serviço de descoberta de serviços especificou um registro de SRV. Esse campo é necessário se o modo de rede awsvpc e registros de SRV são usados.

containerName

Tipo: string

Obrigatório: Não

O valor do nome do contêiner a ser usado para o serviço de descoberta de serviço. Esse valor é especificado na definição da tarefa. Se a definição de tarefa que sua tarefa de serviço especifica usa o modo de rede bridge ou host você deve especificar uma combinação de containerName e containerPort da definição de tarefa. Se a definição de tarefa que sua tarefa de serviço especifica usa o modo de rede awsvpc e um registro do tipo SRV DNS é usado, você deve especificar uma combinação de containerName e containerPort ou um valor port, mas não ambos.

containerPort

Tipo: número inteiro

Obrigatório: não

O valor do porta a ser usado para o serviço de descoberta de serviço. Esse valor é especificado na definição da tarefa. Se a definição de tarefa que sua tarefa de serviço especifica usa o modo de rede bridge ou host você deve especificar uma combinação de containerName e containerPort da definição de tarefa. Se a definição de tarefa que sua tarefa de serviço especifica usa o modo de rede awsvpc e um registro do tipo SRV DNS é usado, você deve especificar uma combinação de containerName e containerPort ou um valor port, mas não ambos.

Token de cliente

clientToken

Tipo: string

Obrigatório: Não

O identificador exclusivo e que diferencia maiúsculas e minúsculas que você fornece para garantir a idempotência da solicitação. Pode ter até 32 caracteres ASCII.

Configurações de volume

volumeConfigurations

Tipo: Objeto

Obrigatório: Não

A configuração que será usada para criar volumes de tarefas gerenciadas pelo serviço. Um volume é criado para cada tarefa no serviço. Somente volumes marcados como configuredAtLaunch na definição de tarefa podem ser configurados usando esse objeto. Esse objeto é necessário para anexar volumes de dados do Amazon EBS a tarefas gerenciadas por um serviço. Para obter mais informações, consulte Volumes do Amazon EBS.

name

Tipo: string

Obrigatório: Sim

O nome de um volume configurado ao criar ou atualizar um serviço. São permitidos até 255 letras (caixa alta e baixa), números, hifens (_) e sublinhados (-). Esse valor deve corresponder ao nome do volume especificado na definição de tarefa.

managedEBSVolume

Tipo: Objeto

Obrigatório: Não

A configuração do volume em volumes do Amazon EBS que são anexados a tarefas gerenciadas por um serviço quando um serviço é criado ou atualizado.

encrypted

Tipo: booliano

Obrigatório: não

Valores válidos: true|false

Especifica se o volume do Amazon EBS anexado às tarefas gerenciadas por um serviço será criptografado. Se você ativou a criptografia do Amazon EBS por padrão na sua conta, essa configuração será substituída e o volume será criptografado. Para obter mais informações sobre a criptografia do EBS por padrão, consulte Encryption by default no Guia do usuário do Amazon EC2.

kmsKeyId

Tipo: string

Obrigatório: Não

O identificador da chave do AWS Key Management Service (AWS KMS) a ser usada para criptografia no Amazon EBS. Se esse parâmetro não for especificado, o AWS KMS key do Amazon EBS será usado. Se KmsKeyId for especificado, o estado de criptografado deverá ser true.

Você pode especificar a chave do KMS usando qualquer um dos seguintes itens:

  • ID da chave: por exemplo, 1234abcd-12ab-34cd-56ef-1234567890ab.

  • Alias de chave: por exemplo, alias/ExampleAlias.

  • ARN de chave: por exemplo, arn:aws:kms:us-east-1:012345678910:key/1234abcd-12ab-34cd-56ef-1234567890ab.

  • Alias de ARN: por exemplo, arn:aws:kms:us-east-1:012345678910:alias/ExampleAlias.

Importante

A AWS autentica a chave do KMS de forma assíncrona. Portanto, se você especificar um ID, um alias ou um ARN que não seja válido, a ação poderá parecer estar concluída, mas falhará. Para obter mais informações, consulte Troubleshooting Amazon EBS volume attachment issues.

volumeType

Tipo: string

Obrigatório: Não

Valores válidos: gp2|gp3|io1|io2|sc1|st1|standard

O tipo de volume do EBS. Para obter mais informações sobre tipos de volumes, consulte Amazon EBS volume types no Guia do usuário do Amazon EC2. O tipo de volume padrão é gp3.

nota

O tipo de volume standard não é compatível com volumes do Amazon EBS configurados para anexação às tarefas do Fargate.

sizeInGiB

Tipo: número inteiro

Obrigatório: não

Intervalo válido: números inteiros entre 1 e 16.384

O tamanho do volume do EBS em gibibytes (GiB). Se você não fornecer um ID de snapshot para configurar um volume para anexação, deverá fornecer um valor de tamanho. Se você configurar um volume para anexação usando um snapshot, o valor padrão será o tamanho do snapshot. Em seguida, você pode especificar um tamanho maior ou igual ao tamanho do snapshot.

Para tipos de volume gp2 e gp3, o intervalo válido é de 1 a 16.384.

Para tipos de volume io1 e io2, o intervalo válido é de 4 a 16.384.

Para tipos de volume st1 e sc1, o intervalo válido é de 125 a 16.384.

Para o tipo de volume standard, o intervalo válido é de 1 a 1.024.

snapshotId

Tipo: string

Obrigatório: Não

O ID do snapshot de um volume existente do EBS usado para criar um volume anexado à tarefa do ECS.

iops

Tipo: número inteiro

Obrigatório: não

O número de operações de E/S por segundo (IOPS). Para volumes de gp3, io1 e io2, isso representa o número de IOPS provisionadas para o volume. Em volumes do gp2, esse valor representa o desempenho de linha de base do volume e a taxa na a qual o volume acumula créditos de E/S para intermitência. Esse parâmetro é necessário para volumes io1 e io2. Esse parâmetro não é compatível com volumes gp2, st1, sc1 ou standard.

Para volumes gp3, o intervalo válido de valores é de 3.000 a 16.000.

Para volumes io1, o intervalo válido de valores é de 100 a 64.000.

Para volumes io2, o intervalo válido de valores é de 100 a 64.000.

throughput

Tipo: número inteiro

Obrigatório: não

O throughput para provisionamento de volumes anexados a tarefas gerenciadas por um serviço.

Importante

Esse parâmetro é compatível apenas com volumes do gp3.

roleArn

Tipo: string

Obrigatório: Sim

O recurso da Amazon (ARN) do perfil do AWS Identity and Access Management (IAM) da infraestrutura que fornece permissões do Amazon ECS para gerenciar recursos do Amazon EBS nas tarefas. Para ter mais informações, consulte Perfil do IAM de infraestrutura do Amazon ECS.

tagSpecifications

Tipo: Objeto

Obrigatório: Não

A especificação das tags a serem aplicadas aos volumes do Amazon EBS gerenciados pelo serviço.

resourceType

Tipo: string

Obrigatório: Sim

Valores válidos: volume

O tipo de recurso a ser marcado na criação.

tags

Tipo: matriz de objetos

Obrigatório: Não

Os metadados que você aplica aos volumes para ajudar a categorizá-los e organizá-los. Cada tag consiste em uma chave e um valor opcional, ambos definidos por você. AmazonECSCreated e AmazonECSManaged são tags reservadas adicionadas pelo Amazon ECS em seu nome, para que você possa especificar no máximo 48 tags de sua preferência. Quando um volume é excluído, as tags também são excluídas. Para ter mais informações, consulte Marcação de recursos do Amazon ECS.

key

Tipo: String

Restrições de tamanho: tamanho mínimo 1. O tamanho máximo é 128.

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

Restrições de tamanho: o tamanho mínimo é 0. O tamanho máximo é 256.

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

propagateTags

Tipo: string

Valores válidos: TASK_DEFINITION | SERVICE | NONE

Obrigatório: Não

Especifica se as tags da definição de tarefa ou do serviço devem ser copiadas para um volume. Se NONE for especificado ou nenhum valor for especificado, as tags não serão copiadas.

fileSystemType

Tipo: string

Obrigatório: Não

Valores válidos: xfs|ext3|ext4

O tipo de sistema de arquivos em um volume. O tipo de sistema de arquivos do volume determina como os dados são armazenados e recuperados no volume. Em volumes criados de um snapshot, você deve especificar o mesmo tipo de sistema de arquivos que o volume estava usando quando o snapshot foi criado. Se houver uma incompatibilidade no tipo do sistema de arquivos, a tarefa não será iniciada. O padrão para volumes anexados às tarefas do Linux é XFS.

Modelo de definição de serviço

Veja a seguir a representação JSON de uma definição de serviço do Amazon ECS.

Tipo de execução do Amazon ECS

{ "cluster": "", "serviceName": "", "taskDefinition": "", "loadBalancers": [ { "targetGroupArn": "", "loadBalancerName": "", "containerName": "", "containerPort": 0 } ], "serviceRegistries": [ { "registryArn": "", "port": 0, "containerName": "", "containerPort": 0 } ], "desiredCount": 0, "clientToken": "", "launchType": "EC2", "capacityProviderStrategy": [ { "capacityProvider": "", "weight": 0, "base": 0 } ], "platformVersion": "", "role": "", "deploymentConfiguration": { "deploymentCircuitBreaker": { "enable": true, "rollback": true }, "maximumPercent": 0, "minimumHealthyPercent": 0, "alarms": { "alarmNames": [ "" ], "enable": true, "rollback": true } }, "placementConstraints": [ { "type": "distinctInstance", "expression": "" } ], "placementStrategy": [ { "type": "binpack", "field": "" } ], "networkConfiguration": { "awsvpcConfiguration": { "subnets": [ "" ], "securityGroups": [ "" ], "assignPublicIp": "DISABLED" } }, "healthCheckGracePeriodSeconds": 0, "schedulingStrategy": "REPLICA", "deploymentController": { "type": "EXTERNAL" }, "tags": [ { "key": "", "value": "" } ], "enableECSManagedTags": true, "propagateTags": "TASK_DEFINITION", "enableExecuteCommand": true, "serviceConnectConfiguration": { "enabled": true, "namespace": "", "services": [ { "portName": "", "discoveryName": "", "clientAliases": [ { "port": 0, "dnsName": "" } ], "ingressPortOverride": 0 } ], "logConfiguration": { "logDriver": "journald", "options": { "KeyName": "" }, "secretOptions": [ { "name": "", "valueFrom": "" } ] } }, "volumeConfigurations": [ { "name": "", "managedEBSVolume": { "encrypted": true, "kmsKeyId": "", "volumeType": "", "sizeInGiB": 0, "snapshotId": "", "iops": 0, "throughput": 0, "tagSpecifications": [ { "resourceType": "volume", "tags": [ { "key": "", "value": "" } ], "propagateTags": "NONE" } ], "roleArn": "", "filesystemType": "" } } ] }

Tipo de inicialização do Fargate

{ "cluster": "", "serviceName": "", "taskDefinition": "", "loadBalancers": [ { "targetGroupArn": "", "loadBalancerName": "", "containerName": "", "containerPort": 0 } ], "serviceRegistries": [ { "registryArn": "", "port": 0, "containerName": "", "containerPort": 0 } ], "desiredCount": 0, "clientToken": "", "launchType": "FARGATE", "capacityProviderStrategy": [ { "capacityProvider": "", "weight": 0, "base": 0 } ], "platformVersion": "", "platformFamily": "", "role": "", "deploymentConfiguration": { "deploymentCircuitBreaker": { "enable": true, "rollback": true }, "maximumPercent": 0, "minimumHealthyPercent": 0, "alarms": { "alarmNames": [ "" ], "enable": true, "rollback": true } }, "placementStrategy": [ { "type": "binpack", "field": "" } ], "networkConfiguration": { "awsvpcConfiguration": { "subnets": [ "" ], "securityGroups": [ "" ], "assignPublicIp": "DISABLED" } }, "healthCheckGracePeriodSeconds": 0, "schedulingStrategy": "REPLICA", "deploymentController": { "type": "EXTERNAL" }, "tags": [ { "key": "", "value": "" } ], "enableECSManagedTags": true, "propagateTags": "TASK_DEFINITION", "enableExecuteCommand": true, "serviceConnectConfiguration": { "enabled": true, "namespace": "", "services": [ { "portName": "", "discoveryName": "", "clientAliases": [ { "port": 0, "dnsName": "" } ], "ingressPortOverride": 0 } ], "logConfiguration": { "logDriver": "journald", "options": { "KeyName": "" }, "secretOptions": [ { "name": "", "valueFrom": "" } ] } }, "volumeConfigurations": [ { "name": "", "managedEBSVolume": { "encrypted": true, "kmsKeyId": "", "volumeType": "", "sizeInGiB": 0, "snapshotId": "", "iops": 0, "throughput": 0, "tagSpecifications": [ { "resourceType": "volume", "tags": [ { "key": "", "value": "" } ], "propagateTags": "NONE" } ], "roleArn": "", "filesystemType": "" } } ] }

É possível criar esse modelo de definição de serviço usando o comando da AWS CLI a seguir.

aws ecs create-service --generate-cli-skeleton