スケジュールされたアクションを使用して Amazon ECS の予測値を上書きする
予測計算では考慮できない将来のアプリケーション要件に関する追加情報がある場合があります。例えば、予測の計算では、今後のマーケティングイベントに必要なキャパシティーが過小評価される可能性があります。スケジュールされたアクションを使用して、将来の期間中の予測を一時的に上書きできます。スケジュールされたアクションは、繰り返し実行することも、1 回限りの需要変動がある特定の日時に実行することもできます。
例えば、予測されるキャパシティーを超える最小キャパシティーでスケジュールされたアクションを作成できます。実行時に、Amazon ECS はサービス内の最小タスク数を更新します。予測スケーリングはキャパシティーを最適化するので、予測値を超える最小キャパシティーでスケジュールされたアクションが適用されます。これにより、キャパシティーが想定より少なくなるのを防ぎます。予測の上書きを停止するには、2 番目のスケジュールされたアクションを使用して、最小キャパシティーを元の設定に戻します。
次の手順では、将来の期間中の予測を上書きするステップを示します。
重要
このトピックでは、予測を上書きして、予測よりも大きなキャパシティにスケールしようとしていることを前提としています。予測スケーリングポリシーの干渉なしに一時的にキャパシティを減らす必要がある場合は、代わりに予測専用モードを使用します。予測専用モードでは、予測スケーリングは予測を生成し続けますが、自動的にキャパシティを増やすことはありません。その後、リソース使用率をモニタリングし、必要に応じてタスク数を手動で減らすことができます。
ステップ 1: (オプション) 時系列データを分析する
まず、予測時系列データを分析します。これはオプションのステップですが、予測の詳細を理解したい場合に役立ちます。
-
予測を取得する
予測が作成されたら、予測の特定の期間をクエリできます。このクエリの目的は、特定の期間の時系列データの完全なビューを取得することです。
クエリには、将来の予測データを最大 2 日間含めることができます。予測スケーリングをしばらく使用している場合は、過去の予測データにアクセスすることもできます。ただし、開始時刻と終了時刻の間の最大期間は 30 日間です。
get-predictive-scaling-forecast AWS CLI コマンドを使用して予測を取得するには、コマンドに次のパラメータを指定します。
-
resource-id
パラメータにクラスター名を入力します。 -
ポリシーの名前を
--policy-name
パラメータに入力します。 -
開始時刻を
--start-time
パラメータに入力して、指定した時刻以降の予測データのみが返されるようにします。 -
終了時刻を
--end-time
パラメータに入力して、指定された時刻より前の予測データのみが返されるようにします。
aws autoscaling get-predictive-scaling-forecast \ --service-namespace ecs \ --resource-id service/MyCluster/test \ --policy-name
cpu40-predictive-scaling-policy
\ --start-time "2021-05-19T17:00:00Z
" \ --end-time "2021-05-19T23:00:00Z
"成功すると、コマンドは次の例のようなデータを返します。
{ "LoadForecast": [ { "Timestamps": [ "2021-05-19T17:00:00+00:00", "2021-05-19T18:00:00+00:00", "2021-05-19T19:00:00+00:00", "2021-05-19T20:00:00+00:00", "2021-05-19T21:00:00+00:00", "2021-05-19T22:00:00+00:00", "2021-05-19T23:00:00+00:00" ], "Values": [ 153.0655799339254, 128.8288551285919, 107.1179447150675, 197.3601844551528, 626.4039934516954, 596.9441277518481, 677.9675713779869 ], "MetricSpecification": { "TargetValue": 40.0, "PredefinedMetricPairSpecification": { "PredefinedMetricType": "ASGCPUUtilization" } } } ], "CapacityForecast": { "Timestamps": [ "2021-05-19T17:00:00+00:00", "2021-05-19T18:00:00+00:00", "2021-05-19T19:00:00+00:00", "2021-05-19T20:00:00+00:00", "2021-05-19T21:00:00+00:00", "2021-05-19T22:00:00+00:00", "2021-05-19T23:00:00+00:00" ], "Values": [ 2.0, 2.0, 2.0, 2.0, 4.0, 4.0, 4.0 ] }, "UpdateTime": "2021-05-19T01:52:50.118000+00:00" }
応答には
LoadForecast
とCapacityForecast
の 2 つの予測が含まれています。LoadForecast
は、時間ごとの負荷予測を示します。CapacityForecast
は、40.0 のTargetValue
(平均 CPU 使用率 40%) を維持しながら予測された負荷を処理するために時間単位で必要なキャパシティーの予測値を示します。 -
-
ターゲット期間を特定する
1 回限りの需要変動が発生する時間または時間範囲を特定します。予測に表示される日付と時刻は UTC であることに注意してください。
ステップ 2: 2 つのスケジュールされたアクションを作成する
次に、アプリケーションの負荷が予測を上回る特定の期間に、2 つのスケジュールされたアクションを作成します。例えば、マーケティングイベントで一時的にトラフィックがサイトに流入する場合は、1 回限りのアクションをスケジュールして、開始時に最小キャパシティーを更新できます。次に、イベント終了時に最小キャパシティーを元の設定に戻す別のアクションをスケジュールします。
1 回限りのイベントに対して 2 つのスケジュールされたアクションを作成するには (コンソール)
https://console.aws.amazon.com/ec2/
でAmazon EC2 コンソールを開き、ナビゲーションペインで [Auto Scaling グループ] を選択します。 -
Auto Scaling グループの横にあるチェックボックスを選択します。
ページの下部にスプリットペインが開きます。
-
[Automatic scaling (自動スケーリング)] タブの [Scheduled actions (スケジュールされたアクション)] で、[Create scheduled action (スケジュールされたアクションの作成)] を選択します。
-
次のスケジュールされたアクション設定を入力します。
-
スケジュールされたアクションに [Name (名前)] を入力します。
-
[Min] (最小) に、Auto Scaling グループの新しい最小キャパシティーを入力します。[Min] (最小) は、グループの最大サイズ以下である必要があります。[Min] (最小) の新しい値が、グループの最大サイズよりも大きい場合、[Max] (最大) を更新する必要があります。
-
[繰り返し] で、[1 回] を選択します。
-
[Time zone (タイムゾーン)] でタイムゾーンを選択。タイムゾーンが選択されていない場合は、デフォルトでは、
ETC/UTC
が使用されます。 -
[Specific start time] (特定の開始時刻) を定義します。
-
-
[Create] (作成) を選択します。
コンソールに Auto Scaling グループのスケジュールされたアクションが表示されます。
-
イベントの終了時に、最小キャパシティーを元の設定に戻すように、2 番目のスケジュールされたアクションを設定します。予測スケーリングでは、[Min] (最小) に設定した値が予測値未満の場合のみ、キャパシティーをスケーリングできます。
1 回限りのイベントに対して 2 つのスケジュールされたアクションを作成するには (AWS CLI)
AWS CLI を使用してスケジュールされたアクションを作成するには、put-scheduled-update-group-action コマンドを使用します。
例えば、5 月 19 日の午後 5 時から 8 時間、最小キャパシティーを 3 インスタンスに維持するスケジュールを定義しましょう。以下のコマンドは、このシナリオを実装する方法を示しています。
最初の put-scheduled-update-group-action コマンドは、2021 年 5 月 19 日の午後 5 時 (UTC) に指定された Auto Scaling グループの最小キャパシティーを更新するように Amazon EC2 Auto Scaling に指示します。
aws autoscaling put-scheduled-update-group-action --scheduled-action-name
my-event-start
\ --auto-scaling-group-namemy-asg
--start-time "2021-05-19T17:00:00Z
" --minimum-capacity3
2 番目のコマンドは、2021 年 5 月 20 日の午前 1 時 (UTC) にグループの最小キャパシティーを 1 に設定するように Amazon EC2 Auto Scaling に指示します。
aws autoscaling put-scheduled-update-group-action --scheduled-action-name
my-event-end
\ --auto-scaling-group-namemy-asg
--start-time "2021-05-20T01:00:00Z
" --minimum-capacity1
これらのスケジュールされたアクションを Auto Scaling グループに追加すると、Amazon EC2 Auto Scaling は次の処理を実行します。
-
2021 年 5 月 19 日の午後 5 時 (UTC) に、最初にスケジュールされたアクションが実行されます。グループのインスタンスが 3 未満である場合、グループは 3 インスタンスにスケールアウトされます。この時刻以降の 8 時間の間、予測キャパシティーが実際のキャパシティーよりも大きい場合、または動的スケーリングポリシーが有効な場合、Amazon EC2 Auto Scaling は引き続きスケールアウトできます。
-
2021 年 5 月 20 日の午前 1 時 (UTC) に、2 番目のスケジュールされたアクションが実行されます。これにより、イベントの終了時に最小キャパシティーが元の設定に戻ります。
繰り返し起こるスケジュールに基づくスケーリング
毎週同じ期間の予測を上書きするには、2 つのスケジュールされたアクションを作成し、cron 式を使用して日時のロジックを指定します。
この cron 式のフォーマットは、スペースで区切られた 5 つのフィールド ([分] [時間] [日] [月] [曜日]) で構成されます。フィールドには、特殊文字を含む任意の許容される値を含めることができます。
例えば、次の cron 式は、毎週火曜日の午前 6:30 にアクションを実行します。アスタリスクは、フィールドのすべての値を照合するワイルドカードとして使用されます。
30 6 * * 2
以下も参照してください。
スケジュールされたアクションを管理する方法の詳細については、「スケジュールされたアクションを使用して Amazon ECS サービスをスケールする」を参照してください。