Verwenden der auto AWS CLI Skalierung von DynamoDB zur Verwaltung - Amazon-DynamoDB

Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.

Verwenden der auto AWS CLI Skalierung von DynamoDB zur Verwaltung

Anstatt das zu verwenden AWS Management Console, können Sie das AWS Command Line Interface (AWS CLI) verwenden, um die auto Skalierung von Amazon DynamoDB zu verwalten. Das Tutorial in diesem Abschnitt erläutert, wie der AWS CLI installiert und konfiguriert wird, um DynamoDB-Auto-Scaling zu verwalten. In diesem Tutorial führen Sie folgende Aufgaben aus:

  • Erstellen einer DynamoDB-Tabelle mit dem Namen TestTable. Die Ersteinstellungen des Durchsatzes sind 5 Lesekapazitätseinheiten und 5 Schreibkapazitätseinheiten.

  • Erstellen Sie die Application-Auto-Scaling-Richtlinie für TestTable. Die Richtlinie versucht ein 50 %-Zielverhältnis zwischen verbrauchter und bereitgestellter Schreibkapazität beizubehalten. Der Bereich für diese Metrik liegt zwischen 5 und 10 Schreibkapazitätseinheiten. (Application Auto Scaling darf den Durchsatz außerhalb dieses Bereichs nicht anpassen.)

  • Ausführen eines Python-Programms, um den Datenverkehr zu TestTable zu leiten. Wenn das Zielverhältnis 50 Prozent über einen anhaltenden Zeitraum überschreitet, benachrichtigt Application Auto Scaling DynamoDB, um den Durchsatz von TestTable nach oben anzupassen, sodass die 50 % Zielauslastung aufrechterhalten werden kann.

  • Überprüfen, ob DynamoDB die bereitgestellte Schreibkapazität für TestTable erfolgreich angepasst hat.

Anmerkung

Sie können Ihre DynamoDB-Skalierung auch so planen, dass sie zu bestimmten Zeiten erfolgt. Lernen Sie hier die grundlegenden Schritte kennen.

Bevor Sie beginnen

Führen Sie folgende Schritte durch, bevor Sie das Tutorial starten.

AWS CLI installieren

Wenn Sie es noch nicht getan haben, müssen Sie AWS CLI installieren und konfigurieren. Befolgen Sie hierzu die Anweisungen im AWS Command Line Interface Benutzerhandbuch:

Installieren von Python

Ein Teil dieses Tutorials erfordert von Ihnen das Ausführen eines Python-Programms (siehe Schritt 4: Leiten Sie den Schreibverkehr weiter zu TestTable). Wenn Sie das noch nicht installiert haben, können Sie Python herunterladen.

Schritt 1: Erstellen einer DynamoDB-Tabelle

In diesem Schritt verwenden Sie die AWS CLI zum ErstellenTestTable. Der Primärschlüssel besteht aus pk (Partitionsschlüssel) und sk (Sortierschlüssel). Beide Attribute sind vom Typ Number. Die Ersteinstellungen des Durchsatzes sind 5 Lesekapazitätseinheiten und 5 Schreibkapazitätseinheiten.

  1. Verwenden Sie den folgenden AWS CLI Befehl, um die Tabelle zu erstellen.

    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. Verwenden Sie den folgenden Befehl, um den Status der Tabelle zu überprüfen.

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

    Die Tabelle ist betriebsbereit, wenn ihr Status ACTIVE ist.

Schritt 2: Registrieren eines skalierbaren Ziels

Jetzt registrieren Sie die Schreibkapazität der Tabelle als ein skalierbares Ziel mit Application Auto Scaling. Auf diese Weise kann Application Auto Scaling die bereitgestellte Schreibkapazität für TestTable, jedoch nur im Bereich von 5—10 Kapazitätseinheiten, anpassen.

Anmerkung

