Restrições de posicionamento de tarefas do Amazon ECS - Amazon Elastic Container Service

Restrições de posicionamento de tarefas do Amazon ECS

Uma limitação de posicionamento de tarefas é uma regra que é considerada durante o posicionamento de tarefas. As restrições de posicionamento de tarefas podem ser especificadas durante a execução de uma tarefa ou a criação de um novo serviço. As restrições de posicionamento de tarefas também podem ser atualizadas para serviços existentes. Para obter mais informações, consulte . Posicionamento de tarefas do Amazon ECS.

Tipos de restrição

O Amazon ECS aceita os seguintes tipos de limitações de posicionamento de tarefas:

distinctInstance

Posicionar cada tarefa em uma instância de contêiner diferente. Essa restrição de posicionamento de tarefas pode ser especificada durante a execução de uma tarefa ou a criação de um novo serviço.

memberOf

Posicionar tarefas em instâncias de contêiner que atendam a uma expressão. Para obter mais informações sobre a sintaxe de expressão de restrições, consulte Linguagem de consulta de cluster.

A restrição de posicionamento da tarefa memberOf pode ser especificada com as seguintes ações:

  • Executar uma tarefa

  • Criar um novo serviço

  • Criar uma nova definição de tarefa

  • Criar uma nova revisão de uma definição de tarefa existente

Attributes

Você pode adicionar metadados personalizados, conhecidos como atributos, às instâncias de contêiner. Cada atributo tem um nome e um valor de string opcional. Você pode usar os atributos integrados fornecidos pelo Amazon ECS ou definir atributos 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 e windows.

ecs.cpu-architecture

A arquitetura da CPU para a instância. São exemplos de valores do atributo x86_64 e arm64.

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 obter mais informações, consulte . Entroncamento da interface de rede elástica.

ecs.outpost-arn

Se esse atributo existir, ele conterá o nome de recurso da Amazon (ARN) do Outpost. Para obter 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 obter mais informações, consulte . Instâncias externas (Amazon ECS Anywhere).

Atributos personalizados

Você pode 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.

Adicionar um atributo

Você pode adicionar atributos personalizados no momento de registro de instância usando o agente de contêiner ou manualmente, usando o AWS Management Console. Para obter mais informações sobre como usar o agente de contêiner, consulte Parâmetros de configuração do agente de contêiner do Amazon ECS.

Para adicionar atributos personalizados usando o console

  1. Abra o console do Amazon ECS em https://console.aws.amazon.com/ecs/.

  2. No painel de navegação, escolha Clusters e selecione um cluster.

  3. Na guia ECS Instances, marque a caixa de seleção para a instância de contêiner.

  4. Escolha Actions, View/Edit Attributes.

  5. Para cada atributo, faça o seguinte:

    1. Selecione Add attribute.

    2. Digite um nome e um valor para o atributo e escolha o ícone da marca de seleção.

  6. Quando terminar de adicionar atributos, escolha Close.

Como adicionar atributos personalizados usando o AWS CLI

Os exemplos a seguir demonstram como agregar atributos personalizados usando o comando put-attributes.

Exemplo: atributo único

O exemplo a seguir adiciona o atributo personalizado “stack=prod” à instância de contêiner especificada no cluster padrão.

aws ecs put-attributes --attributes name=stack,value=prod,targetId=arn

Exemplo: vários atributos

O exemplo a seguir adiciona os atributos personalizados “stack=prod” e "project=a" à instância de contêiner especificada no cluster padrão.

aws ecs put-attributes --attributes name=stack,value=prod,targetId=arn name=project,value=a,targetId=arn

Filtrar por atributo

Você pode aplicar um filtro às suas instâncias de contêiner, permitindo que você veja atributos personalizados.

Filtrar instâncias de contêiner por atributo usando o console

  1. Abra o console do Amazon ECS em https://console.aws.amazon.com/ecs/.

  2. Escolha um cluster que tenha instâncias de contêiner.

  3. Selecione Instâncias do ECS.

  4. Defina preferências de visibilidade da coluna escolhendo o ícone de engrenagem ( ) e selecionando os atributos para exibição. Essa configuração persiste em todos os clusters de contêiner associados à sua conta.

  5. Usando o campo de texto Filtrar por atributos, digite ou selecione os atributos pelos quais gostaria de filtrar. O formato deve ser AttributeName:AttributeValue.

    Em Filtrar por atributos, digite ou selecione os atributos pelos quais filtrar. Depois de selecionar o nome do atributo, será solicitado o valor do atributo.

  6. Adicione outros atributos ao filtro, conforme necessário. Remova um atributo escolhendo o X ao lado dele.

Filtre instâncias de contêiner por atributo usando o AWS CLI

Os exemplos a seguir demonstram como filtrar instâncias de contêiner por atributo usando o comando list-container-instances. Para mais informações sobre a sintaxe de filtros, consulte Linguagem de consulta de cluster.

Exemplo: atributo integrado

O exemplo a seguir usa atributos incorporados para listar as instâncias de g2.2xlarge.

aws ecs list-container-instances --filter "attribute:ecs.instance-type == g2.2xlarge"

Exemplo: atributo personalizado

O exemplo a seguir lista instâncias com o atributo personalizado “stack=prod”.

aws ecs list-container-instances --filter "attribute:stack == prod"

Exemplo: excluir o valor de um atributo

O exemplo a seguir lista instâncias com o atributo personalizado “stack” a menos que o valor do atributo seja “prod”.

aws ecs list-container-instances --filter "attribute:stack != prod"

Exemplo: vários valores de atributo

O exemplo a seguir usa atributos incorporados para listar as instâncias do tipo t2.small ou t2.medium.

aws ecs list-container-instances --filter "attribute:ecs.instance-type in [t2.small, t2.medium]"

Exemplo: vários atributos

O exemplo a seguir usa atributos incorporados para listar as instâncias de T2 na zona de disponibilidade us-east-1a.

aws ecs list-container-instances --filter "attribute:ecs.instance-type =~ t2.* and attribute:ecs.availability-zone == us-east-1a"

Exemplos de restrição

Os exemplos de restrição de colocação da tarefa são os seguintes.

Este exemplo usa a restrição memberOf para colocar tarefas em instâncias T2. Ele pode ser especificado com as seguintes ações: CreateService, UpdateService, RegisterTaskDefinition e RunTask.

"placementConstraints": [ { "expression": "attribute:ecs.instance-type =~ t2.*", "type": "memberOf" } ]

O exemplo usa a restrição memberOf para posicionar tarefas em instâncias com outras tarefas no grupo de tarefas databases, respeitando quaisquer estratégias de posicionamento de tarefas que também estejam especificadas. Para obter mais informações sobre grupos de tarefas, consulte Grupos de tarefas. Ele pode ser especificado com as seguintes ações: CreateService, UpdateService, RegisterTaskDefinition e RunTask.

"placementConstraints": [ { "expression": "task:group == databases", "type": "memberOf" } ]

A limitação distinctInstance posiciona cada tarefa no grupo em uma instância diferente. Ele pode ser especificado com as seguintes ações: CreateService, UpdateService e RunTask

"placementConstraints": [ { "type": "distinctInstance" } ]