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

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

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

スケーリングのスケジュールを設定すると、予測可能な負荷の変化に基づいてアプリケーションの自動スケーリングを設定できます。特定の時間にグループの希望容量を増減するスケジュールアクションを作成します。

たとえば、負荷が週の半ばに増加し、週の終わりに近づくと負荷が減少する、という週ごとの定期的なトラフィックパターンが発生しているとします。Amazon EC2 Auto Scaling では、次のパターンに合わせてスケーリングスケジュールを設定できます。

  • 水曜日の朝に予定されている 1 つのアクションで、Auto Scaling グループの以前に設定した希望容量を増やすことで容量を増やします。

  • 金曜日の夕方に予定されている別のアクションでは、Auto Scaling グループの以前に設定した希望容量を減らして容量を減らします。

これらのスケジュールされたスケーリングアクションにより、コストとパフォーマンスを最適化できます。アプリケーションには週半ばのトラフィックのピークを処理するのに十分な容量がありますが、それ以外の時間帯に不要な容量を過剰にプロビジョニングすることはありません。

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

スケジュールされたスケーリングのしくみ

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

Amazon EC2 Auto Scaling は、指定された時間に、現在の容量を指定された希望容量と比較することにより、新しい容量値に基づいてスケーリングします。

  • 現在の容量が指定された希望容量よりも少ない場合、Amazon EC2 Auto Scaling は指定された希望容量にスケールアウトまたはインスタンスを追加します。

  • 現在の容量が指定された希望容量よりも大きい場合、Amazon EC2 Auto Scaling は指定された希望容量までインスタンスをスケールインまたは削除します。

スケジュールされたアクションは、指定された日時にグループの必要容量、最小容量、最大容量を設定します。これらのキャパシティのうち一度に 1 つのキャパシティ (希望キャパシティなど) に対してのみスケジュールされたアクションを作成できます。ただし、アクションで指定した希望容量がこれらの制限を超えないように、最小容量と最大容量を含める必要がある場合もあります。

繰り返しのスケジュール

AWS CLI または SDK を使用して定期的なスケジュールを作成するには、cron 式と、スケジュールされたアクションがいつ繰り返されるかを記述するタイムゾーンを指定します。必要に応じて、開始時刻、終了時刻、またはその両方の日付と時刻を指定できます。

を使用して定期的なスケジュールを作成するには AWS Management Console、スケジュールされたアクションの繰り返しパターン、タイムゾーン、開始時間、およびオプションの終了時間を指定します。すべての反復パターンオプションは、cron 式に基づいています。または、独自のカスタム cron 式を記述することもできます。

