予約モードでは、関数呼び出し要求に応答してインスタンスを予約できます。 これにより、コールドスタートの発生が減り、待ち時間に敏感なオンラインサービスの応答速度が向上します。 予約済みインスタンスをより有効に活用するために、スケジュール済みの自動スケーリングまたはメトリックトレーシングの自動スケーリングを実行できます。
スケジュールされた自動スケーリング
- 定義: 予約済みインスタンスを柔軟に設定するために、スケジュール済みの自動スケーリングを使用します。 インスタンスの数がビジネスの同時実行性を満たすように、指定された時間に指定された値に自動的に調整されるようにリザーブドインスタンスの数を設定できます。
- シナリオ: スケジュールされた自動スケーリングを使用して、関数の定期的または予測されるトラフィックピークに先立ってインスタンスを予約できます。 関数によって同時に呼び出されるインスタンスの数が、リザーブドインスタンスの同時実行性よりも高い場合、超過インスタンスは従量課金で課金されます。
- 設定例: 2つのスケジュールされた操作が設定されます。 最初のスケジュールされた操作は、トラフィックピークの前にリザーブドインスタンスをスケールアウトし、2番目のスケジュールされた操作は、トラフィックピークの後にリザーブドインスタンスをスケールアウトします。

パラメータ設定の例:
- この例では、service_1という名前のサービスのfunction_1という名前の関数は、自動的にスケールインおよびスケールアウトするように構成されています。 function_1のスケーリング期間を、2020年11月1日2020日の10:00:00から11月30日の10:00:00 (UTC + 8) までの期間に設定します。 リザーブドインスタンスの数は、毎日20:00に50にスケールアウトされ、毎日22:00に10にスケールインされます。
{ "ServiceName": "service_1" 、 "FunctionName": "function_1" 、 "Qualifier": "alias_1" 、 "SchedulerActions": [ { "名前": "action_1" 、 "StartTime": "2020-11-01T10:00:00Z" 、 "EndTime": "2020-11-30T10:00:00Z" 、 "TargetValue": 50、 "ScheduleExpression": "cron(0 0 20 * * *)" }, { "名前": "action_2" 、 "StartTime": "2020-11-01T10:00:00Z" 、 "EndTime": "2020-11-30T10:00:00Z" 、 "TargetValue": 10、 "ScheduleExpression": "cron(0 0 22 * * *)" } ] }- パラメーター
パラメーター 説明 スキーマ 名前 スケジュールされた自動スケーリングタスクの名前。 String StartTime 設定が有効になり始めた時刻。 値をUTCで指定します。 String EndTime 設定の有効期限が切れる時刻。 値をUTCで指定します。 String ターゲット値 到達するインスタンスの数。 整数 (int64) ScheduleExpression スケジュールされたタスクをいつ実行するかを指定するスケジュール式。 次の形式がサポートされています。 - At expressions - "at(yyyy-mm-ddThh:mm:ss)": スケジュールされたタスクを1回だけ実行します。 値をUTCで指定します。
- Cron expressions - "cron(0 0 20 * * *)": スケジュールされたタスクを複数回実行します。 標準のCRON形式で値を指定します。 たとえば、cron(0 0 20 * * *) は、スケジュールされたタスクが毎日20:00に実行されることを示します。
String 次の表では、CRON式 (秒分時間月の曜日) のフィールドと特殊文字について説明します。表 1. フィールド フィールド名 有効値 許可された特殊文字 秒 0から59 なし 分 0から59 , - * / 時間 0から23 , - * / 月の日 1から31 , - * ? / 月 1〜12またはJAN〜DEC , - * / 曜日 1〜7またはMON〜SUN , - * ? 表2. 特殊文字 キャラクター 説明 例 * anyまたはそれぞれを示します。 Minutesフィールドの0は、タスクが毎分0秒で実行されることを示します。, リスト値を示します。 曜日のフィールドでは、MON、WED、およびFRIは、月曜日、水曜日、および金曜日を示す。- 範囲を示します。 [時間]フィールドの10-12は、UTCの時間範囲が10:00から12:00であることを示します。? 不確定な値を示します。 この値は他の指定された値とともに使用されます。 たとえば、特定の日付を指定しても、曜日を気にしない場合は、 [曜日]フィールドでこの特殊文字を使用できます。/ 値の増分を示します。 例えば、n/mは、その都度、増分mをnに加算することを意味する。 分フィールドの3/5は、分3から開始して5分ごとに動作することを示す。
メトリック追跡自動スケーリング
- 定義: メトリック追跡自動スケーリングは、メトリックを追跡してリザーブドインスタンスを動的にスケーリングします。
- シナリオ: Function Computeは、リザーブドインスタンスの同時実行使用率を定期的に収集し、リザーブドインスタンスのスケーリングを制御するために設定したスケールアウトおよびスケールイントリガー値とともにこのメトリックを使用します。 このようにして、ビジネスニーズに基づいてリザーブドインスタンスの数をスケーリングできます。
- 原則: リザーブドインスタンスは、メトリックに基づいて1分ごとにスケールインまたはスケールアウトされます。
- メトリックがスケールアウトしきい値を超えると、システムはインスタンスの数をできるだけ早くターゲット値にスケールアウトします。
- メトリックがスケールインしきい値よりも低い場合、システムはインスタンスの数をターゲット値にわずかにスケーリングします。
- 設定の例:

