Créez une politique de dimensionnement par étapes pour Application Auto Scaling à l'aide du AWS CLI - Application Autoscaling

Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.

Créez une politique de dimensionnement par étapes pour Application Auto Scaling à l'aide du AWS CLI

Cet exemple utilise des AWS CLI commandes pour créer une politique de dimensionnement par étapes pour un service Amazon ECS. Pour une autre cible évolutive, spécifiez son espace de noms dans--service-namespace, sa dimension évolutive dans --scalable-dimension et son ID de ressource dans--resource-id.

Lorsque vous utilisez le AWS CLI, n'oubliez pas que vos commandes s'exécutent dans la Région AWS configuration adaptée à votre profil. Si vous souhaitez exécuter les commandes dans une autre région, modifiez la région par défaut pour votre profil, ou utilisez le paramètre --region avec la commande.

Étape 1 : enregistrer une cible évolutive

Si vous ne l'avez pas encore fait, enregistrez la cible évolutive. Utilisez la register-scalable-targetcommande pour enregistrer une ressource spécifique dans le service cible en tant que cible évolutive. L'exemple suivant enregistre un service Amazon ECS avec Application Auto Scaling. Application Auto Scaling peut ajuster le nombre de tâches avec un minimum de 2 tâches et un maximum de 10 tâches. Remplacez chaque espace réservé à la saisie de l'utilisateur par vos propres informations.

Linux, macOS ou Unix

aws application-autoscaling register-scalable-target --service-namespace ecs \ --scalable-dimension ecs:service:DesiredCount \ --resource-id service/my-cluster/my-service \ --min-capacity 2 --max-capacity 10

Windows

aws application-autoscaling register-scalable-target --service-namespace ecs ^ --scalable-dimension ecs:service:DesiredCount ^ --resource-id service/my-cluster/my-service ^ --min-capacity 2 --max-capacity 10
Sortie

En cas de réussite, cette commande renvoie l'ARN de la cible évolutive. Voici un exemple de sortie.

{ "ScalableTargetARN": "arn:aws:application-autoscaling:region:account-id:scalable-target/1234abcd56ab78cd901ef1234567890ab123" }

Étape 2 : Création d'une politique de dimensionnement par étapes

Pour créer une politique d'échelonnement pour votre cible évolutive, vous pouvez utiliser les exemples suivants pour vous aider à démarrer.

