Amazon EC2 Auto Scaling のスケジュールされたスケーリング - Amazon EC2 Auto Scaling (日本語)

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

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

スケジュールされたスケーリングを使用するには、「スケジュールされたアクション」を作成します。スケジュールされたアクションは、日付と時刻に応じて自動的に実行されます。スケジュールされたアクションを作成するときは、スケーリングアクションの規模の拡大や縮小を実行する望ましいタイミング、最小容量、最大容量を指定します。スケジュールされたアクションは1回だけ、または反復して行われるように作成できます。

Considerations

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

  • スケジュールされたアクションは希望する、最小サイズ、および最大サイズを、指定された日付と時間にスケジュールされたアクションによって指定されたサイズに設定します。リクエストには、オプションで、これらのサイズの 1 つだけを含めることができます。たとえば、希望する容量のみを指定してスケジュールされたアクションを作成できます。ただし、アクションで指定した新しい希望する容量がこれらの制限を超えないように、最小サイズと最大サイズを含める必要があります。

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

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

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

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

繰り返しのスケジュール

スケジュールされたアクションは、繰り返されるスケジュールに基づいて Auto Scaling グループをスケーリングするように作成できます。

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

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 で設定する必要があります。

スケジュールされたアクションを作成および管理する (コンソール)

このセクションの手順を使用するには、「AWS Management Console」を使用して、スケジュールされたアクションの手順を作成し使用します。

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

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

スケジュールされたアクションを作成して Auto Scaling グループをスケーリングするには、以下の手順を実行します。

Auto Scaling グループ用の予定されたスケーリングアクションを作成します

  1. Amazon EC2 Auto Scaling コンソール (https://console.aws.amazon.com/ec2autoscaling/) を開きます。

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

    [Auto Scaling グループ] ページの下部に分割ペインが開き、選択したグループに関する情報が表示されます。

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

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

  5. 希望する容量最小Maxを使用する場合、グループの新しい希望するサイズと、新しい最小容量と最大容量を選択します。

  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. [Create] を選択します。コンソールに Auto Scaling グループのスケジュールされたアクションが表示されます。

時刻、日付、およびタイムゾーンの確認

時刻、日付、およびタイムゾーンが正しく構成されているかどうかを確認するには、Auto Scaling グループの [Scheduled actions table on the Automatic scaling (自動スケーリングでスケジュールされたアクション)] タブから開始時間終了時間、およびタイムゾーン をチェックします。

Amazon EC2 Auto Scaling では、開始時間および終了時間を、指定された日時に有効な UTC オフセットでローカル時間に設定します。UTC オフセットは、現地時間から UTC までの差を時間と分単位で表したものです。タイムゾーンの値は、例えば America/New_York のようにリクエストされたタイムゾーンが表示されます。

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

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

スケジュールされたアクションの更新

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

スケジュールされたアクションを更新するには

  1. Amazon EC2 Auto Scaling コンソール (https://console.aws.amazon.com/ec2autoscaling/) を開きます。

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

    [Auto Scaling グループ] ページの下部に分割ペインが開き、選択したグループに関する情報が表示されます。

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

  4. [Actions]、[Edit] の順に選択します。

  5. 変更を行ってから、[Save changes (変更の保存)] を選択します。

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

スケジュールされたアクションが不要になったら、削除できます。

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

  1. Amazon EC2 Auto Scaling コンソール (https://console.aws.amazon.com/ec2autoscaling/) を開きます。

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

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

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

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

スケジュールされたアクションを作成および管理する (AWS CLI)

put-scheduled-update-group-action コマンドを使用して、スケジュールされたアクションは 1 回のみ、または反復してスケーリングするように作成して更新できます。

1 回だけ実行される、スケジュールされたアクションを作成する

Auto Scaling グループを 1 回だけ自動的にスケーリングするには、--start-time "YYYY-MM-DDThh:mm:ssZ" オプションを使用します。

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

特定の日時に Auto Scaling グループで実行中のインスタンスの数を増やすには、以下のコマンドを使用します。

--start-time (2021 年 3 月 31 日、8:00 AM UTC) に指定された日時に、グループの現在のインスタンス数が 3 未満である場合、 3 インスタンスにスケールアウトされます。

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

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

特定の日時に Auto Scaling グループで実行中のインスタンスの数を減らすには、以下のコマンドを使用します。

--start-time (2021 年 3 月 31日、4:00 PM UTC) に指定された日時に、グループの現在のインスタンス数が 1 以上である場合、1 インスタンスにスケールインされます。

aws autoscaling put-scheduled-update-group-action --scheduled-action-name my-one-time-action \ --auto-scaling-group-name my-asg --start-time "2021-03-31T16:00:00Z" --desired-capacity 1

定期的なスケジュールで実行されるスケジュールされたアクションを作成する

定期的なスケーリングをスケジュールするには、--recurrence "cron expression" オプションを使用します。

次に cron 式を指定するスケジュール済みアクションの例を次に示します。

指定されたスケジュール (毎日午前 9:00 (UTC)) で、グループの現在のインスタンス数が 3 未満である場合、3 インスタンスにスケールアウトします。グループに 3 つ以上のインスタンスがある場合、3 つのインスタンスにスケールインします。

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

タイムゾーンを指定する定期的なスケジュールされたアクションを作成する

スケジュールされたアクションは、デフォルトで UTC タイムゾーンに設定されます。別のタイムゾーンを指定するには、--time-zone オプションを選択し、IANA タイムゾーンの正規名 (America/New_Yorkなど) を指定します。詳細については、https://en.wikipedia.org/wiki/List_of_tz_database_time_zones を参照してください。

以下は、容量を拡張するための定期的なスケジュール済みアクションを作成できる --time-zone オプションの使用例です。

指定されたスケジュール (現地時間毎週月曜日から金曜日の 6:00 PM) で、グループのインスタンスが現在 2 つ未満の場合は、2 つのインスタンスにスケールアウトします。現在、グループに 2 つ以上のインスタンスがある場合は、2 つのインスタンスにスケールインします。

aws autoscaling put-scheduled-update-group-action --scheduled-action-name my-recurring-action \ --auto-scaling-group-name my-asg --recurrence "0 18 * * 1-5" --time-zone "America/New_York" \ --desired-capacity 2

スケジュールされたアクションの説明

Auto Scaling グループのスケジュールされたアクションを記述するには、以下の 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 } ] }

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

スケジュールされたアクションを削除するには、以下の delete-scheduled-action コマンドを実行します。

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

Limitations

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

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

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