DynamoDB-Auto-Scaling erfordert das Vorhandensein einer Rolle (AWSServiceRoleForApplicationAutoScaling_DynamoDBTable), die in Ihrem Namen Auto-Scaling-Aktionen durchführt. Diese Rolle wird automatisch für Sie erstellt. Weitere Informationen finden Sie unter Serviceverknüpfte Rollen für Application Auto Scaling im Benutzerhandbuch zu Application Auto Scaling.

  1. Geben Sie den folgenden Befehl ein, um das skalierbare Ziel zu registrieren.

    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. Verwenden Sie den folgenden Befehl, um die Registrierung zu überprüfen.

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

    Sie können ein skalierbares Ziel auch für einen globalen sekundären Index registrieren. Beispielsweise werden für einen globalen sekundären Index („Testindex“) die Ressourcen-ID und die skalierbaren Dimensionsargumente entsprechend aktualisiert.

    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

Schritt 3: Erstellen einer Skalierungsrichtlinie

In diesem Schritt erstellen Sie eine Skalierungsrichtlinie für TestTable. Die Richtlinie definiert die Details, unter denen Application Auto Scaling den bereitgestellten Durchsatz Ihrer Tabelle anpassen kann und welche Aktionen erfolgen müssen, wenn dies geschieht. Sie ordnen diese Richtlinie dem skalierbaren Ziel zu, das Sie im vorherigen Schritt definiert haben (Schreibkapazitätseinheiten für die TestTable-Tabelle).

Die Richtlinie enthält die folgenden Elemente:

  • PredefinedMetricSpecification – Die Metrik, die Application Auto Scaling anpassen darf. Für DynamoDB sind die folgenden Werte gültige Werte für PredefinedMetricType:

    • DynamoDBReadCapacityUtilization

    • DynamoDBWriteCapacityUtilization

  • ScaleOutCooldown – Die Mindestzeit (in Sekunden) zwischen jedem Application-Auto-Scaling-Ereignis, das den bereitgestellten Durchsatz erhöht. Dieser Parameter ermöglicht Application Auto Scaling den Durchsatz als Reaktion auf reale Workloads fortlaufend, aber nicht aggressiv, zu erhöhen. Die Standardeinstellung für ScaleOutCooldown lautet 0.

  • ScaleInCooldown – Die Mindestzeit (in Sekunden) zwischen jedem Application-Auto-Scaling-Ereignis, das den bereitgestellten Durchsatz verringert. Dieser Parameter ermöglicht Application Auto Scaling den Durchsatz schrittweise und berechenbar zu verringern. Die Standardeinstellung für ScaleInCooldown lautet 0.

  • TargetValue—Application Auto Scaling stellt sicher, dass das Verhältnis von verbrauchter Kapazität zu bereitgestellter Kapazität diesem Wert nahezu entspricht. Sie definieren TargetValue als Prozentsatz.

Anmerkung

Um besser zu verstehen, wie der TargetValue funktioniert, nehmen Sie an, dass Sie über eine Tabelle mit einer Einstellung des bereitgestellten Durchsatzes von 200 Schreibkapazitätseinheiten verfügen. Sie entscheiden sich dafür, eine Skalierungsrichtlinie für diese Tabelle mit einem TargetValue von 70 % zu erstellen.

Angenommen, Sie beginnen den Schreibverkehr zu der Tabelle zu leiten, damit der tatsächliche Schreibdurchsatz bei 150 Kapazitätseinheiten liegt. Das consumed-to-provisioned Verhältnis liegt jetzt bei (150/ 200) oder 75 Prozent. Dieses Verhältnis überschreitet Ihr Ziel, sodass Application Auto Scaling die bereitgestellte Schreibkapazität auf 215 erhöht, damit das Verhältnis (150 / 215) oder 69,77 Prozent ist – so nah an Ihrem TargetValue wie möglich, jedoch nicht darüber.

