Seleziona le tue preferenze relative ai cookie

Utilizziamo cookie essenziali e strumenti simili necessari per fornire il nostro sito e i nostri servizi. Utilizziamo i cookie prestazionali per raccogliere statistiche anonime in modo da poter capire come i clienti utilizzano il nostro sito e apportare miglioramenti. I cookie essenziali non possono essere disattivati, ma puoi fare clic su \"Personalizza\" o \"Rifiuta\" per rifiutare i cookie prestazionali.

Se sei d'accordo, AWS e le terze parti approvate utilizzeranno i cookie anche per fornire utili funzionalità del sito, ricordare le tue preferenze e visualizzare contenuti pertinenti, inclusa la pubblicità pertinente. Per continuare senza accettare questi cookie, fai clic su \"Continua\" o \"Rifiuta\". Per effettuare scelte più dettagliate o saperne di più, fai clic su \"Personalizza\".

Utilizzo della scalabilità AWS CLI automatica di DynamoDB per gestire

Modalità Focus
Utilizzo della scalabilità AWS CLI automatica di DynamoDB per gestire - Amazon DynamoDB

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à.

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à.

Invece di usare il AWS Management Console, puoi usare il AWS Command Line Interface (AWS CLI) per gestire la scalabilità automatica di Amazon DynamoDB. Nel tutorial in questa sezione viene illustrato come installare e configurare la AWS CLI per la gestione della scalabilità automatica di DynamoDB. In questo tutorial, esegui quanto indicato di seguito:

  • Crea una tabella DynamoDB denominata TestTable. Le impostazioni di velocità effettiva iniziali sono 5 unità di capacità di lettura e 5 unità di capacità di scrittura.

  • Crea una policy di Application Auto Scaling per TestTable. La policy cerca di mantenere un rapporto obiettivo del 50% tra capacità di scrittura utilizzata e capacità di scrittura assegnata. L'intervallo per questo parametro è compreso tra 5 e 10 unità di capacità di scrittura. (Application Auto Scaling non può regolare la velocità effettiva oltre questo intervallo).

  • Eseguire un programma Python per indirizzare il traffico di scrittura su TestTable. Quando il rapporto di destinazione supera il 50% per un periodo di tempo prolungato, Application Auto Scaling richiede a DynamoDB di regolare la velocità effettiva di TestTable verso l'alto in modo da mantenere l'utilizzo della destinazione al 50%.

  • Verificare che DynamoDB abbia regolato correttamente la capacità di scrittura assegnata per TestTable.

Nota

Puoi anche pianificare il ridimensionamento di DynamoDB in modo che avvenga in determinati momenti. Scopri i passaggi di base qui.

Prima di iniziare

Prima di iniziare il tutorial, completare le attività seguenti:

Installazione di AWS CLI

Se non l'hai ancora fatto, installa e configura AWS CLI. A questo scopo, seguire le istruzioni fornite nella Guida per l'utente di AWS Command Line Interface :

Installazione di Python

Parte di questo tutorial richiede l'esecuzione di un programma Python (vedere Passaggio 4: Indirizza il traffico di scrittura verso TestTable). Se non è già installato, scaricare Python.

Fase 1: creazione di una tabella DynamoDB

In questo passaggio, usi il AWS CLI per creareTestTable. La chiave primaria è costituita da pk (chiave di partizione) e da sk (chiave di ordinamento). Entrambi questi attributi sono di tipo Number. Le impostazioni di velocità effettiva iniziali sono 5 unità di capacità di lettura e 5 unità di capacità di scrittura.

  1. Utilizzate il seguente AWS CLI comando per creare la tabella.

    aws dynamodb create-table \ --table-name TestTable \ --attribute-definitions \ AttributeName=pk,AttributeType=N \ AttributeName=sk,AttributeType=N \ --key-schema \ AttributeName=pk,KeyType=HASH \ AttributeName=sk,KeyType=RANGE \ --provisioned-throughput ReadCapacityUnits=5,WriteCapacityUnits=5
  2. Per verificare lo stato della tabella, utilizza il comando seguente.

    aws dynamodb describe-table \ --table-name TestTable \ --query "Table.[TableName,TableStatus,ProvisionedThroughput]"

    La tabella è pronta per l'uso quando lo stato diventa ACTIVE.

Fase 2: registrazione di una destinazione scalabile

Successivamente si registra la capacità di scrittura della tabella come destinazione scalabile con Application Auto Scaling. Ciò consente ad Application Auto Scaling di regolare la capacità di scrittura assegnata per TestTable, ma solo entro un intervallo di 5-10 unità di capacità.

Nota

