Application Auto Scaling のスケジュールされたスケーリング - Application Auto Scaling

Application Auto Scaling のスケジュールされたスケーリング

スケジュールに基づいたスケーリングにより、予想可能な負荷の変化に従って独自のスケーリングスケジュールを設定できます。例えば、毎週、ウェブアプリケーションへのトラフィックが水曜日に増え始め、木曜日は高いままで、金曜日に減り始めるとします。この場合は、水曜日に容量を増やし、金曜日に容量を減らすように Application Auto Scaling のスケジュールを設定できます。

スケジュールされたスケーリングを使用するには、スケジュールされたアクションを作成します。これは、特定の時間にスケーリングアクティビティを実行するよう Application Auto Scaling に指示します。スケジュールされたアクションを作成するときは、スケーラブルターゲット、スケーリングアクティビティを実行するタイミング、最小容量、および最大容量を指定します。スケジュールされたアクションは、1 度だけスケールする、または定期的なスケジュールに従ってスケールするものを作成できます。

指定された時間がくると、Application Auto Scaling は、現行の容量を指定された最小容量および最大容量と比較することによって、新しい容量値に基づいたスケーリングを実行します。

  • 現行の容量が指定された最小容量を下回る場合、Application Auto Scaling は指定された最小容量までスケールアウト (容量を増加) します。

  • 現行の容量が指定された最大容量を上回る場合、Application Auto Scaling は指定された最大容量までスケールイン (容量を低減) します。

同じリソース上でスケジュールされたスケーリングとスケーリングポリシーを併用して、両方のメリットを得ることができます。スケジュールされたアクションの実行後、スケーリングポリシーは容量をさらにスケールするかどうかの判断を引き続き行うことができます。これは、アプリケーションの負荷を処理するために十分な容量を確保する上で役立ちます。アプリケーションは需要に合わせてスケールしますが、現行の容量は、スケジュールされたアクションによって設定された最小容量と最大容量内に収まる必要があります。

スケジュールされたスケーリングの使用に関する詳しい例については、AWS コンピューティングブログ「Scheduling AWS Lambda Provisioned Concurrency for recurring peak usage」を参照してください。サンプル AWS リソースを使用してスケジュールされたアクションを作成する方法を詳しく説明するチュートリアルについては、「チュートリアル:AWS CLI を使用したスケジュールに基づくスケーリングの開始方法」を参照してください。

考慮事項

スケジュールされたアクションを作成する場合、次の点に注意してください。

  • スケジュールされたアクションにより、指定された日時に、MinCapacityMaxCapacity がスケジュールされたアクションで指定した容量に設定されます。リクエストには、オプションで、これらのサイズの 1 つだけを含めることができます。例えば、最小容量のみを指定してスケジュールされたアクションを作成できます。ただし、場合によっては、新しい最小容量が最大容量を上回らない、または新しい最大容量が最小容量を下回らないように、両方のサイズを含める必要があります。

  • デフォルトでは、設定した定期的なスケジュールは協定世界時 (UTC) です。ローカルタイムゾーンまたはネットワークの他の部分のタイムゾーンに対応するタイムゾーンに変更できます。夏時間を実施するタイムゾーンを指定すると、夏時間 (DST) に合わせて、アクションが自動的に調整されます。詳細については、「cron 式を使用して、定期的なスケーリングアクションをスケジュールする」を参照してください。

  • スケーラブルターゲットに対してスケジュールされたスケーリングをオフにできます。これにより、スケジュールされたアクションを削除せずにアクティブになるのを防ぐことができます。スケジュールされたスケーリングを再度使用する場合は、スケジュールされたスケーリングを再開できます。詳細については、「Application Auto Scaling のスケーリングの一時停止と再開」を参照してください。

  • スケジュールされたアクションが実行される順序は、同一のスケーラブルターゲットに対して保証されますが、複数のスケーラブルターゲットにまたがってスケジュールされたアクションに対しては保証されません。

  • スケジュールされたアクションが正常に完了するには、指定されたリソースがターゲットサービスでスケーラブルな状態になっている必要があります。その状態になっていない場合、リクエストは失敗し、エラーメッセージ (Resource Id [ActualResourceId] is not scalable. Reason: The status of all DB instances must be 'available' or 'incompatible-parameters' など) が返されます。

  • Application Auto Scaling とターゲットサービスには分散的な性質があるため、スケジュールされたアクションがトリガーされてからターゲットサービスがスケーリングアクションを引き受けるまでの遅延が数秒におよぶ可能性があります。スケジュールされたアクションは指定された順序で実行されるため、開始時刻が近いスケジュールされたアクションの実行にはより長い時間がかかる場合があります。

スケジュールされたアクションの作成、管理、および削除用によく使用されるコマンド

スケジュールされたスケーリングの操作用によく使用されるコマンドには以下が含まれます。

  • register-scalable-target AWS リソースまたはカスタムリソースをスケーラブルターゲット (Application Auto Scaling がスケールできるリソース) として登録し、スケーリングを一時停止および再開します。

  • put-scheduled-action 既存のスケーラブルターゲットに対するスケジュールされたアクションを追加または変更します。

  • describe-scaling-activities AWS リージョン内でのスケーリングアクティビティに関する情報を返します。

  • describe-scheduled-actions AWS リージョン内でのスケジュールされたアクションに関する情報を返します。

  • delete-scheduled-action スケジュールされたアクションを削除します。

制約事項

以下は、スケジュールされたスケーリングの使用時における制限事項です。

  • スケジュールされたアクションの名前は、スケーラブルターゲットごとに一意である必要があります。

  • Application Auto Scaling は、スケジュール式で秒レベルの精度を提供しません。Cron 式を使用した場合の最も細かい粒度は 1 分です。

  • スケーラブルターゲットを Amazon MSK クラスターにすることはできません。Amazon MSK はスケジュールされたスケーリングをサポートしません。