Für TestTable, setzen Sie TargetValue 50 Prozent. Application Auto Scaling passt den bereitgestellten Durchsatz der Tabelle im Bereich von 5 bis 10 Kapazitätseinheiten (sieheSchritt 2: Registrieren eines skalierbaren Ziels) an, sodass das consumed-to-provisioned Verhältnis bei oder nahe 50 Prozent bleibt. Sie legen die Werte für ScaleOutCooldown und ScaleInCooldown auf 60 Sekunden fest.

  1. Erstellen Sie eine Datei mit dem Namen scaling-policy.json und dem folgenden Inhalt.

    { "PredefinedMetricSpecification": { "PredefinedMetricType": "DynamoDBWriteCapacityUtilization" }, "ScaleOutCooldown": 60, "ScaleInCooldown": 60, "TargetValue": 50.0 }
  2. Verwenden Sie den folgenden AWS CLI Befehl, um die Richtlinie zu erstellen.

    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. Beachten Sie in der Ausgabe, dass Application Auto Scaling zwei CloudWatch Amazon-Alarme generiert hat — jeweils einen für die obere und untere Grenze des Skalierungszielbereichs.

  4. Verwenden Sie den folgenden AWS CLI Befehl, um weitere Details zur Skalierungsrichtlinie anzuzeigen.

    aws application-autoscaling describe-scaling-policies \ --service-namespace dynamodb \ --resource-id "table/TestTable" \ --policy-name "MyScalingPolicy"
  5. Überprüfen Sie in der Ausgabe, dass die Richtlinieneinstellungen mit Ihren Spezifikationen von Schritt 2: Registrieren eines skalierbaren Ziels und Schritt 3: Erstellen einer Skalierungsrichtlinie übereinstimmen.

Schritt 4: Leiten Sie den Schreibverkehr weiter zu TestTable

Jetzt können Sie Ihre Skalierungsrichtlinie testen, indem Sie Daten in die TestTable schreiben. Führen Sie dafür ein Python-Programm aus.

  1. Erstellen Sie eine Datei mit dem Namen bulk-load-test-table.py und dem folgenden Inhalt.

    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. Geben Sie den folgenden Befehl ein, um das Programm auszuführen.

    python bulk-load-test-table.py

    Die bereitgestellte Schreibkapazität für TestTable ist sehr niedrig (5 Schreibkapazitätseinheiten), sodass das Programm aufgrund von Schreibeinschränkungen gelegentlich stockt. Dieses Verhalten wird erwartet.

    Lassen Sie das Programm weiter ausführen, während Sie mit dem nächsten Schritt fortfahren.

Schritt 5: Anzeigen der Application Auto Scaling

In diesem Schritt sehen Sie sich die Application-Auto-Scaling-Aktionen an, die in Ihrem Namen initiiert werden. Sie überprüfen ebenfalls, ob Application Auto Scaling die bereitgestellte Schreibkapazität für TestTable aktualisiert hat.

  1. Geben Sie den folgenden Befehl ein, um die Application Auto Scaling-Aktionen anzuzeigen.

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

    Führen Sie diesen Befehl gelegentlich erneut aus, während das Python-Programm ausgeführt wird. (Es kann einige Minuten dauern, bevor die Skalierungsrichtlinie aufgerufen wird.) Sie sollten schließlich die folgende Ausgabe sehen.

    ... { "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" }, ...

    Dies weist darauf hin, dass Application Auto Scaling eine UpdateTableAnforderung an DynamoDB ausgegeben hat.

  2. Geben Sie den folgenden Befehl ein, um zu überprüfen, ob DynamoDB die Schreibkapazität der Tabelle erhöht hat:

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

    Die WriteCapacityUnits hätten von 5 auf 10 skaliert werden sollen.

(Optional) Schritt 6: Bereinigen

In diesem Tutorial haben Sie einige Ressourcen erstellt. Sie können diese Ressourcen löschen, wenn Sie sie nicht mehr benötigen.

  1. Löschen Sie die Skalierungsrichtlinie für TestTable:

    aws application-autoscaling delete-scaling-policy \ --service-namespace dynamodb \ --resource-id "table/TestTable" \ --scalable-dimension "dynamodb:table:WriteCapacityUnits" \ --policy-name "MyScalingPolicy"
  2. Melden Sie das skalierbare Ziel ab.

    aws application-autoscaling deregister-scalable-target \ --service-namespace dynamodb \ --resource-id "table/TestTable" \ --scalable-dimension "dynamodb:table:WriteCapacityUnits"
  3. Löschen Sie die TestTable-Tabelle.

    aws dynamodb delete-table --table-name TestTable