

Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.

# Creare una politica di scalabilità graduale per Application Auto Scaling utilizzando il AWS CLI
<a name="create-step-scaling-policy-cli"></a>

Questo esempio utilizza AWS CLI i comandi per creare una politica di scalabilità a fasi per un servizio Amazon ECS. Per un target scalabile diverso, specifica il relativo spazio dei nomi in`--service-namespace`, la dimensione scalabile in e l'ID della risorsa in`--scalable-dimension`. `--resource-id`

Quando usi il AWS CLI, ricorda che i comandi vengono eseguiti nella Regione AWS configurazione per il tuo profilo. Per eseguire i comandi in un'altra regione, modificare la regione predefinita per il profilo oppure utilizzare il parametro `--region` con il comando.

**Topics**
+ [Fase 1: Registrare un target scalabile](#step-scaling-register-scalable-target)
+ [Fase 2: Creare una politica di scalabilità graduale](#create-step-scaling-policy)
+ [Fase 3: Crea un allarme che richiami una politica di scalabilità](#step-scaling-create-alarm)

## Fase 1: Registrare un target scalabile
<a name="step-scaling-register-scalable-target"></a>

Se non lo hai ancora fatto, registra l'obiettivo scalabile. Utilizza il comando [register-scalable-target](https://docs.aws.amazon.com/cli/latest/reference/application-autoscaling/register-scalable-target.html) per registrare una risorsa specifica nel servizio obiettivo come obiettivo scalabile. Nell'esempio seguente viene registrato un servizio Amazon ECS con Application Auto Scaling. Application Auto Scaling può dimensionare il numero di attività a un minimo di 2 e un massimo di 10 attività. Sostituisci ogni {{user input placeholder}} con le tue informazioni.

**Linux, macOS o 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**  
In caso di esito positivo, il comando restituisce l'ARN dell'obiettivo scalabile. Di seguito è riportato un output di esempio.

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

## Fase 2: Creare una politica di scalabilità graduale
<a name="create-step-scaling-policy"></a>

Per creare una politica di scalabilità graduale per il tuo obiettivo scalabile, puoi utilizzare i seguenti esempi per iniziare.

------
#### [ Scale out ]

**Per creare una politica di scalabilità graduale per la scalabilità orizzontale (aumento della capacità)**

1. Utilizzate il `cat` comando seguente per memorizzare una configurazione della politica di scalabilità dei passaggi in un file JSON denominato `config.json` nella vostra home directory. Di seguito è riportato un esempio di configurazione con un tipo di regolazione `PercentChangeInCapacity` che aumenta la capacità del target scalabile in base alle seguenti regolazioni della fase (presupponendo una soglia di CloudWatch allarme di 70): 
   + Aumenta la capacità del 10 percento quando il valore della metrica è maggiore o uguale a 70 ma inferiore a 85
   + Aumenta la capacità del 20 percento quando il valore della metrica è maggiore o uguale a 85 ma inferiore a 95
   + Aumenta la capacità del 30 percento quando il valore della metrica è maggiore o uguale a 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}}
       }
     ]
   }
   ```

   Per ulteriori informazioni, consulta [StepScalingPolicyConfiguration](https://docs.aws.amazon.com/autoscaling/application/APIReference/API_StepScalingPolicyConfiguration.html)l'*Application Auto Scaling API* Reference.

1. Utilizza il comando [put-scaling-policy](https://docs.aws.amazon.com/cli/latest/reference/application-autoscaling/put-scaling-policy.html) insieme al file `config.json` che hai creato per generare una policy di dimensionamento denominata `my-step-scaling-policy`.

   **Linux, macOS o 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**  
L'output include l'ARN utilizzato come nome univoco per la policy. Ne hai bisogno per creare un CloudWatch allarme per la tua politica. Di seguito è riportato un output di esempio.

   ```
   {
       "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 ]

**Per creare una politica di scalabilità graduale per la scalabilità (riduzione della capacità)**

1. Utilizzate il `cat` comando seguente per memorizzare una configurazione della politica di scalabilità dei passaggi in un file JSON denominato `config.json` nella vostra home directory. Di seguito è riportato un esempio di configurazione con un tipo di regolazione `ChangeInCapacity` che riduce la capacità del target scalabile in base alle seguenti regolazioni della fase (presupponendo una soglia di CloudWatch allarme di 50): 
   + Riduci la capacità di 1 quando il valore della metrica è inferiore o uguale a 50 ma maggiore di 40
   + Riduci la capacità del 2% quando il valore della metrica è inferiore o uguale a 40 ma maggiore di 30
   + Riduci la capacità del 3% quando il valore della metrica è inferiore o uguale a 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}}
       }
     ]
   }
   ```

   Per ulteriori informazioni, consulta [StepScalingPolicyConfiguration](https://docs.aws.amazon.com/autoscaling/application/APIReference/API_StepScalingPolicyConfiguration.html)l'*Application Auto Scaling API* Reference.

1. Utilizza il comando [put-scaling-policy](https://docs.aws.amazon.com/cli/latest/reference/application-autoscaling/put-scaling-policy.html) insieme al file `config.json` che hai creato per generare una policy di dimensionamento denominata `my-step-scaling-policy`.

   **Linux, macOS o 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**  
L'output include l'ARN utilizzato come nome univoco per la policy. Questo ARN ti serve per creare un CloudWatch allarme per la tua polizza. Di seguito è riportato un output di esempio.

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

------

## Fase 3: Crea un allarme che richiami una politica di scalabilità
<a name="step-scaling-create-alarm"></a>

Infine, usa il seguente comando CloudWatch [put-metric-alarm per creare un allarme da](https://docs.aws.amazon.com/cli/latest/reference/cloudwatch/put-metric-alarm.html) utilizzare con la tua politica di scalabilità degli step. In questo esempio, si dispone di un allarme basato sull'utilizzo medio della CPU. L'allarme viene configurato per essere in stato ALARM se raggiunge una soglia del 70% per almeno due periodi di valutazione consecutivi di 60 secondi. Per specificare una metrica diversa o utilizzare una CloudWatch metrica personalizzata, specificane il nome in e il relativo spazio dei nomi in. `--metric-name` `--namespace` 

**Linux, macOS o 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}}
```