Autoescalabilidade do serviço - Amazon Elastic Container Service

Autoescalabilidade do serviço

Escalabilidade automática é a capacidade de aumentar ou diminuir automaticamente a contagem de tarefas desejada no serviço do Amazon ECS. O Amazon ECS utiliza o serviço do Application Auto Scaling para fornecer essa funcionalidade. Para obter mais informações, consulte o Guia do usuário do Application Auto Scaling.

O Amazon ECS publica métricas do CloudWatch com o uso médio, pelo serviço, da CPU e da memória. Para obter mais informações, consulte . Utilização de serviço. Você pode usar essas e outras métricas do CloudWatch para expandir o serviço (adicionar mais tarefas) para lidar com alta demanda em horários de pico e para reduzir o serviço (executar menos tarefas) de modo a reduzir os custos durante períodos de baixa utilização.

O Auto Scaling do serviço do Amazon ECS oferece suporte aos seguintes tipos de escalabilidade automática:

  • Políticas de escalabilidade de rastreamento de destino: aumenta ou diminui o número de tarefas que o serviço executa com base em um valor de destino para uma métrica específica. Isso é semelhante à forma como o termostato mantém a temperatura da casa. Você seleciona a temperatura, e o termostato faz o resto.

  • Políticas de escalabilidade em etapas: aumenta ou diminui o número de tarefas que o serviço executa com base em um conjunto de ajustes de escalabilidade, conhecidos como ajustes em etapas, que variam com base no tamanho da violação do alarme.

  • Escalabilidade programada: aumenta ou diminui o número de tarefas executadas pelo serviço com base na data e na hora.

Escalabilidade automática e implantações do serviço

O Application Auto Scaling desabilita processos de redução enquanto as implantações do Amazon ECS estão em andamento. No entanto, processos de aumento continuam a ocorrer, a menos que sejam suspensos, durante uma implantação. Se você quiser suspender processos de aumento enquanto as implantações estiverem em andamento, siga as etapas a seguir.

  1. Chame o comando describe-scalable-targets, especificando o ID do recurso do serviço do ECS associado ao destino escalável no Application Auto Scaling (Exemplo: service/default/sample-webapp). Registre a saída. Você precisará dela quando chamar o próximo comando.

  2. Chame o comando register-scalable-target, especificando o ID, o namespace e a dimensão escalável do recurso. Especifique true para DynamicScalingInSuspended e DynamicScalingOutSuspended.

  3. Depois que a implantação estiver concluída, você poderá chamar o comando register-scalable-target para retomar a escalabilidade.

Para obter mais informações, consulte Suspender e retomar a escalabilidade do Application Auto Scaling.

Permissões do IAM necessárias para a autoescalabilidade do serviço

A autoescalabilidade do serviço se torna possível por uma combinação das APIs do Amazon ECS, do CloudWatch e do Application Auto Scaling. Os serviços são criados e atualizados com o Amazon ECS, são criados alarmes com o CloudWatch e são criadas políticas de escalabilidade com o Application Auto Scaling.

Além das permissões padrão do IAM para a criação e a atualização dos serviços, o usuário do IAM que acessa as configurações do Auto Scaling do serviço deve ter as permissões adequadas para os serviços compatíveis com a escalabilidade dinâmica. Os usuários do IAM precisam ter as permissões para usar as ações mostradas na política de exemplo a seguir.

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "application-autoscaling:*", "ecs:DescribeServices", "ecs:UpdateService", "cloudwatch:DescribeAlarms", "cloudwatch:PutMetricAlarm", "cloudwatch:DeleteAlarms", "cloudwatch:DescribeAlarmHistory", "cloudwatch:DescribeAlarmsForMetric", "cloudwatch:GetMetricStatistics", "cloudwatch:ListMetrics", "cloudwatch:DisableAlarmActions", "cloudwatch:EnableAlarmActions", "iam:CreateServiceLinkedRole", "sns:CreateTopic", "sns:Subscribe", "sns:Get*", "sns:List*" ], "Resource": [ "*" ] } ] }

Os exemplos Exemplo para criar serviço e Exemplo para atualizar serviço de política do IAM mostram as permissões obrigatórias para que usuários do IAM usem Auto Scaling do serviço no AWS Management Console.

O serviço do Application Auto Scaling também precisa de permissão para descrever os serviços do Amazon ECS e os alarmes do CloudWatch, além de permissões para modificar a contagem desejada do serviço em seu nome. Se você habilitar a escalabilidade automática para os serviços do Amazon ECS, será criada uma função vinculada ao serviço denominada AWSServiceRoleForApplicationAutoScaling_ECSService. Essa função vinculada ao serviço concede permissão ao Application Auto Scaling para descrever os alarmes das políticas, monitorar a contagem atual de tarefas em execução do serviço e modificar a contagem desejada do serviço. A função gerenciada original do Amazon ECS para o Application Auto Scaling era ecsAutoscaleRole, mas ela não é mais necessária. Essa função vinculada ao serviço é a função padrão do Application Auto Scaling. Para obter mais informações, consulte Funções vinculadas a serviço do Application Auto Scaling, no Guia do usuário do Application Auto Scaling.

Observe que, se você tiver criado a função da instância de contêiner do Amazon ECS antes que as métricas do CloudWatch estejam disponíveis para o Amazon ECS, talvez precise adicionar a permissão ecs:StartTelemetrySession. Para obter mais informações, consulte . Habilitar métricas do CloudWatch.