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âmetrocapacityProviderStrategy
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 oweight
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 statusUPDATING
ouACTIVE
podem ser usados.Se um
capacityProviderStrategy
for especificado, o parâmetrolaunchType
deverá ser omitido. Se nenhumcapacityProviderStrategy
oulaunchType
for especificado, odefaultCapacityProviderStrategy
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
ouFARGATE_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
erevision
(family:revision
) ou o nome do recurso da Amazon (ARN) completo da definição de tarefa a ser executada no serviço. Se umrevision
não for especificado, a última revisãoACTIVE
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
eWINDOWS_SERVER_2022_CORE
.O valor
platformFamily
para cada tarefa especificada para o serviço deve corresponder ao valorplatformFamily
do serviço. Por exemplo, se você definir aplatformFamily
comoWINDOWS_SERVER_2019_FULL
, o valor deplatformFamily
para todas as tarefas deve serWINDOWS_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 agendamentoDAEMON
, 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âmetromaximumPercent
representará um limite superior no número de tarefas do serviço que são permitidas no estadoRUNNING
,STOPPING
ouPENDING
durante a implantação. Ele é expresso como uma porcentagem dodesiredCount
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çosREPLICA
e tiver umadesiredCount
de quatro tarefas e um valormaximumPercent
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ãomaximumPercent
para um serviço que usa o programador de serviçoREPLICA
é 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 pormaximumPercent
/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çãoEXTERNAL
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 estadoRUNNING
enquanto as instâncias de contêiner estão no estadoDRAINING
.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çãoEXTERNAL
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 noRUNNING
ou durante a implantação. Isso é expresso como uma porcentagem dedesiredCount
, 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 umdesiredCount
de quatro tarefas e umminimumHealthyPercent
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ãominimumHealthyPercent
para um serviço que usa o programador de serviçoDAEMON
é 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 porminimumHealthyPercent
/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çãoEXTERNAL
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 estadoRUNNING
enquanto as instâncias de contêiner estão no estadoDRAINING
.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çãoEXTERNAL
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
) ouEXTERNAL
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. UsememberOf
para restringir a seleção a um grupo de candidatos válidos. O valordistinctInstance
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 posicionamentospread
distribui o posicionamento entre os candidatos disponíveis uniformemente com base no parâmetro dofield
. A estratégiabinpack
posiciona as tarefas em candidatos disponíveis que tenham a menor quantia disponível do recurso que está especificado no parâmetrofield
. 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ãoinstanceId
(ouhost
, que tem o mesmo efeito), ou qualquer atributo de plataforma ou personalizado que seja aplicado em uma instância de contêiner, comoattribute:ecs.availability-zone
. Para a estratégia de posicionamentobinpack
, os valores válidos sãocpu
ememory
. Para a estratégia de posicionamentorandom
, esse campo não é usado.
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).
-
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 redeawsvpc
. 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 de0
.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 nohostPort
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âmetrorole
, você também deve especificar um objeto do load balancer com o parâmetroloadBalancers
.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 nomebar
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 aoname
de um dosportMappings
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 adiscoveryName
não for especificada, será usada aportName
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, comomysql
ouredis
.
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 noportMapping
nomeado na definição de tarefa dessa aplicação. No modobridge
, 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
oufluentd
.
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
ouhost
você deve especificar uma combinação decontainerName
econtainerPort
da definição de tarefa. Se a definição de tarefa que sua tarefa de serviço especifica usa o modo de redeawsvpc
e um registro do tipo SRV DNS é usado, você deve especificar uma combinação decontainerName
econtainerPort
ou um valorport
, 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
ouhost
você deve especificar uma combinação decontainerName
econtainerPort
da definição de tarefa. Se a definição de tarefa que sua tarefa de serviço especifica usa o modo de redeawsvpc
e um registro do tipo SRV DNS é usado, você deve especificar uma combinação decontainerName
econtainerPort
ou um valorport
, 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 criptografia do EBS por padrão, consulte Habilitar criptografia do Amazon EBS por padrão no Guia do usuário do Amazon EBS.
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á sertrue
.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 EBS. 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
egp3
, o intervalo válido é de 1 a 16.384.Para tipos de volume
io1
eio2
, o intervalo válido é de 4 a 16.384.Para tipos de volume
st1
esc1
, 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
eio2
, isso representa o número de IOPS provisionadas para o volume. Em volumes dogp2
, 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 volumesio1
eio2
. Esse parâmetro não é compatível com volumesgp2
,st1
,sc1
oustandard
.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.
-
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
eAmazonECSManaged
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
|NTFS
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.
Os valores válidos para o Linux são
xfs
, ext3, and ext4
. O padrão para volumes anexados às tarefas do Linux éXFS
.Os valores válidos para o Windows são
NTFS
. O padrão para volumes anexados a tarefas do Windows éNTFS
.
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