Scale out
Pour créer une politique de mise à l'échelle progressive pour le scalage (augmentation de la capacité)
  1. Utilisez la cat commande suivante pour enregistrer une configuration de politique de dimensionnement par étapes dans un fichier JSON nommé config.json dans votre répertoire de base. Voici un exemple de configuration avec un type de réglage PercentChangeInCapacity qui augmente la capacité de la cible évolutive en fonction des ajustements par étapes suivants (en supposant un seuil CloudWatch d'alarme de 70) :

    • Augmenter la capacité de 10 % lorsque la valeur de la métrique est supérieure ou égale à 70 mais inférieure à 85

    • Augmenter la capacité de 20 % lorsque la valeur de la métrique est supérieure ou égale à 85 mais inférieure à 95

    • Augmenter la capacité de 30 % lorsque la valeur de la métrique est supérieure ou égale à 95

    $ cat ~/config.json { "AdjustmentType": "PercentChangeInCapacity", "MetricAggregationType": "Average", "Cooldown": 60, "MinAdjustmentMagnitude": 1, "StepAdjustments": [ { "MetricIntervalLowerBound": 0.0, "MetricIntervalUpperBound": 15.0, "ScalingAdjustment": 10 }, { "MetricIntervalLowerBound": 15.0, "MetricIntervalUpperBound": 25.0, "ScalingAdjustment": 20 }, { "MetricIntervalLowerBound": 25.0, "ScalingAdjustment": 30 } ] }

    Pour plus d'informations, reportez-vous StepScalingPolicyConfigurationà la section Application Auto Scaling API Reference.

  2. Utilisez la put-scaling-policycommande suivante, ainsi que le config.json fichier que vous avez créé, pour créer une politique de dimensionnement nomméemy-step-scaling-policy.

    Linux, macOS ou Unix

    aws application-autoscaling put-scaling-policy --service-namespace ecs \ --scalable-dimension ecs:service:DesiredCount \ --resource-id service/my-cluster/my-service \ --policy-name my-step-scaling-policy --policy-type StepScaling \ --step-scaling-policy-configuration file://config.json

    Windows

    aws application-autoscaling put-scaling-policy --service-namespace ecs ^ --scalable-dimension ecs:service:DesiredCount ^ --resource-id service/my-cluster/my-service ^ --policy-name my-step-scaling-policy --policy-type StepScaling ^ --step-scaling-policy-configuration file://config.json
    Sortie

    Le résultat comprend l'ARN qui sert de nom unique pour la stratégie. Vous en avez besoin pour créer une CloudWatch alarme pour votre police. Voici un exemple de sortie.

    { "PolicyARN": "arn:aws:autoscaling:region:123456789012:scalingPolicy:ac542982-cbeb-4294-891c-a5a941dfa787:resource/ecs/service/my-cluster/my-service:policyName/my-step-scaling-policy" }
Scale in
Pour créer une politique d'échelonnement à des fins d'évolutivité (diminution de la capacité)
  1. Utilisez la cat commande suivante pour enregistrer une configuration de politique de dimensionnement par étapes dans un fichier JSON nommé config.json dans votre répertoire de base. Voici un exemple de configuration avec un type de réglage ChangeInCapacity qui réduit la capacité de la cible évolutive en fonction des ajustements par étapes suivants (en supposant un seuil CloudWatch d'alarme de 50) :

    • Diminuez la capacité de 1 lorsque la valeur de la métrique est inférieure ou égale à 50 mais supérieure à 40

    • Diminuez la capacité de 2 lorsque la valeur de la métrique est inférieure ou égale à 40 mais supérieure à 30

    • Diminuez la capacité de 3 lorsque la valeur de la métrique est inférieure ou égale à 30

    $ cat ~/config.json { "AdjustmentType": "ChangeInCapacity", "MetricAggregationType": "Average", "Cooldown": 60, "StepAdjustments": [ { "MetricIntervalUpperBound": 0.0, "MetricIntervalLowerBound": -10.0, "ScalingAdjustment": -1 }, { "MetricIntervalUpperBound": -10.0, "MetricIntervalLowerBound": -20.0, "ScalingAdjustment": -2 }, { "MetricIntervalUpperBound": -20.0, "ScalingAdjustment": -3 } ] }

    Pour plus d'informations, reportez-vous StepScalingPolicyConfigurationà la section Application Auto Scaling API Reference.

  2. Utilisez la put-scaling-policycommande suivante, ainsi que le config.json fichier que vous avez créé, pour créer une politique de dimensionnement nomméemy-step-scaling-policy.

    Linux, macOS ou Unix

    aws application-autoscaling put-scaling-policy --service-namespace ecs \ --scalable-dimension ecs:service:DesiredCount \ --resource-id service/my-cluster/my-service \ --policy-name my-step-scaling-policy --policy-type StepScaling \ --step-scaling-policy-configuration file://config.json

    Windows

    aws application-autoscaling put-scaling-policy --service-namespace ecs ^ --scalable-dimension ecs:service:DesiredCount ^ --resource-id service/my-cluster/my-service ^ --policy-name my-step-scaling-policy --policy-type StepScaling ^ --step-scaling-policy-configuration file://config.json
    Sortie

    Le résultat comprend l'ARN qui sert de nom unique pour la stratégie. Vous avez besoin de cet ARN pour créer une CloudWatch alarme pour votre politique. Voici un exemple de sortie.

    { "PolicyARN": "arn:aws:autoscaling:region:123456789012:scalingPolicy:ac542982-cbeb-4294-891c-a5a941dfa787:resource/ecs/service/my-cluster/my-service:policyName/my-step-scaling-policy" }

Étape 3 : créer une alarme qui invoque une politique de dimensionnement

Enfin, utilisez la CloudWatch put-metric-alarmcommande suivante pour créer une alarme à utiliser avec votre politique de dimensionnement des étapes. Dans cet exemple, nous utilisons une alarme basée sur l'utilisation moyenne de l'UC. L'alarme est configurée pour être dans un état ALARM si elle atteint un seuil de 70 % pendant au moins deux périodes d'évaluation consécutives de 60 secondes. Pour spécifier une autre CloudWatch métrique ou utiliser votre propre métrique personnalisée, spécifiez son nom dans --metric-name et son espace de noms dans--namespace.

Linux, macOS ou Unix

aws cloudwatch put-metric-alarm --alarm-name Step-Scaling-AlarmHigh-ECS:service/my-cluster/my-service \ --metric-name CPUUtilization --namespace AWS/ECS --statistic Average \ --period 60 --evaluation-periods 2 --threshold 70 \ --comparison-operator GreaterThanOrEqualToThreshold \ --dimensions Name=ClusterName,Value=default Name=ServiceName,Value=sample-app-service \ --alarm-actions PolicyARN

Windows

aws cloudwatch put-metric-alarm --alarm-name Step-Scaling-AlarmHigh-ECS:service/my-cluster/my-service ^ --metric-name CPUUtilization --namespace AWS/ECS --statistic Average ^ --period 60 --evaluation-periods 2 --threshold 70 ^ --comparison-operator GreaterThanOrEqualToThreshold ^ --dimensions Name=ClusterName,Value=default Name=ServiceName,Value=sample-app-service ^ --alarm-actions PolicyARN