- トラフィックが増加し、必要なインスタンスの数がスケールアウトしきい値の80% に達すると、リザーブドインスタンスの数はスケールアウトしきい値に達するまでスケールアウトを開始します。 リザーブドインスタンスで処理できないリクエストは、従量課金インスタンスに送信されます。
- トラフィックが減少し、必要なインスタンスの数がスケールインしきい値の60% に達すると、リザーブドインスタンスの数はスケールインを開始します。
リザーブドインスタンスの同時実行使用率を計算するために、リザーブドインスタンスの統計のみが収集されます。 従量課金インスタンスの統計は含まれていません。 メトリックは、次の式に基づいて計算されます。リザーブドインスタンスが応答する同時リクエストの数 /すべてのリザーブドインスタンスが応答できる同時リクエストの最大数。 メトリック値の範囲は0から1です。 リザーブドインスタンスが応答できる同時リクエストの最大数は、さまざまな管理関数に基づいて計算されます。
- 1つのインスタンスによって処理される単一のリクエスト: 最大同時実行数=インスタンス数。
- 1つのインスタンスで処理される複数のリクエスト: 最大同時実行数=インスタンス数 × 1つのインスタンスで同時に処理されるリクエスト数。
スケールインとスケールアウトの値:
- 値は、現在のメトリック値、スケーリングしきい値、リザーブドインスタンスの数、およびスケーリング係数によって決定されます。
- 計算原理: システムは、スケールインファクタに基づいてスケールインする。 値の範囲: (0,1) 。 この要素を設定する必要はありません。 スケールインとスケールアウトの値は、次の計算結果の切り上げ整数です。
- スケールアウト値=(現在のメトリック値 /スケールアウトしきい値) × リザーブドインスタンスの数。
- スケールイン比= (1-現在のメトリック値 /スケールアウトしきい値) × スケールイン係数。
- スケールイン値=現在のインスタンス数 × (1-スケールイン比) 。
- 例: 現在のメトリック値は90% 、スケールアウトしきい値は80% 、リザーブドインスタンス数は100です。 スケールアウト値= (90%/80%) × 100 = 112.5 (113に切り上げ) 。 リザーブドインスタンスの数が113に増えました。
パラメータ設定の例:
- この例では、service_1という名前のサービスのfunction_1という名前の関数は、ProvisionedConcurrencyUtilizationメトリックに基づいて自動的にスケールインおよびスケールアウトするように構成されています。 スケーリング期間は、2020年11月1日の10:00:00から2020年11月30日の10:00:00に設定します。 同時実行使用率が60% を超えると、リザーブドインスタンスの数は100にスケールアウトできます。 同時実行使用率が60% 未満の場合、リザーブドインスタンスの数は10に拡大できます。
{ "ServiceName": "service_1" 、 "FunctionName": "function_1" 、 "Qualifier": "alias_1" 、 "TargetTrackingPolicies": [ { "名前": "action_1" 、 "StartTime": "2020-11-01T10:00:00Z" 、 "EndTime": "2020-11-30T10:00:00Z" 、 "MetricType": "ProvisionedConcurrencyUtilization" 、 "MetricTarget": 0.6、 "MinCapacity": 10、 "MaxCapacity": 100、 } ] }- パラメーター
パラメーター 説明 スキーマ 名前 スケジュールされた自動スケーリングタスクの名前。 String StartTime 設定が有効になり始めた時刻。 値をUTCで指定します。 String EndTime 設定の有効期限が切れる時刻。 値をUTCで指定します。 String MetricType 追跡されるメトリック: ProvisionedConcurrencyUtilization。 String MetricTarget メトリックの追跡された値。 double MinCapacity 最小スケールイン値。 整数 (int64) MaxCapacity 最大スケールアウト値。 整数 (int64)