La scalabilità automatica di DynamoDB richiede la presenza di un ruolo collegato al servizio (AWSServiceRoleForApplicationAutoScaling_DynamoDBTable) che esegue operazioni di scalabilità automatica per conto tuo. Questo ruolo viene creato automaticamente per te. Per ulteriori informazioni, consulta Ruoli collegati ai servizi per Application Auto Scaling nella Guida per l'utente di Application Auto Scaling.

  1. Utilizza il comando seguente per registrare la destinazione scalabile.

    aws application-autoscaling register-scalable-target \ --service-namespace dynamodb \ --resource-id "table/TestTable" \ --scalable-dimension "dynamodb:table:WriteCapacityUnits" \ --min-capacity 5 \ --max-capacity 10
  2. Utilizza il comando seguente per verificare la registrazione.

    aws application-autoscaling describe-scalable-targets \ --service-namespace dynamodb \ --resource-id "table/TestTable"
    Nota

    È inoltre possibile registrare una destinazione scalabile rispetto a un indice secondario globale. Ad esempio, per un indice secondario globale ("test-index"), l'ID risorsa e gli argomenti della dimensione scalabile vengono aggiornati di conseguenza.

    aws application-autoscaling register-scalable-target \ --service-namespace dynamodb \ --resource-id "table/TestTable/index/test-index" \ --scalable-dimension "dynamodb:index:WriteCapacityUnits" \ --min-capacity 5 \ --max-capacity 10

Fase 3: creazione di una policy di dimensionamento

In questa fase, viene creata una policy di dimensionamento per TestTable. La policy definisce i dettagli in base ai quali Application Auto Scaling può regolare la velocità effettiva assegnata della tabella e le operazioni da intraprendere quando lo fa. Questa policy viene associata alla destinazione scalabile definita nel passaggio precedente (unità di capacità di scrittura per la tabella TestTable).

La policy contiene i seguenti elementi:

  • PredefinedMetricSpecification: il parametro che può essere regolato da Application Auto Scaling. Per DynamoDB, i seguenti valori sono valori validi perPredefinedMetricType:

    • DynamoDBReadCapacityUtilization

    • DynamoDBWriteCapacityUtilization

  • ScaleOutCooldown: la quantità minima di tempo (espressa in secondi) tra ogni evento Application Auto Scaling che aumenta la velocità effettiva assegnata. Questo parametro consente ad Application Auto Scaling di aumentare continuamente, ma non in modo aggressivo, la velocità effettiva in risposta ai carichi di lavoro reali. L'impostazione predefinita per ScaleOutCooldown è 0.

  • ScaleInCooldown: la quantità minima di tempo (espressa in secondi) tra ogni evento Application Auto Scaling che diminuisce la velocità effettiva assegnata. Questo parametro consente ad Application Auto Scaling di ridurre la velocità effettiva in maniera graduale e prevedibile. L'impostazione predefinita per ScaleInCooldown è 0.

  • TargetValue: Application Auto Scaling assicura che il rapporto tra la capacità utilizzata e la capacità assegnata rimanga pari o vicino a questo valore. TargetValue viene definito in percentuale.

Nota

Per capire meglio come funziona TargetValue, supponiamo di avere una tabella con un'impostazione di velocità effettiva assegnata pari a 200 unità di capacità in scrittura. Si decide di creare una policy di dimensionamento per questa tabella, con un TargetValue del 70%.

Si supponga ora di iniziare a guidare il traffico di scrittura verso la tabella in modo che la velocità effettiva di scrittura sia di 150 unità di capacità. Il consumed-to-provisioned rapporto è ora (150/ 200), ovvero il 75 percento. Questo rapporto supera l'obiettivo, pertanto Application Auto Scaling aumenta la capacità di scrittura assegnata a 215 in modo che il rapporto sia (150/215) o 69,77%, il più vicino possibile a TargetValue ma senza superarlo.

Per TestTable, TargetValue si imposta al 50%. Application Auto Scaling regola il throughput assegnato dalla tabella entro un intervallo di 5-10 unità di capacità (vediFase 2: registrazione di una destinazione scalabile) in modo che il consumed-to-provisioned rapporto rimanga pari o vicino al 50 percento. I valori di ScaleOutCooldown e ScaleInCooldown vengono impostati su 60 secondi.

  1. Crea un file denominato scaling-policy.json con i seguenti contenuti.

    { "PredefinedMetricSpecification": { "PredefinedMetricType": "DynamoDBWriteCapacityUtilization" }, "ScaleOutCooldown": 60, "ScaleInCooldown": 60, "TargetValue": 50.0 }
  2. Utilizzare il comando seguente per creare la politica AWS CLI .

    aws application-autoscaling put-scaling-policy \ --service-namespace dynamodb \ --resource-id "table/TestTable" \ --scalable-dimension "dynamodb:table:WriteCapacityUnits" \ --policy-name "MyScalingPolicy" \ --policy-type "TargetTrackingScaling" \ --target-tracking-scaling-policy-configuration file://scaling-policy.json
  3. Nell'output, tieni presente che Application Auto Scaling ha creato due CloudWatch allarmi Amazon, uno per il limite superiore e inferiore dell'intervallo target di scalabilità.

  4. Usa il seguente AWS CLI comando per visualizzare maggiori dettagli sulla politica di scalabilità.

    aws application-autoscaling describe-scaling-policies \ --service-namespace dynamodb \ --resource-id "table/TestTable" \ --policy-name "MyScalingPolicy"
  5. Nell'output, verificare che le impostazioni delle policy corrispondano alle specifiche da Fase 2: registrazione di una destinazione scalabile e Fase 3: creazione di una policy di dimensionamento.

