チュートリアル: AWS CLIを使用したスケジュールに基づくスケーリングの開始方法 - Application Auto Scaling

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

チュートリアル: AWS CLIを使用したスケジュールに基づくスケーリングの開始方法

以下のチュートリアルでは、 を使用して、 というサンプル DynamoDB テーブルをスケーリングするスケジュールされたアクションの作成を支援することで、スケジュールされたスケーリング AWS CLI を開始する方法を示しますTestTable。テストに使用するTestTable テーブルが DynamoDB にまだない場合は、Amazon DynamoDB デベロッパーガイドステップ 1:DynamoDB テーブルを作成するに示されている create-table コマンドを実行してテーブルを作成できます。

を使用する場合は AWS CLI、コマンドはプロファイル用に設定された AWS リージョンで実行されることに注意してください。別のリージョンでコマンドを実行する場合は、プロファイルのデフォルトのリージョンを変更するか、コマンドに --region パラメータを使用します。

注記

このチュートリアルの一環として AWS 料金が発生する場合があります。無料利用枠の使用状況をモニタリングするとともに、DynamoDB データベースが使用する読み取りおよび書き込み容量のユニット数に関連付けられたコストを理解しておくようにしてください。

ステップ 1: スケーラブルターゲットを登録する

スケーラブルターゲットとして DynamoDB テーブルを Application Auto Scaling に登録することから始めます。

Application Auto Scaling にスケーラブルなターゲットを登録する
  1. まず、 describe-scalable-targets コマンドを使用して、DynamoDB リソースがすでに登録されているかどうかを確認します。これにより、新しいテーブルではない場合に備えて、TestTable テーブルは登録解除されているか確認します。

    Linux、macOS、または Unix

    aws application-autoscaling describe-scalable-targets \ --service-namespace dynamodb

    Windows

    aws application-autoscaling describe-scalable-targets --service-namespace dynamodb

    既存のスケーラブルなターゲットがない場合、レスポンスは次のようになります。

    { "ScalableTargets": [] }
  2. 次のregister-scalable-targetコマンドを使用して、 という DynamoDB テーブルの書き込み容量を登録しますTestTable。希望する最小容量を 5 個の書き込みキャパシティーユニット、希望する最大容量を 10 個の書き込みキャパシティーユニットに設定します。

    Linux、macOS、または Unix

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

    Windows

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

    成功した場合、このコマンドはスケーラブルターゲットの ARN を返します。

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

ステップ 2: 2 つのスケジュールされたアクションを作成する

Application Auto Scaling では、スケーリングアクションが実行される時刻をスケジュールすることができます。スケーラブルなターゲット、スケジュール、最小キャパシティー、および最大キャパシティーを指定します。指定された時間がくると、Application Auto Scaling がスケーラブルターゲットの最小値と最大値を更新します。現在のキャパシティーが範囲外の場合はスケーリングアクティビティにつながります。

最小キャパシティーと最大キャパシティーへの更新のスケジュールは、スケーリングポリシーを作成する場合にも役立ちます。スケーリングポリシーを使用すると、現在のリソース使用率に基づいてリソースを動的にスケーリングできます。スケーリングポリシーの一般的なガードレールとして、最小キャパシティーと最大キャパシティーに適切な値を設定します。

この演習では、1 回限りのアクションを 2 つ作成し、スケールアウトまたはスケールインできます。

