翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。
チュートリアル: AWS CLIを使用したスケジュールに基づくスケーリングの開始方法
以下のチュートリアルでは、 を使用して、 というサンプル DynamoDB テーブルをスケーリングするスケジュールされたアクションの作成を支援することで、スケジュールされたスケーリング AWS CLI を開始する方法を示しますTestTable
。テストに使用するTestTable
テーブルが DynamoDB にまだない場合は、Amazon DynamoDB デベロッパーガイドのステップ 1:DynamoDB テーブルを作成するに示されている create-table コマンドを実行してテーブルを作成できます。
を使用する場合は AWS CLI、コマンドはプロファイル用に設定された AWS リージョンで実行されることに注意してください。別のリージョンでコマンドを実行する場合は、プロファイルのデフォルトのリージョンを変更するか、コマンドに --region
パラメータを使用します。
注記
このチュートリアルの一環として AWS 料金が発生する場合があります。無料利用枠
コンテンツ
ステップ 1: スケーラブルターゲットを登録する
スケーラブルターゲットとして DynamoDB テーブルを Application Auto Scaling に登録することから始めます。
Application Auto Scaling にスケーラブルなターゲットを登録する
-
まず、 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": [] }
-
次のregister-scalable-targetコマンドを使用して、 という DynamoDB テーブルの書き込み容量を登録します
TestTable
。希望する最小容量を 5 個の書き込みキャパシティーユニット、希望する最大容量を 10 個の書き込みキャパシティーユニットに設定します。Linux、macOS、または Unix
aws application-autoscaling register-scalable-target \ --service-namespace
dynamodb
\ --scalable-dimensiondynamodb:table:WriteCapacityUnits
\ --resource-idtable/TestTable
\ --min-capacity5
--max-capacity10
Windows
aws application-autoscaling register-scalable-target --service-namespace
dynamodb
--scalable-dimensiondynamodb:table:WriteCapacityUnits
--resource-idtable/TestTable
--min-capacity5
--max-capacity10
成功した場合、このコマンドはスケーラブルターゲットの ARN を返します。
{ "ScalableTargetARN": "arn:aws:application-autoscaling:
region
:account-id
:scalable-target/1234abcd56ab78cd901ef1234567890ab123" }
ステップ 2: 2 つのスケジュールされたアクションを作成する
Application Auto Scaling では、スケーリングアクションが実行される時刻をスケジュールすることができます。スケーラブルなターゲット、スケジュール、最小キャパシティー、および最大キャパシティーを指定します。指定された時間がくると、Application Auto Scaling がスケーラブルターゲットの最小値と最大値を更新します。現在のキャパシティーが範囲外の場合はスケーリングアクティビティにつながります。
最小キャパシティーと最大キャパシティーへの更新のスケジュールは、スケーリングポリシーを作成する場合にも役立ちます。スケーリングポリシーを使用すると、現在のリソース使用率に基づいてリソースを動的にスケーリングできます。スケーリングポリシーの一般的なガードレールとして、最小キャパシティーと最大キャパシティーに適切な値を設定します。
この演習では、1 回限りのアクションを 2 つ作成し、スケールアウトまたはスケールインできます。
スケジュールされたアクションを作成および表示する
-
最初のスケジュールされたアクションを作成するには、次の put-scheduled-action コマンドを使用します。
--schedule
の at コマンドは、指定された将来の日時に 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-dimensiondynamodb:table:WriteCapacityUnits
\ --resource-idtable/TestTable
\ --scheduled-action-namemy-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-dimensiondynamodb:table:WriteCapacityUnits
--resource-idtable/TestTable
--scheduled-action-namemy-first-scheduled-action
--schedule "at(2019-05-20T17:05:00
)" --scalable-target-action MinCapacity=15
,MaxCapacity=20
このコマンドが正常に完了した場合は、出力が返されません。
-
Application Auto Scaling がスケールインに使用する 2 番目のスケジュールされたアクションを作成するには、次のput-scheduled-actionコマンドを使用します。
今から約 10 分後にアクションが発生するようにスケジュールします。
指定された日時がくると、Application Auto Scaling がテーブルの
MinCapacity
とMaxCapacity
を更新してMaxCapacity
にスケールインし、テーブルを元の希望範囲である 5~10 書き込みキャパシティーユニットに戻します。Linux、macOS、または Unix
aws application-autoscaling put-scheduled-action \ --service-namespace
dynamodb
\ --scalable-dimensiondynamodb:table:WriteCapacityUnits
\ --resource-idtable/TestTable
\ --scheduled-action-namemy-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-dimensiondynamodb:table:WriteCapacityUnits
--resource-idtable/TestTable
--scheduled-action-namemy-second-scheduled-action
--schedule "at(2019-05-20T17:10:00
)" --scalable-target-action MinCapacity=5
,MaxCapacity=10
-
(オプション) 次の 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 がテーブルの書き込みキャパシティーを変更したことを確認します。
スケーリングアクティビティを表示する
-
選択した時間を待機し、次の 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" } ] }
-
スケジュールされたアクションが正常に実行されたら、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-dimensiondynamodb:table:WriteCapacityUnits
\ --resource-idtable/TestTable
\ --scheduled-action-namemy-second-scheduled-action
Windows
aws application-autoscaling delete-scheduled-action --service-namespace
dynamodb
--scalable-dimensiondynamodb:table:WriteCapacityUnits
--resource-idtable/TestTable
--scheduled-action-namemy-second-scheduled-action
スケーラブルなターゲットを登録解除する
次の deregister-scalable-target コマンドを使用して、スケーラブルなターゲットの登録を解除します。自分で作成したスケーリングポリシーや、まだ削除されていないスケジュールされたアクションがある場合は、このコマンドによって削除されます。後で使用できるように、登録されたスケーラブルなターゲットを保持する場合は、このステップをスキップできます。
Linux、macOS、または Unix
aws application-autoscaling deregister-scalable-target \ --service-namespace
dynamodb
\ --scalable-dimensiondynamodb:table:WriteCapacityUnits
\ --resource-idtable/TestTable
Windows
aws application-autoscaling deregister-scalable-target --service-namespace
dynamodb
--scalable-dimensiondynamodb:table:WriteCapacityUnits
--resource-idtable/TestTable
DynamoDB テーブルを削除する
以下の delete-table コマンドを使用して、このチュートリアルで使用したテーブルを削除します。後で使用できるように、テーブルを保持する場合は、このステップをスキップできます。
Linux、macOS、または Unix
aws dynamodb delete-table --table-name
TestTable
Windows
aws dynamodb delete-table --table-name
TestTable