

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
<a name="create-step-scaling-policy-cli"></a>

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.

**Topics**
+ [Étape 1 : enregistrer une cible évolutive](#step-scaling-register-scalable-target)
+ [Étape 2 : Création d'une politique de dimensionnement par étapes](#create-step-scaling-policy)
+ [Étape 3 : créer une alarme qui invoque une politique de dimensionnement](#step-scaling-create-alarm)

## Étape 1 : enregistrer une cible évolutive
<a name="step-scaling-register-scalable-target"></a>

Si vous ne l'avez pas encore fait, enregistrez la cible évolutive. Utilisez la commande [register-scalable-target](https://docs.aws.amazon.com/cli/latest/reference/application-autoscaling/register-scalable-target.html) pour enregistrer une ressource spécifique dans le service cible comme 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 {{user input placeholder}} 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}}
```

**Output**  
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
<a name="create-step-scaling-policy"></a>

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 dimensionnement par étapes 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](https://docs.aws.amazon.com/autoscaling/application/APIReference/API_StepScalingPolicyConfiguration.html)à la section *Application Auto Scaling API Reference*.

1. Utilisez la commande [put-scaling-policy](https://docs.aws.amazon.com/cli/latest/reference/application-autoscaling/put-scaling-policy.html) suivante, ainsi que le fichier `config.json` que vous avez créé, pour créer une politique de mise à l'échelle nommée `my-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}}
   ```

**Output**  
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](https://docs.aws.amazon.com/autoscaling/application/APIReference/API_StepScalingPolicyConfiguration.html)à la section *Application Auto Scaling API Reference*.

1. Utilisez la commande [put-scaling-policy](https://docs.aws.amazon.com/cli/latest/reference/application-autoscaling/put-scaling-policy.html) suivante, ainsi que le fichier `config.json` que vous avez créé, pour créer une politique de mise à l'échelle nommée `my-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}}
   ```

**Output**  
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
<a name="step-scaling-create-alarm"></a>

Enfin, utilisez la commande CloudWatch [put-metric-alarm suivante pour créer une alarme](https://docs.aws.amazon.com/cli/latest/reference/cloudwatch/put-metric-alarm.html) à utiliser avec votre politique de dimensionnement par é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}}
```