スケジュールされたアクションを作成および表示する
  1. 最初のスケジュールされたアクションを作成するには、次の put-scheduled-action コマンドを使用します。

    --scheduleat コマンドは、指定された将来の日時に 1 回実行されるアクションをスケジュールします。時間は 24 時間形式 (UTC) です。今から約 5 分後にアクションが発生するようにスケジュールします。

    指定された日時がくると、Application Auto Scaling が MinCapacity および MaxCapacity の値を更新します。テーブルに現在 5 個の書き込みキャパシティーユニットがあるとすると、Application Auto Scaling は MinCapacity にスケールアウトして、そのテーブルが 15~20 書き込みキャパシティーユニットの新しい希望範囲内に収まるようにします。

    Linux、macOS、または Unix

    aws application-autoscaling put-scheduled-action \ --service-namespace dynamodb \ --scalable-dimension dynamodb:table:WriteCapacityUnits \ --resource-id table/TestTable \ --scheduled-action-name my-first-scheduled-action \ --schedule "at(2019-05-20T17:05:00)" \ --scalable-target-action MinCapacity=15,MaxCapacity=20

    Windows

    aws application-autoscaling put-scheduled-action --service-namespace dynamodb --scalable-dimension dynamodb:table:WriteCapacityUnits --resource-id table/TestTable --scheduled-action-name my-first-scheduled-action --schedule "at(2019-05-20T17:05:00)" --scalable-target-action MinCapacity=15,MaxCapacity=20

    このコマンドが正常に完了した場合は、出力が返されません。

  2. Application Auto Scaling がスケールインに使用する 2 番目のスケジュールされたアクションを作成するには、次のput-scheduled-actionコマンドを使用します。

    今から約 10 分後にアクションが発生するようにスケジュールします。

    指定された日時がくると、Application Auto Scaling がテーブルの MinCapacityMaxCapacity を更新して MaxCapacity にスケールインし、テーブルを元の希望範囲である 5~10 書き込みキャパシティーユニットに戻します。

    Linux、macOS、または Unix

    aws application-autoscaling put-scheduled-action \ --service-namespace dynamodb \ --scalable-dimension dynamodb:table:WriteCapacityUnits \ --resource-id table/TestTable \ --scheduled-action-name my-second-scheduled-action \ --schedule "at(2019-05-20T17:10:00)" \ --scalable-target-action MinCapacity=5,MaxCapacity=10

    Windows

    aws application-autoscaling put-scheduled-action --service-namespace dynamodb --scalable-dimension dynamodb:table:WriteCapacityUnits --resource-id table/TestTable --scheduled-action-name my-second-scheduled-action --schedule "at(2019-05-20T17:10:00)" --scalable-target-action MinCapacity=5,MaxCapacity=10
  3. (オプション) 次の describe-scheduled-actions コマンドを使用して、指定したサービスの名前空間のすべてのスケジュールされたアクションのリストを取得します。

    Linux、macOS、または Unix

    aws application-autoscaling describe-scheduled-actions \ --service-namespace dynamodb

    Windows

    aws application-autoscaling describe-scheduled-actions --service-namespace dynamodb

    以下は出力例です。

    { "ScheduledActions": [ { "ScalableDimension": "dynamodb:table:WriteCapacityUnits", "Schedule": "at(2019-05-20T18:35:00)", "ResourceId": "table/TestTable", "CreationTime": 1561571888.361, "ScheduledActionARN": "arn:aws:autoscaling:us-east-1:123456789012:scheduledAction:2d36aa3b-cdf9-4565-b290-81db519b227d:resource/dynamodb/table/TestTable:scheduledActionName/my-first-scheduled-action", "ScalableTargetAction": { "MinCapacity": 15, "MaxCapacity": 20 }, "ScheduledActionName": "my-first-scheduled-action", "ServiceNamespace": "dynamodb" }, { "ScalableDimension": "dynamodb:table:WriteCapacityUnits", "Schedule": "at(2019-05-20T18:40:00)", "ResourceId": "table/TestTable", "CreationTime": 1561571946.021, "ScheduledActionARN": "arn:aws:autoscaling:us-east-1:123456789012:scheduledAction:2d36aa3b-cdf9-4565-b290-81db519b227d:resource/dynamodb/table/TestTable:scheduledActionName/my-second-scheduled-action", "ScalableTargetAction": { "MinCapacity": 5, "MaxCapacity": 10 }, "ScheduledActionName": "my-second-scheduled-action", "ServiceNamespace": "dynamodb" } ] }

ステップ 3: スケーリングアクティビティを表示する

このステップでは、スケジュールされたアクションによってトリガーされたスケーリングアクティビティを表示してから、DynamoDB がテーブルの書き込みキャパシティーを変更したことを確認します。

