AWS::ApplicationAutoScaling::ScalingPolicy - AWS CloudFormation

AWS::ApplicationAutoScaling::ScalingPolicy

O recurso AWS::ApplicationAutoScaling::ScalingPolicy define uma política de escalabilidade usada pelo Application Auto Scaling para ajustar seus recursos de aplicativos.

Para obter mais informações sobre as políticas de escalabilidade do Application Auto Scaling, consulte o Guia do usuário do Application Auto Scaling.

Sintaxe

Para declarar esta entidade no modelo do AWS CloudFormation, use a seguinte sintaxe:

JSON

{ "Type" : "AWS::ApplicationAutoScaling::ScalingPolicy", "Properties" : { "PolicyName" : String, "PolicyType" : String, "ResourceId" : String, "ScalableDimension" : String, "ScalingTargetId" : String, "ServiceNamespace" : String, "StepScalingPolicyConfiguration" : StepScalingPolicyConfiguration, "TargetTrackingScalingPolicyConfiguration" : TargetTrackingScalingPolicyConfiguration } }

Properties

PolicyName

O nome da política de escalabilidade.

Obrigatório: Sim

Type: string

Mínimo: 1

Máximo: 256

Padrão: \p{Print}+

Update requires: Replacement

PolicyType

O tipo de política do Application Auto Scaling.

Há suporte para os seguintes tipos de política:

TargetTrackingScaling — não compatível com o Amazon EMR

StepScaling – não compatível com o DynamoDB, o Amazon Comprehend, o Lambda nem com o Amazon Keyspaces (para Apache Cassandra)

Obrigatório: Sim

Type: string

Update requires: No interruption

ResourceId

O identificador do recurso associado à política de escalabilidade. Essa string consiste no tipo de recurso e no identificador exclusivo.

  • Serviço do ECS - O tipo de recurso é service, e o identificador exclusivo é o nome do cluster e o nome do serviço. Exemplo: service/default/sample-webapp.

  • Solicitação de frota spot - O tipo de recurso é spot-fleet-request, e o identificador exclusivo é o ID da solicitação de frota spot. Exemplo: spot-fleet-request/sfr-73fbd2ce-aa30-494c-8788-1cee4EXAMPLE.

  • Cluster do EMR – o tipo de recurso é instancegroup e o identificador exclusivo é o ID do cluster e o ID do grupo de instâncias. Exemplo: instancegroup/j-2EEZNYKUA1NTV/ig-1791Y4E1L8YI0.

  • Frota do AppStream 2.0 – o tipo de recurso é fleet e o identificador exclusivo é o nome da frota. Exemplo: fleet/sample-fleet.

  • Tabela do DynamoDB – o tipo de recurso é table e o identificador exclusivo é o nome da tabela. Exemplo: table/my-table.

  • Índice secundário global do DynamoDB – o tipo de recurso é index e o identificador exclusivo é o nome do índice. Exemplo: table/my-table/index/my-table-index.

  • Cluster de banco de dados do Aurora - O tipo de recurso é cluster, e o identificador exclusivo é o nome do cluster. Exemplo: cluster:my-db-cluster.

  • Variante de endpoint do Amazon SageMaker – o tipo de recurso é variant e o identificador exclusivo é o ID do recurso. Exemplo: endpoint/my-end-point/variant/KMeansClustering.

  • Recursos personalizados não são compatíveis com um tipo de recurso. Esse parâmetro deve especificar o OutputValue da pilha de modelos do CloudFormation usada para acessar os recursos. O identificador exclusivo é definido pelo provedor de serviços. Mais informações estão disponíveis no nosso repositório GitHub.

  • Endpoint de classificação de documentos do Amazon Comprehend – o tipo de recurso e o identificador exclusivo são especificados usando o ARN do endpoint. Exemplo: arn:aws:comprehend:us-west-2:123456789012:document-classifier-endpoint/EXAMPLE.

  • Simultaneidade provisionada do Lambda – o tipo de recurso é function e o identificador exclusivo é o nome da função, com uma versão de função ou sufixo de nome de alias que não seja $LATEST. Exemplo: function:my-function:prod ou function:my-function:1.

  • Tabela do Amazon Keyspaces – o tipo de recurso é table e o identificador exclusivo é o nome da tabela. Exemplo: keyspace/mykeyspace/table/mytable.

Obrigatório: Não

Type: string

Mínimo: 1

Máximo: 1600

Padrão: [\u0020-\uD7FF\uE000-\uFFFD\uD800\uDC00-\uDBFF\uDFFF\r\n\t]*

Update requires: Replacement

ScalableDimension