Passaggio 4: Indirizza il traffico di scrittura verso TestTable

Ora è possibile testare la policy di dimensionamento scrivendo i dati in TestTable. Per fare ciò, viene eseguito un programma Python.

  1. Crea un file denominato bulk-load-test-table.py con i seguenti contenuti.

    import boto3 dynamodb = boto3.resource('dynamodb') table = dynamodb.Table("TestTable") filler = "x" * 100000 i = 0 while (i < 10): j = 0 while (j < 10): print (i, j) table.put_item( Item={ 'pk':i, 'sk':j, 'filler':{"S":filler} } ) j += 1 i += 1
  2. Per eseguire il programma, immettere il comando seguente.

    python bulk-load-test-table.py

    La capacità di scrittura assegnata per TestTable è molto bassa (5 unità di capacità di scrittura), quindi il programma si blocca occasionalmente a causa della limitazione della scrittura. Questo è il comportamento previsto.

    Lasciare che il programma continui a funzionare mentre si passa alla fase successiva.

Fase 5: visualizzazione delle operazioni di Application Auto Scaling

In questa fase vengono visualizzate le operazioni di Application Auto Scaling che vengono avviate per conto tuo. Viene inoltre verificato che Application Auto Scaling abbia aggiornato la capacità di scrittura assegnata per TestTable.

  1. Immettere il comando seguente per visualizzare le operazioni di Application Auto Scaling.

    aws application-autoscaling describe-scaling-activities \ --service-namespace dynamodb

    Eseguire di nuovo questo comando occasionalmente, mentre il programma Python è in esecuzione. Occorrono diversi minuti prima che la policy di dimensionamento venga richiamata. Dovrebbe essere visualizzato l'output riportato di seguito.

    ... { "ScalableDimension": "dynamodb:table:WriteCapacityUnits", "Description": "Setting write capacity units to 10.", "ResourceId": "table/TestTable", "ActivityId": "0cc6fb03-2a7c-4b51-b67f-217224c6b656", "StartTime": 1489088210.175, "ServiceNamespace": "dynamodb", "EndTime": 1489088246.85, "Cause": "monitor alarm AutoScaling-table/TestTable-AlarmHigh-1bb3c8db-1b97-4353-baf1-4def76f4e1b9 in state ALARM triggered policy MyScalingPolicy", "StatusMessage": "Successfully set write capacity units to 10. Change successfully fulfilled by dynamodb.", "StatusCode": "Successful" }, ...

    Ciò indica che Application Auto Scaling ha emesso una richiesta UpdateTable a DynamoDB.

  2. Immettere il comando seguente per verificare che DynamoDB ha aumentato la capacità di scrittura della tabella.

    aws dynamodb describe-table \ --table-name TestTable \ --query "Table.[TableName,TableStatus,ProvisionedThroughput]"

    WriteCapacityUnits dovrebbe essersi dimensionato da 5 a 10.

(Opzionale) Fase 6: pulizia

In questo tutorial sono state create diverse risorse. È possibile eliminare queste risorse se non sono più necessarie.

  1. Eliminare la policy di dimensionamento per TestTable.

    aws application-autoscaling delete-scaling-policy \ --service-namespace dynamodb \ --resource-id "table/TestTable" \ --scalable-dimension "dynamodb:table:WriteCapacityUnits" \ --policy-name "MyScalingPolicy"
  2. Annullare la registrazione di una destinazione scalabile.

    aws application-autoscaling deregister-scalable-target \ --service-namespace dynamodb \ --resource-id "table/TestTable" \ --scalable-dimension "dynamodb:table:WriteCapacityUnits"
  3. Eliminare la tabella TestTable.

    aws dynamodb delete-table --table-name TestTable
PrivacyCondizioni del sitoPreferenze cookie
© 2025, Amazon Web Services, Inc. o società affiliate. Tutti i diritti riservati.