Definição de quais instâncias de contêiner o Amazon ECS usa em tarefas
Uma restrição no posicionamento de tarefas é uma regra sobre uma instância de contêiner que o Amazon ECS usa para determinar se a tarefa tem permissão para ser executada na instância. Pelo menos uma instância de contêiner deve corresponder à restrição. Se não houver instâncias que correspondam à restrição, a tarefa permanecerá em um estado PENDING
. Ao criar um novo serviço ou atualizar um existente, é possível especificar restrições de posicionamento de tarefas para as tarefas do serviço.
Você pode especificar restrições de posicionamento de tarefas na definição do serviço, na definição de tarefa ou na tarefa usando o parâmetro placementConstraint
.
"placementConstraints": [ { "expression": "The expression that defines the task placement constraints", "type": "The placement constraint type to use" } ]
A tabela a seguir descreve como usar os parâmetros.
Constraint type | Pode ser especificado quando |
---|---|
distinctInstance Posicionar cada tarefa em uma instância de contêiner diferente. Importante Recomendamos que os clientes que buscam um forte isolamento para as tarefas usem o Fargate. O Fargate executa cada tarefa em um ambiente de virtualização de hardware. Isso garante que essas workloads em contêineres não compartilhem interfaces de rede, armazenamento temporário do Fargate, CPU ou memória com outras tarefas. Para obter mais informações, consulte Security Overview of AWS Fargate |
|
memberOf Posicionar tarefas em instâncias de contêiner que atendam a uma expressão. |
|
Ao usar o tipo de restrição memberOf
, você pode criar uma expressão usando a linguagem de consulta do cluster, que define as instâncias de contêiner nas quais o Amazon ECS pode posicionar tarefas. A expressão é uma forma de agrupar as instâncias de contêiner por atributos. A expressão vai no parâmetro expression
de placementConstraint
.
Atributos de instância de contêiner do Amazon ECS
É possível adicionar metadados personalizados, conhecidos como atributos, às instâncias de contêiner. Cada atributo tem um nome e um valor de string opcional. É possível usar os atributos integrados fornecidos pelo Amazon ECS ou definir atributos personalizados.
As seções a seguir contêm exemplos de atributos internos, opcionais e personalizados.
Atributos integrados
O Amazon ECS aplica automaticamente os seguintes atributos às instâncias de contêiner.
ecs.ami-id
-
A ID do AMI usado para executar a instância. Um exemplo de valor do atributo é
ami-1234abcd
. ecs.availability-zone
-
A zona de disponibilidade para a instância. Um exemplo de valor do atributo é
us-east-1a
. ecs.instance-type
-
O tipo de instância para a instância. Um exemplo de valor do atributo é
g2.2xlarge
. ecs.os-type
-
O sistema operacional para a instância. Os valores possíveis para esse atributo são
linux
ewindows
. ecs.os-family
-
A versão do sistema operacional para a instância.
Para instâncias de Linux, o valor válido é
LINUX
. Para instâncias de Windows, o ECS define o valor no formatoWINDOWS_SERVER_<
. Os valores válidos sãoOS_Release
>_<FULL or CORE
>WINDOWS_SERVER_2022_FULL
,WINDOWS_SERVER_2022_CORE
,WINDOWS_SERVER_20H2_CORE
,WINDOWS_SERVER_2019_FULL
,WINDOWS_SERVER_2019_CORE
eWINDOWS_SERVER_2016_FULL
.Isso é importante para contêineres do Windows e Windows containers on AWS Fargate, pois porque a versão do sistema operacional de cada contêiner do Windows deve corresponder à do host. Se a versão Windows da imagem do contêiner for diferente da do host, o contêiner não será iniciado. Para obter mais informações, consulte Compatibilidade de versão do contêiner do Windows
no site de documentação da Microsoft. Caso seu cluster execute várias versões do Windows, é possível garantir que uma tarefa seja colocada em uma instância do EC2 em execução na mesma versão usando a restrição de posicionamento:
memberOf(attribute:ecs.os-family == WINDOWS_SERVER_<OS_Release>_<FULL or CORE>)
. Para ter mais informações, consulte Recuperação de metadados da AMI do Windows otimizada para o Amazon ECS. ecs.cpu-architecture
-
A arquitetura da CPU para a instância. São exemplos de valores do atributo
x86_64
eARM64
. ecs.vpc-id
-
A VPC na qual a instância foi executada. Um exemplo de valor do atributo é
vpc-1234abcd
. ecs.subnet-id
-
A sub-rede que a instância está usando. Um exemplo de valor do atributo é
subnet-1234abcd
.
Atributos opcionais
O Amazon ECS pode adicionar os seguintes atributos às instâncias de contêiner.
ecs.awsvpc-trunk-id
-
Se esse atributo existir, a instância terá uma interface de rede de tronco. Para ter mais informações, consulte Aumento das interfaces de rede de instâncias de contêiner do Linux no Amazon ECS.
ecs.outpost-arn
-
Se esse atributo existir, ele conterá o nome de recurso da Amazon (ARN) do Outpost. Para ter mais informações, consulte Amazon Elastic Container Service no AWS Outposts.
ecs.capability.external
-
Se esse atributo existir, a instância será identificada como uma instância externa. Para ter mais informações, consulte Clusters do Amazon ECS para o tipo de inicialização externa.
Atributos personalizados
É possível aplicar atributos personalizados às instâncias de contêiner. Por exemplo, você pode definir um atributo com o nome “pilha” e um valor de “prod”.
Ao especificar atributos personalizados, considere o descrito a seguir.
-
O
name
deve conter entre 1 e 128 caracteres e o nome pode conter letras (maiúsculas e minúsculas), números, hifens, sublinhados, barras “/”, barras “\” ou pontos. -
O
value
deve conter entre 1 e 128 caracteres e pode conter letras (maiúsculas e minúsculas), números, hifens, sublinhados, pontos, arrobas (@), barras “/”, barras “\” dois pontos (:) ou espaços. O valor não pode conter espaço em branco no começo ou no fim.