Recursos criados pelos serviços do Amazon ECS Express Mode
Um serviço Express Mode reduz a complexidade da implantação de aplicações em contêiner fornecendo padrões adequados e automatizando a configuração do suporte aos serviços da AWS. Em vez de gerenciar centenas de parâmetros de configuração em vários serviços, um serviço Express Mode requer apenas uma imagem de contêiner, um perfil de execução de tarefa e um perfil de infraestrutura para começar.
Os serviços Express Mode têm procedimentos simplificados para provisionar e configurar um serviço do Amazon ECS que empacota a infraestrutura preferencial para executar uma aplicação web de produção. Os serviços Express Mode incorporam automaticamente as práticas recomendadas operacionais e de configuração. Os seguintes recursos são criados:
O cluster padrão do ECS (se ainda não existir) com os provedores de capacidade do Fargate
Uma definição de tarefa com configurações de contêiner, log e rede
Um serviço com implantação canário e ajuste de escala automático
Application Load Balancer com receptor HTTPS, regras de receptor e grupos de destino
Grupos de segurança com entrada mínima necessária
Perfis vinculados ao serviço para ajuste de escala automático e balanceamento de carga
Política de ajuste de escala de destino escalável e rastreamento de destino do ajuste de escala automático da aplicação.
A política de escalabilidade adiciona ou remove tarefas de serviço conforme necessário para manter a métrica no valor de destino especificado ou próxima a ele. Além de manter a métrica próxima ao valor de destino, uma política de escalabilidade de rastreamento de destino também se ajusta às flutuações na métrica, devido a um padrão de carga de flutuação, e minimiza as flutuações rápidas no número de tarefas que estão sendo executadas no serviço.
Grupo de logs específico do serviço
Alarme de métrica para detectar implantações com defeito
Certificado do ACM
Use os padrões para começar a usar os serviços Express Mode ou configure sua aplicação usando um conjunto mínimo de parâmetros.
Padrões do cluster
Os seguintes padrões são configuráveis de dentro do Express Mode para o cluster:
-
clusterName: usa o cluster
default.Você pode personalizar essa opção usando a opção Configurações adicionais no console ou especificando
create-express-gateway-service --cluster.
Os padrões a seguir são definidos pelo Express Mode, mas podem ser atualizados diretamente no cluster.
-
capacityProviders: ["FARGATE"]: usa o Fargate
Padrões de definição de tarefa
Os seguintes padrões são configuráveis de dentro do Express Mode para a definição de tarefa:
cpu: 1.024 | uma unidade de vCPU alocada para a tarefa
Você pode personalizar essa opção usando a opção Configurações adicionais no console ou executando
create-express-gateway-service --cpu.memória: 2048 | 2 GB de memória alocada para a tarefa
Você pode personalizar essa opção usando a opção Configurações adicionais no console ou executando
create-express-gateway-service --memory.
Os padrões a seguir são definidos pelo Express Mode, mas podem ser atualizados diretamente na definição de tarefa.
networkMode: "awsvpc" | usa o modo de rede
awsvpcoperatingSystemFamily: "LINUX" | executa no sistema operacional Linux
cpuArchitecture: "X86_64" |- usa a arquitetura do processador x86_64
requiresCompatibilities: ["FARGATE"] |- compatível com o tipo de inicialização do Fargate
platformVersion: "LATEST" | usa a versão da plataforma do Fargate mais recente
Padrões de definição de contêiner
Os seguintes padrões são configuráveis de dentro do Express Mode para o contêiner:
porta: 80 |- porta padrão para tráfego do contêiner
Os padrões abaixo são definidos pelo Express Mode, mas podem ser atualizados diretamente na definição de tarefa/definição de contêiner.
essential: true | o contêiner é marcado como essencial para a integridade da tarefa
protocol: "tcp" | protocolo padrão para comunicação de balanceador de carga
name: "Main" | nome padrão para o contêiner principal
A alteração do nome do contêiner padrão pode afetar a capacidade do Express Mode de fazer atualizações subsequentes em seu serviço. Isso não é recomendado se você pretende continuar usando o console ou as APIs do Express Mode.
versionConsistency: enabled | resolve tags de imagem para IDs de resumo em implantações consistentes
initProcessEnabled: true | habilita o suporte ao processo de inicialização do Docker.
stopTimeout: 30 segundos | tempo entre os sinais SIGTERM e SIGKILL.
Padrões de log
Os seguintes padrões são configuráveis de dentro do Express Mode para o CloudWatch Logs:
awslogs-group: "/aws/ecs/<cluster>/<name>-####" | nome do grupo de logs derivado do nome de cluster e serviço
Você pode personalizar essa opção usando a opção Configurações adicionais no console ou executando
create-express-gateway-service --primary-container “awsLogsConfiguration”=[{“logGroup”=“/my/logGroup/”}].awslogs-stream-prefix: "ecs" | prefixo para nomes de fluxo de logs
Você pode personalizar essa opção usando a opção Configurações adicionais no console ou executando
create-express-gateway-service --primary-container “awsLogsConfiguration”=[{“logStreamPrefix”=“myprefix”}].
Os seguintes padrões são definidos pelo Express Mode, mas podem ser atualizados diretamente na definição de tarefa/configuração de log:
logDriver: "awslogs" | usa o CloudWatch Logs
awslogs-region: região atual | usa a mesma região do serviço Express Mode
mode: "non-blocking" | modo de registro em log definido como sem bloqueio
max-buffer-size: "25m" | tamanho máximo do buffer para gravações de log
Padrões de serviço
Os seguintes padrões são configuráveis de dentro do Express Mode para o serviço do Amazon ECS:
serviceName: serviço Express Mode → Nome | nome do serviço (fornecido pelo cliente ou derivado do nome da imagem)
O nome só pode ser configurado na criação e não está disponível para ser configurado nas atualizações.
cluster: serviço Express Mode → Cluster | cluster do ECS para esse serviço (fornecido pelo cliente ou padrão)
O cluster só pode ser configurado na criação e não está disponível para ser configurado nas atualizações.
desiredCount: serviço Express Mode → MinTasks | contagem desejada para o serviço (o padrão é um)
Você pode personalizar essa opção usando a opção Configurações adicionais no console ou executando
create-express-gateway-service --scaling-target ‘{“minTaskCount”=3}',tags: tags do serviço Express Mode para marcação da AWS (fornecida pelo cliente)
Você pode personalizar essa opção usando a opção Configurações adicionais no console ou executando
create-express-gateway-service --tags. Só é possível adicionar tags na criação de um novo recurso.
Os padrões a seguir são definidos pelo Express Mode, mas podem ser atualizados diretamente no serviço do Amazon ECS:
availabilityZoneRebalancing: true | permite o rebalanceamento automático da zona de disponibilidade
CapacityProviderStrategy: {"base": 1, "capacityProvider": "FARGATE", "weight": 1} | usa o Fargate para capacidade de computação
deploymentConfiguration: canário por padrão | o serviço Express Mode usa implantações canário
Observe que a estratégia de implantação não pode ser atualizada nos serviços Express Mode.
enableECSManagedTags: true | permite a marcação de recursos gerenciados pelo ECS
healthCheckGracePeriodSeconds: 300 | período de carência antes que o programador examine as verificações de integridade do ELB ou do Lattice (está alinhado com o período de carência padrão da verificação de integridade do ELB)
launchType: <não definido> | usa provedores de capacidade
loadBalancers: configuração do balanceador de carga gerenciada pelo ECS
Observe que as configurações do balanceador de carga não podem ser atualizadas nos serviços Express Mode.
placementStrategy: não definida | usa o Fargate na inicialização (deve ser sempre distribuição de AZ)
platformVersion: LATEST | versão da plataforma do Fargate (codificação rígida para LATEST)
propagateTags: "SERVICE" | propaga tags do serviço para as tarefas
schedulingStrategy: "REPLICA" | os serviços Express Mode são definidos como REPLICA
taskDefinition: serviço Express Mode criado | a definição de tarefa a ser usada (fornecida pelo serviço Express Mode)
Padrões de configuração de rede
Os seguintes padrões são configuráveis de dentro do Express Mode para o serviço do Amazon ECS | configuração de rede:
networkConfiguration.Subnets: se nenhuma for informada, o Express Mode usará as sub-redes públicas padrão na VPC padrão.
A VPC padrão deve ter pelo menos duas sub-redes públicas, em pelo menos duas zonas de disponibilidade, com pelo menos oito IPs gratuitos disponíveis, por bloco CIDR atribuído, por sub-rede.
Se você fornecer sub-redes públicas personalizadas, o Express Mode provisionará um ALB voltado para a Internet e ativará AssignPublicIP para as tarefas. Se você fornecer sub-redes privadas (sem um gateway da internet na tabela de rotas), o Express Mode provisionará um ALB interno.
Se você especificar sub-redes, o primeiro serviço Express Mode para uma VPC definirá as sub-redes associadas ao balanceador de carga voltado para a Internet ou interno dessa VPC. Os serviços Express Mode subsequentes inicializados na mesma VPC devem ter sub-redes que correspondam às zonas de disponibilidade compatíveis com o balanceador de carga. Por causa disso, recomendamos a criação de serviços Express Mode com sub-redes de todas as zonas de disponibilidade.
networkConfiguration.SecurityGroups: se nenhum for informado, o Express Mode criará um grupo de segurança do serviço e um grupo de segurança do balanceador de carga
O grupo de segurança do serviço permite tráfego de saída para a internet pública, mas pode haver restrição dependendo de outros aspectos da rede, como a configuração de sub-redes.
O grupo de segurança do balanceador de carga permite o tráfego de entrada para resolução HTTPS e o tráfego de saída para o grupo de segurança do serviço na porta de contêiner especificada (padrão 80). E é atualizado automaticamente para corresponder à porta de contêiner fornecida nas chamadas de criação ou atualização do Express Mode.
Você pode personalizar essa opção usando a opção Configurações adicionais no console ou executando
create-express-gateway-service --network-configuration '{"securityGroup": ["sg-xxxxxxx"]}'. Ao fornecer um grupo de segurança, você está fornecendo um caminho de entrada adicional para seu serviço.
Os padrões a seguir são definidos pelo Express Mode, mas podem ser atualizados diretamente no serviço do Amazon ECS | configuração de rede:
assignPublicIp: com base no tipo de sub-rede | habilitado para sub-redes públicas para garantir que os usuários da VPC padrão possam acessar a internet pública; habilitamos IPs públicos em cada tarefa por padrão. Isso será desabilitado se você fornecer uma sub-rede privada e depois for responsável por configurar um gateway NAT, caso suas tarefas precisem de acesso à internet.
Padrões de perfil do IAM
Os perfis do IAM a seguir são configuráveis para um serviço Express Mode com criação automática de perfis vinculados ao serviço, quando apropriado.
executionRoleArn: perfil de execução de tarefa (parâmetro obrigatório)
Embora as permissões necessárias estejam na política gerenciada, políticas e permissões adicionais podem ser anexadas. Detalhes adicionais sobre a política AmazonECSTaskExecutionRolePolicy no Guia de referência de política gerenciada pela AWS.
infrastructureRoleArn: perfil de infraestrutura para serviços Express Gateway (parâmetro obrigatório)
Embora as permissões necessárias estejam na política gerenciada, políticas e permissões adicionais podem ser anexadas. Detalhes adicionais sobre a política gerenciada AmazonECSInfrastructureRoleforExpressGatewayServices no Guia de referência de política gerenciada da AWS.
taskRoleArn: perfil de tarefa para chamadas pelo código da aplicação de contêiner (opcional)
Você pode personalizar essa opção usando a opção Configurações adicionais no console ou executando
create-express-gateway-service --task-role-arn.Você deve criar o novo perfil do IAM antes de criar ou atualizar o serviço Express Mode.
Os perfis do IAM a seguir são configuradas automaticamente pelo Express Mode.
ecsServiceRoleForECS: permite que o Amazon ECS gerencie seu cluster
AWSServiceRoleForElasticLoadBalancing: chama outros serviços da AWS para você em seu nome, criados automaticamente pelo Elastic Load Balancing
AWSServiceRoleForApplicationAutoScaling_ECSService: chama outros serviços da AWS em seu nome, criados automaticamente pelo ajuste de escala automático da aplicação
Padrões do ajuste de escala automático da aplicação
As seguintes configurações do ajuste de escala automático da aplicação podem ser definidas no Express Mode:
autoScalingTargetValue: 60 | porcentagem de utilização de CPU de destino para ajuste de escala
autoScalingMetric: "CPUUtilization" | métrica usada para decisões de ajuste de escala automático
desiredMinTaskCount: 1 | número mínimo de tarefas a serem mantidas
desiredMaxTaskCount: 20 | número máximo de tarefas para o qual escalar (pode ser aumentado ou diminuído)
As seguintes configurações podem ser definidas diretamente no ajuste de escala automático da aplicação:
policyType: "TargetTrackingScaling" | usa a política de ajuste de escala do rastreamento de destino
disableScaleIn: false | permite reduzir a escala verticalmente quando a demanda diminui
Padrões de destino do ajuste de escala da aplicação
Os destinos do ajuste de escala automático da aplicação definem os limites de recurso e capacidade escaláveis nas operações de ajuste de escala automático. As seguintes opções podem ser modificadas no Express Mode:
MaxCapacity: serviço Express Mode → MaxTasks | máximo de tarefas para o qual aumentar a escala do serviço verticalmente (padrão de CreateLoadBalancedService ou fornecido pelo cliente)
MinCapacity: serviço Express Mode → MinTasks | mínimo de tarefas para o qual reduzir a escala do serviço verticalmente (padrão de CreateLoadBalancedService ou fornecido pelo cliente)
ScalableDimension: ecs:service:DesiredCount | a propriedade a ser escalada
Tags: derivadas das tags transmitidas em CreateLoadBalancedService | tags de recursos para este recurso
Os seguintes padrões podem ser modificados no destino escalável do ajuste de escala automático da aplicação:
DynamicScalingInSuspended: false | indica se a redução da escala na horizontal está suspensa
DynamicScalingOutSuspended: false | indica se o aumento da escala na horizontal está suspenso
ScheduledScalingSuspended: false | indica se o ajuste de escala programado está suspenso
Padrões da política de ajuste de escala da aplicação
As políticas de ajuste de escala implementam algoritmos de rastreamento de destino que monitoram a utilização de CPU e ajustam a contagem de tarefas para manter a performance ideal. As seguintes opções podem ser modificadas no Express Mode:
TargetValue: 60% | o valor de destino para a política de rastreamento (serviço Express Mode → valor de destino do ajuste de escala)
PredefinedMetricType: ECSServiceAverageCPUUtilization - O tipo de nome da métrica que está sendo rastreada (serviço de modo expresso → métrica de escala)
O Express Mode fornece métricas de ajuste de escala para a utilização média de CPU, a utilização média de memória e a contagem de solicitações por destino. A contagem de solicitações por destino vem do Application Load Balancer e pode ser configurada para até 65.536 solicitações por destino por segundo, que é o seu serviço do Amazon ECS no grupo de destino do Application Load Balancer.
Os seguintes padrões são definidos pelo Express Mode, mas podem ser alterados na política de ajuste de escala automático da aplicação:
PolicyName: <ServiceName><"TargetMetric"> | nome dessa política de ajuste de escala (derivado do nome do serviço do ECS e da métrica de destino)
PolicyType: TargetTrackingScaling | o tipo de ajuste de escala que está sendo feito (padrão predefinido)
ScalableDimension: "ecs:service:DesiredCount" | a propriedade a ser escalada (padrão predefinido)
DisableScaleIn: false | indica se a redução da escala na horizontal está desabilitada
Padrões do Application Load Balancer
Os seguintes padrões do Application Load Balancer podem ser configurados no Express Mode:
scheme: depende das sub-redes | cria um balanceador de carga voltado para a internet com endereços IP públicos quando sub-redes públicas são fornecidas. Cria um balanceador de carga interno com endereços IP privados quando sub-redes privadas são fornecidas.
ip-address-type: depende das sub-redes | cria um Application Load Balancer somente IPv4 quando os endereços são IPv4. Quando houver sub-redes habilitadas para IPv6, um Application Load Balancer de pilha dupla será criado. Observe que, se você tiver sub-redes habilitadas para IPv6, o primeiro serviço Express Mode em uma VPC definirá o balanceador de carga interno ou voltado para a internet para essa VPC. Por causa disso, recomendamos criar primeiro suas sub-redes somente IPv6 ou em uma nova VPC.
Os seguintes padrões são definidos no Express Mode e podem ser configurados no Application Load Balancer:
desync-mitigation-mode: Off | a mitigação da dessincronização HTTP está desabilitada
access-logs.enabled: false | o log de acesso está desabilitado
listener-configurations.protocol: https | usa o protocolo HTTPS para comunicação segura
listener-configurations.port: 443 | recebe na porta HTTPS padrão
listener-configurations.rule-type: host-header | roteia o tráfego com base nas regras de cabeçalho do host
Padrões do grupo de destino
Os seguintes padrões do grupo de destino do Amazon EC2 podem ser configurados no Express Mode:
health-check-path: (padrão “/”) caminho da verificação de integridade do serviço Express Mode | caminho do URL para solicitações de verificação de integridade
port: (padrão 80) | porta na qual os destinos recebem tráfego
health-check-port: (padrão 80) | porta para solicitações de verificação de integridade
Os seguintes padrões são definidos pelo Express Mode e podem ser configurados nos grupos de destino do Amazon EC2:
protocol: HTTP | protocolo para rotear o tráfego para os destinos
protocol-version: HTTP1 | versão do protocolo HTTP para comunicação
vpc-id: o padrão é a VPC padrão | identificador de nuvem privada virtual para o grupo de destino, mas será derivado das sub–redes fornecidas
health-check-protocol: o mesmo que Protocol | o protocolo para solicitações de verificação de integridade
health-check-enabled: sempre habilitada | as verificações de integridade são habilitadas automaticamente
health-check-interval-seconds: 30 | o tempo entre as verificações de integridade de destinos individuais
health-check-timeout-seconds: 5 | duração do tempo limite para respostas da verificação de integridade
healthy-threshold-count: 5 | são necessárias verificações de integridade consecutivas bem-sucedidas para o estado íntegro
unhealthy-threshold-count: 2 | são necessárias verificações de integridade com falha para o estado íntegro
target-type: ip | os destinos são registrados pelo endereço IP
ip-address-type: ipv4 | usa endereços IPv4 para registro de destino
Compartilhamento de recursos e otimização de custos
Os serviços Express Mode compartilham recursos automaticamente quando possível para otimizar os custos:
-
Compartilhamento do balanceador de carga: até 25 serviços Express Mode na mesma VPC podem compartilhar um Application Load Balancer. O Express Mode provisionará Application Load Balancers adicionais conforme necessário, dependendo da quantidade de serviços Express Mode que você provisionou. E à medida que você reduz a quantidade de serviços Express Mode em sua VPC, o Express Mode também desprovisionará Application Load Balancers não utilizados. Esse compartilhamento reduz o custo efetivo por aplicação conforme você implanta mais serviços Express Mode.
-
Compartilhamento de clusters: os serviços Express Mode podem ser agrupados em clusters do Amazon ECS. Os serviços Express Mode também podem compartilhar clusters do Amazon ECS com serviços do Amazon ECS não gerenciados pelo Express Mode.