このサポートされた cron 式は、スペースで区切られた 5 つのフィールド ([分] [時間] [日] [月] [曜日]) で構成されます。例えば、cron 式 30 6 * * 2 は毎週火曜日の午前 6:30 に繰り返されるスケジュールされたアクションを設定します。アスタリスクは、フィールドのすべての値を照合するワイルドカードとして使用されます。cron 式の他の例については、(https://crontab.guru/examples.html) を参照してください。この形式で独自の cron 式を記述する方法については、クロンタブを参照してください。

開始時刻と終了時刻を慎重に選択します。以下に留意してください。

  • 開始時刻を指定した場合、Amazon EC2 Auto Scaling はこの時刻にアクションを実行し、指定された反復に基づくアクションを実行します。

  • 終了時刻を指定すると、その時刻以降はアクションが反復されなくなります。スケジュールされたアクションは、終了時刻に達するとアカウントに残りません。

  • AWS CLI または SDK を使用するときは、開始時刻と終了時刻を UTC で設定する必要があります。

Time zone (タイムゾーン)

デフォルトでは、設定した定期的なスケジュールは協定世界時 (UTC) です。ローカルタイムゾーンまたはネットワークの他の部分のタイムゾーンに対応するタイムゾーンに変更できます。夏時間 (DST) を遵守するタイムゾーンを指定すると、DST に合わせてアクションが自動的に調整されます。

有効な値は、インターネット割り当て番号局 (IANA) のタイムゾーンデータベースにあるタイムゾーンの正規名です。たとえば、米国東部標準時は、と標準的に識別されます。America/New_York詳細については、https://www.iana.org/time-zones を参照してください。

DST America/New_York に合わせて自動的に調整されるなど、ロケーションベースのタイムゾーン。ただし、Etc/UTC のようなUTC ベースのタイムゾーン は絶対時刻であるような DST に調整されません。

例えば、タイムゾーンが America/New_York である繰り返しのスケジュールがります。最初のスケーリングアクションは、DST が始まる前の America/New_York でのタイムゾーンで発生します。次のスケーリングアクションは、DST が始まった後の America/New_York でのタイムゾーンで発生します。最初のアクションは現地時間の午前 8:00 UTC-5 から始まり、2 番目のアクションは現地時間の午前 8:00 UTC-4 から始まります。

を使用してスケジュールされたアクションを作成し、夏時間を守るタイムゾーンを指定すると、 AWS Management Console 定期的なスケジュールと開始時刻と終了時刻の両方が DST に合わせて自動的に調整されます。

考慮事項

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

  • スケジュールされたアクションの実行順序は、それらのアクションが同じグループ内で実行される場合は維持されますが、複数のグループ間で実行される場合は必ずしも維持されません。

  • 通常、スケジュールされたアクションは数秒以内に実行されます。ただし、アクションは、スケジュールされた開始時間から最大 2 分遅れる場合があります。Auto Scaling スケジュールされたグループ内のアクションは指定された順序で実行されるため、開始時間が互いに近い、スケジュールされたアクションの実行には時間がかかる可能性があります。

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

  • スケジュールされたアクションを作成した後、名前以外のすべての設定を更新できます。

スケジュールされたアクションの作成

Auto Scaling グループのスケジュールされたアクションを作成するには、以下の方法のいずれかを使用します。

Console
スケジュールされたアクションを作成するには
  1. https://console.aws.amazon.com/ec2/ でAmazon EC2 コンソールを開き、ナビゲーションペインで [Auto Scaling グループ] を選択します。

  2. Auto Scaling グループの横にあるチェックボックスを選択します。

    ページの下部にスプリットペインが開きます。

  3. [Automatic scaling (自動スケーリング)] タブの [Scheduled actions (スケジュールされたアクション)] で、[Create scheduled action (スケジュールされたアクションの作成)] を選択します。

  4. スケジュールされたアクションに [Name (名前)] を入力します。

  5. [必要な容量]、[最小]、[最大] で、グループの新しい希望容量と、新しい最小サイズと最大サイズ制限を選択します。希望するキャパシティは、グループの最小サイズ以上、最大サイズ以下である必要があります。

  6. [Recurrence (反復)] で、使用可能なオプションの 1 つを選択します。

    • 定期的なスケジュールに基づいてスケーリングする場合は、Amazon EC2 Auto Scaling がスケジュールされたアクションを実行する頻度を選択します。

      • [Every (毎)] で始まるオプションを選択した場合、cron 式が作成されます。

      • [Cron] を選択した場合は、いつアクションを実行するかを Cron 式を入力します。

    • スケーリングを 1 回だけ行う場合は、[Once (一度)] を選択します。

  7. [Time zone (タイムゾーン)] でタイムゾーンを選択。デフォルト値は Etc/UTC です。

    リストされているすべてのタイムゾーンは、IANA タイムゾーンデータベースから取得されます。詳細については、https://en.wikipedia.org/wiki/List_of_tz_database_time_zones を参照してください。

  8. 特定の開始時間には、以下の日付と時刻を定義します。

    • 定期的なスケジュールを選択した場合、開始時間によって、定期的なシリーズの最初のスケジュールされたアクションが実行されるタイミングが定義されます。

    • [Once (一度)] を反復として使用する場合、開始時刻は、スケジュールアクションを実行する日付と時刻を定義します。

  9. (オプション) 定期的なスケジュールの場合は、[Set End Time (終了時刻の設定)] を選択して終了時間を特定し、[End By (までに終了)] に日付と時刻を選択します。

  10. [作成] を選択します。コンソールに Auto Scaling グループのスケジュールされたアクションが表示されます。

AWS CLI

スケジュールされたアクションを作成するには、以下のサンプルコマンドのいずれかを使用できます。各ユーザー入力プレースホルダーを独自の情報に置き換えます。

例: 1 回のみスケールするには

次の put-scheduled-update-group-action --start-time "YYYY-MM-DDThh:mm:ssZ" --desired-capacity コマンドをおよびオプションとともに使用します。

aws autoscaling put-scheduled-update-group-action --scheduled-action-name my-one-time-action \ --auto-scaling-group-name my-asg --start-time "2021-03-31T08:00:00Z" --desired-capacity 3
例:定期的なスケジュールでスケーリングをスケジュールするには

次の put-scheduled-update-group-action --recurrence "cron expression" --desired-capacity コマンドをおよびオプションとともに使用します。

aws autoscaling put-scheduled-update-group-action --scheduled-action-name my-recurring-action \ --auto-scaling-group-name my-asg --recurrence "0 9 * * *" --desired-capacity 3

デフォルトでは、Amazon EC2 Auto Scaling は UTC タイムゾーンに基づいて指定された繰り返しスケジュールを実行します。別のタイムゾーンを指定するには、次の例のように、--time-zoneオプションと IANA タイムゾーンの名前を含めてください。

--time-zone "America/New_York"

詳細については、https://en.wikipedia.org/wiki/List_of_tz_database_time_zones を参照してください。

スケジュールされたアクションの詳細を表示します。

Auto Scaling グループの今後予定されているアクションの詳細を表示するには、以下の方法のいずれかを使用します。

Console
スケジュールされたアクションの詳細を表示するには
  1. https://console.aws.amazon.com/ec2/ でAmazon EC2 コンソールを開き、ナビゲーションペインで [Auto Scaling グループ] を選択します。

  2. Auto Scaling スケーリンググループを選択します。

  3. 自動スケーリング」タブの「スケジュールされたアクション」セクションでは、今後予定されているアクションを確認できます。

コンソールには、[開始時間] と [終了時間] の値がローカルタイムで表示され、指定した日時に UTC オフセットが有効になることに注意してください。UTC オフセットは、現地時間から UTC までの差を時間と分単位で表したものです。タイムゾーンの値は、例えば America/New_York のようにリクエストされたタイムゾーンが表示されます。

AWS CLI

次の describe-scheduled-actions コマンドを使用します。

aws autoscaling describe-scheduled-actions --auto-scaling-group-name my-asg

正常に完了した場合、このコマンドは以下のような出力を返します。

{ "ScheduledUpdateGroupActions": [ { "AutoScalingGroupName": "my-asg", "ScheduledActionName": "my-recurring-action", "Recurrence": "30 0 1 1,6,12 *", "ScheduledActionARN": "arn:aws:autoscaling:us-west-2:123456789012:scheduledUpdateGroupAction:8e86b655-b2e6-4410-8f29-b4f094d6871c:autoScalingGroupName/my-asg:scheduledActionName/my-recurring-action", "StartTime": "2020-12-01T00:30:00Z", "Time": "2020-12-01T00:30:00Z", "MinSize": 1, "MaxSize": 6, "DesiredCapacity": 4 } ] }

スケーリングアクティビティを確認してください。

スケジュールされたスケーリングに関連するスケーリングアクティビティを確認する方法については、を参照してくださいAuto Scaling グループのスケーリングアクティビティを検証する

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

スケジュールされたアクションを削除するには、以下の方法のいずれかを使用します。

Console
スケジュールされたアクションを削除するには
  1. https://console.aws.amazon.com/ec2/ でAmazon EC2 コンソールを開き、ナビゲーションペインで [Auto Scaling グループ] を選択します。

  2. Auto Scaling スケーリンググループを選択します。

  3. [Automatic scaling (自動スケーリング)] タブの [Scheduled actions (スケジュールされたアクション)] で、スケジュールされたアクションを選択します。

  4. [ Actions] で、[Delete ] を選択します。

  5. 確認を求めるメッセージが表示されたら、[Yes、Delete] を選択します。

AWS CLI

次の delete-scheduled-action コマンドを使用します。

aws autoscaling delete-scheduled-action --auto-scaling-group-name my-asg \ --scheduled-action-name my-recurring-action

制限事項

  • スケジュールされたアクションの名前は、Auto Scaling グループごとに一意である必要があります。

  • スケジュールされたアクションには、一意の時間値が必要です。別のスケーリングアクティビティがすでにスケジュールされているときにアクティビティをスケジュールしようとすると、呼び出しは拒否され、このスケジュールされた開始時間を持つスケジュールされたアクションがすでに存在していることを示すエラーが返されます。

  • 1 つの Auto Scaling グループあたり最大 125 のスケジュールされたアクションを作成できます。