A dimensão escalável. Essa string consiste no namespace do serviço, no tipo de recurso e na propriedade de escalabilidade.

  • ecs:service:DesiredCount - A contagem de tarefas desejada de um serviço do ECS.

  • ec2:spot-fleet-request:TargetCapacity- A capacidade de destino de uma solicitação de frota spot.

  • elasticmapreduce:instancegroup:InstanceCount: a contagem de instâncias de um grupo de instâncias do EMR.

  • appstream:fleet:DesiredCapacity: a capacidade desejada de uma frota do AppStream 2.0.

  • dynamodb:table:ReadCapacityUnits - A capacidade de leitura provisionada de uma tabela do DynamoDB.

  • dynamodb:table:WriteCapacityUnits - A capacidade de gravação provisionada de uma tabela do DynamoDB.

  • dynamodb:index:ReadCapacityUnits – a capacidade de leitura provisionada de um índice secundário global do DynamoDB.

  • dynamodb:index:WriteCapacityUnits – a capacidade de gravação provisionada de um índice secundário global do DynamoDB.

  • rds:cluster:ReadReplicaCount – a contagem de réplicas do Aurora em um cluster de banco de dados do Aurora. Disponível para Edição compatível com MySQL do Aurora e Edição compatível com PostgreSQL do Aurora.

  • sagemaker:variant:DesiredInstanceCount: o número de instâncias do EC2 para uma variante de endpoint de modelo do Amazon SageMaker.

  • custom-resource:ResourceType:Property: a dimensão escalável para um recurso personalizado fornecido pelo seu próprio aplicativo ou serviço.

  • comprehend:document-classifier-endpoint:DesiredInferenceUnits: o número de unidades de inferência para um endpoint de classificação de documentos do Amazon Comprehend.

  • lambda:function:ProvisionedConcurrency: a simultaneidade provisionada para uma função do Lambda.

  • cassandra:table:ReadCapacityUnits: a capacidade de leitura provisionada para uma tabela do Amazon Keyspaces.

  • cassandra:table:WriteCapacityUnits: a capacidade de gravação provisionada para uma tabela do Amazon Keyspaces.

Obrigatório: Não

Type: string

Valores permitidos: appstream:fleet:DesiredCapacity | cassandra:table:ReadCapacityUnits | cassandra:table:WriteCapacityUnits | comprehend:document-classifier-endpoint:DesiredInferenceUnits | custom-resource:ResourceType:Property | dynamodb:index:ReadCapacityUnits | dynamodb:index:WriteCapacityUnits | dynamodb:table:ReadCapacityUnits | dynamodb:table:WriteCapacityUnits | ec2:spot-fleet-request:TargetCapacity | ecs:service:DesiredCount | elasticmapreduce:instancegroup:InstanceCount | lambda:function:ProvisionedConcurrency | rds:cluster:ReadReplicaCount | sagemaker:variant:DesiredInstanceCount

Update requires: Replacement

ScalingTargetId

O ID de um destino escalável do Application Auto Scaling gerado pelo AWS CloudFormation. Para obter mais informações sobre o ID, consulte a seção de Valor de retorno do recurso AWS::ApplicationAutoScaling::ScalableTarget.

Importante

É necessário especificar a propriedade ScalingTargetId ou as propriedades ResourceId, ScalableDimension e ServiceNamespace, mas não ambas.

Obrigatório: Condicional

Type: string

Update requires: Replacement

ServiceNamespace

O namespace do serviço da AWS que fornece o recurso, ou um custom-resource.

Obrigatório: Não

Type: string

Valores permitidos: appstream | cassandra | comprehend | custom-resource | dynamodb | ec2 | ecs | elasticmapreduce | lambda | rds | sagemaker

Update requires: Replacement

StepScalingPolicyConfiguration

Uma política de escalabilidade em etapas.

Obrigatório: Não

Type: StepScalingPolicyConfiguration

Update requires: No interruption

TargetTrackingScalingPolicyConfiguration

Uma política de escalabilidade de rastreamento de destino.

Obrigatório: Não

Type: TargetTrackingScalingPolicyConfiguration

Update requires: No interruption

Valores de retorno

Ref.

Quando o ID lógico desse recurso for fornecido à função intrínseca Ref, Ref retornará o nome de recurso da Amazon (ARN) da política de escalabilidade do Application Auto Scaling. Por exemplo: arn:aws:autoscaling:us-east-2:123456789012:scalingPolicy:12ab3c4d-56789-0ef1-2345-6ghi7jk8lm90:resource/ecs/service/ecsStack-MyECSCluster-AB12CDE3F4GH/ecsStack-MyECSService-AB12CDE3F4GH:policyName/MyStepPolicy.