スケーリングアクティビティを表示する
  1. 選択した時間を待機し、次の describe-scaling-activities コマンドを使用して、スケジュールされたアクションが機能していることを確認します。

    Linux、macOS、または Unix

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

    Windows

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

    以下は、スケジュールされたアクションの進行中に、スケジュールされた最初のアクションの出力例です。

    スケーリングアクティビティは作成日順に並べられ、最新のスケーリングアクティビティが最初に返ります。

    { "ScalingActivities": [ { "ScalableDimension": "dynamodb:table:WriteCapacityUnits", "Description": "Setting write capacity units to 15.", "ResourceId": "table/TestTable", "ActivityId": "d8ea4de6-9eaa-499f-b466-2cc5e681ba8b", "StartTime": 1561574108.904, "ServiceNamespace": "dynamodb", "Cause": "minimum capacity was set to 15", "StatusMessage": "Successfully set write capacity units to 15. Waiting for change to be fulfilled by dynamodb.", "StatusCode": "InProgress" }, { "ScalableDimension": "dynamodb:table:WriteCapacityUnits", "Description": "Setting min capacity to 15 and max capacity to 20", "ResourceId": "table/TestTable", "ActivityId": "3250fd06-6940-4e8e-bb1f-d494db7554d2", "StartTime": 1561574108.512, "ServiceNamespace": "dynamodb", "Cause": "scheduled action name my-first-scheduled-action was triggered", "StatusMessage": "Successfully set min capacity to 15 and max capacity to 20", "StatusCode": "Successful" } ] }

    以下は、スケジュールされたアクションがいずれも実行された後の出力例です。

    { "ScalingActivities": [ { "ScalableDimension": "dynamodb:table:WriteCapacityUnits", "Description": "Setting write capacity units to 10.", "ResourceId": "table/TestTable", "ActivityId": "4d1308c0-bbcf-4514-a673-b0220ae38547", "StartTime": 1561574415.086, "ServiceNamespace": "dynamodb", "EndTime": 1561574449.51, "Cause": "maximum capacity was set to 10", "StatusMessage": "Successfully set write capacity units to 10. Change successfully fulfilled by dynamodb.", "StatusCode": "Successful" }, { "ScalableDimension": "dynamodb:table:WriteCapacityUnits", "Description": "Setting min capacity to 5 and max capacity to 10", "ResourceId": "table/TestTable", "ActivityId": "f2b7847b-721d-4e01-8ef0-0c8d3bacc1c7", "StartTime": 1561574414.644, "ServiceNamespace": "dynamodb", "Cause": "scheduled action name my-second-scheduled-action was triggered", "StatusMessage": "Successfully set min capacity to 5 and max capacity to 10", "StatusCode": "Successful" }, { "ScalableDimension": "dynamodb:table:WriteCapacityUnits", "Description": "Setting write capacity units to 15.", "ResourceId": "table/TestTable", "ActivityId": "d8ea4de6-9eaa-499f-b466-2cc5e681ba8b", "StartTime": 1561574108.904, "ServiceNamespace": "dynamodb", "EndTime": 1561574140.255, "Cause": "minimum capacity was set to 15", "StatusMessage": "Successfully set write capacity units to 15. Change successfully fulfilled by dynamodb.", "StatusCode": "Successful" }, { "ScalableDimension": "dynamodb:table:WriteCapacityUnits", "Description": "Setting min capacity to 15 and max capacity to 20", "ResourceId": "table/TestTable", "ActivityId": "3250fd06-6940-4e8e-bb1f-d494db7554d2", "StartTime": 1561574108.512, "ServiceNamespace": "dynamodb", "Cause": "scheduled action name my-first-scheduled-action was triggered", "StatusMessage": "Successfully set min capacity to 15 and max capacity to 20", "StatusCode": "Successful" } ] }
  2. スケジュールされたアクションが正常に実行されたら、DynamoDB コンソールに移動して、使用するテーブルを選択します。[Capacity] (キャパシティー) タブで、[Write capacity units] (書き込みキャパシティーユニット) を確認します。2 番目のスケーリングアクションが実行されると、書き込みキャパシティーユニットは 15 から 10 にスケーリングされます。

    describe-table コマンドを使用して、テーブルの現在の書き込み容量も確認します。出力をフィルタリングするには、--query オプションを含めます。の出力フィルタリング機能の詳細については AWS CLI、「 AWS Command Line Interface ユーザーガイド」の「 からのコマンド出力の制御 AWS CLI」を参照してください。

    Linux、macOS、または Unix

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

    Windows

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

    以下は出力例です。

    [ "TestTable", "ACTIVE", { "NumberOfDecreasesToday": 1, "WriteCapacityUnits": 10, "LastIncreaseDateTime": 1561574133.264, "ReadCapacityUnits": 5, "LastDecreaseDateTime": 1561574435.607 } ]

ステップ 4: 次のステップ

スケジュールされたスケーリングポリシーとスケーリングポリシーの両方でスケーリングを試す場合は、チュートリアル: 大量のワークロードを処理するために自動スケーリングを設定する の手順に従います。

ステップ 5:クリーンアップ

「使用開始」演習が終了したら、関連付けられているリソースを以下のようにクリーンアップすることができます。

スケジュールされたアクションを削除する

以下の delete-scheduled-action コマンドでは、スケールされた指定のアクションを削除します。後で使用できるように、スケジュールされたアクションを保持する場合は、このステップをスキップできます。

Linux、macOS、または Unix

aws application-autoscaling delete-scheduled-action \ --service-namespace dynamodb \ --scalable-dimension dynamodb:table:WriteCapacityUnits \ --resource-id table/TestTable \ --scheduled-action-name my-second-scheduled-action

Windows

aws application-autoscaling delete-scheduled-action --service-namespace dynamodb --scalable-dimension dynamodb:table:WriteCapacityUnits --resource-id table/TestTable --scheduled-action-name my-second-scheduled-action
スケーラブルなターゲットを登録解除する

次の deregister-scalable-target コマンドを使用して、スケーラブルなターゲットの登録を解除します。自分で作成したスケーリングポリシーや、まだ削除されていないスケジュールされたアクションがある場合は、このコマンドによって削除されます。後で使用できるように、登録されたスケーラブルなターゲットを保持する場合は、このステップをスキップできます。

Linux、macOS、または Unix

aws application-autoscaling deregister-scalable-target \ --service-namespace dynamodb \ --scalable-dimension dynamodb:table:WriteCapacityUnits \ --resource-id table/TestTable

Windows

aws application-autoscaling deregister-scalable-target --service-namespace dynamodb --scalable-dimension dynamodb:table:WriteCapacityUnits --resource-id table/TestTable
DynamoDB テーブルを削除する

以下の delete-table コマンドを使用して、このチュートリアルで使用したテーブルを削除します。後で使用できるように、テーブルを保持する場合は、このステップをスキップできます。

Linux、macOS、または Unix

aws dynamodb delete-table --table-name TestTable

Windows

aws dynamodb delete-table --table-name TestTable