Para obter mais informações sobre como usar a função Ref, consulte Ref.

Exemplos

Os exemplos a seguir criam políticas de escalabilidade para um destino escalável que está registrado no Application Auto Scaling.

Para obter mais trechos de modelo, consulte Exemplos de modelo do Application Auto Scaling.

Política de escalabilidade de rastreamento de destino com uma métrica predefinida

Esse exemplo mostra como declarar um novo recurso AWS::ApplicationAutoScaling::ScalingPolicy para criar uma política de escalabilidade usando o tipo de política TargetTrackingScaling.

Nesse trecho, a política especifica a métrica predefinida ECSServiceAverageCPUUtilization. As métricas usadas com uma política de escalabilidade de rastreamento de destino são personalizadas ou predefinidas. Para obter a lista de métricas predefinidas, consulte PredefinedMetricSpecification. Quando a métrica é igual ou superior a 75%, a política de escalabilidade aumenta (amplia) a capacidade do destino escalável e, quando ela cai abaixo de 75%, a política de escalabilidade diminui (reduz) a capacidade do destino escalável. A política de escalabilidade tem um período de desaquecimento de 60 segundos após cada ação de escalabilidade.

JSON

{ "Resources":{ "TargetTrackingScalingPolicy":{ "Type":"AWS::ApplicationAutoScaling::ScalingPolicy", "Properties":{ "PolicyName":"cpu75-target-tracking-scaling-policy", "PolicyType":"TargetTrackingScaling", "ScalingTargetId":{ "Ref":"ScalableTarget" }, "TargetTrackingScalingPolicyConfiguration":{ "TargetValue":75.0, "ScaleInCooldown":60, "ScaleOutCooldown":60, "PredefinedMetricSpecification":{ "PredefinedMetricType":"ECSServiceAverageCPUUtilization" } } } } } }

YAML

--- Resources: TargetTrackingScalingPolicy: Type: AWS::ApplicationAutoScaling::ScalingPolicy Properties: PolicyName: cpu75-target-tracking-scaling-policy PolicyType: TargetTrackingScaling ScalingTargetId: !Ref ScalableTarget TargetTrackingScalingPolicyConfiguration: TargetValue: 75.0 ScaleInCooldown: 60 ScaleOutCooldown: 60 PredefinedMetricSpecification: PredefinedMetricType: ECSServiceAverageCPUUtilization

Política de escalabilidade em etapas

O exemplo a seguir cria uma política de escalabilidade com o tipo de política StepScaling e o tipo de ajuste ChangeInCapacity. Quando um alarme associado é acionado, a política aumenta a capacidade do destino escalável com base nos seguintes ajustes em etapas (pressupondo-se um limite de alarme do CloudWatch de 70%):

  • Aumentar a capacidade em 1 quando o valor da métrica for maior ou igual a 70%, mas menor que 85%

  • Aumentar a capacidade em 2 quando o valor da métrica for maior ou igual a 85%, mas menor que 95%

  • Aumentar a capacidade em 3 quando o valor da métrica for maior ou igual a 95%

Nesse trecho, a política de escalabilidade tem um período de desaquecimento de 600 segundos após cada ação de escalabilidade.

JSON

{ "Resources":{ "PolicyHigh":{ "Type":"AWS::ApplicationAutoScaling::ScalingPolicy", "Properties":{ "PolicyName":"PolicyHigh", "PolicyType":"StepScaling", "ScalingTargetId":{ "Ref":"ScalableTarget" }, "StepScalingPolicyConfiguration":{ "AdjustmentType":"ChangeInCapacity", "Cooldown":600, "MetricAggregationType":"Average", "StepAdjustments":[ { "MetricIntervalLowerBound":0, "MetricIntervalUpperBound":15, "ScalingAdjustment":1 }, { "MetricIntervalLowerBound":15, "MetricIntervalUpperBound":25, "ScalingAdjustment":2 }, { "MetricIntervalLowerBound":25, "ScalingAdjustment":3 } ] } } } } }

YAML

--- Resources: PolicyHigh: Type: AWS::ApplicationAutoScaling::ScalingPolicy Properties: PolicyName: PolicyHigh PolicyType: StepScaling ScalingTargetId: Ref: ScalableTarget StepScalingPolicyConfiguration: AdjustmentType: ChangeInCapacity Cooldown: 600 MetricAggregationType: Average StepAdjustments: - MetricIntervalLowerBound: 0 MetricIntervalUpperBound: 15 ScalingAdjustment: 1 - MetricIntervalLowerBound: 15 MetricIntervalUpperBound: 25 ScalingAdjustment: 2 - MetricIntervalLowerBound: 25 ScalingAdjustment: 3

Consulte também