関数のタイムアウト

関数の実行時間はタイムアウト時間によって制限されます。この時間は、関数のデプロイ時に指定できます。デフォルトでは、関数は 1 分(60 秒)後にタイムアウトしますが、この期間は延長できます。

  • Cloud Functions(第 1 世代)の最大タイムアウト時間は 9 分(540 秒)です。
  • Cloud Functions(第 2 世代)の最大タイムアウト時間は、HTTP 関数の場合は 60 分(3,600 秒)、イベント ドリブン関数の場合は 9 分(540 秒)です。

関数の実行がタイムアウトするとすぐに、呼び出し側にエラー ステータスが返されます。タイムアウトした関数インスタンスが使用していた CPU リソースは調整されるため、リクエストの処理が一時停止します。

場合によっては、一時停止した処理がバックグラウンドで続行されたり、後続のリクエストで再開されることがあります。その場合、予期しない副作用が発生する可能性があります。この動作では、結果として 1 つのリクエストの作業とログが後続のリクエストに「リーク」されています。一時停止した作業が再開するかどうかはわからないため、この動作には依存しないでください。代わりに、次の方法を組み合わせて関数のタイムアウトを回避してください。

  1. 予想される関数の実行時間より長いタイムアウトを設定する。
  2. 実行中に残り時間を追跡し、クリーンアップまたは終了を早めに実行する。

タイムアウト時間を設定する

関数のタイムアウト時間は、デプロイ時に Google Cloud CLI または Google Cloud コンソールで設定できます。

gcloud

gcloud CLI を使用してデプロイする場合は、--timeout フラグを使用します。

gcloud functions deploy YOUR_FUNCTION_NAME --timeout=TIMEOUT_DURATION ...

Google Cloud CLI で既存のタイムアウト時間を編集するには、新しいタイムアウト値を持つ関数を単に再デプロイします。

コンソール

Google Cloud コンソールで関数を作成するときにタイムアウト時間を設定するには:

  1. Google Cloud コンソールで Cloud Functions の概要ページに移動します。
  2. [関数を作成] をクリックします。
  3. 関数の必須フィールドを入力します。
  4. ページの最後にある [ランタイム、ビルド...] セクションを開き、[ランタイム] タブをクリックします。
  5. [タイムアウト] フィールドに秒数を入力します。

    Google Cloud コンソールで既存のタイムアウト時間を編集するには、関数の概要ページで目的の関数の名前をクリックして、詳細ページに移動します。詳細ページで [編集] をクリックし、[ランタイム、ビルド...] セクションを展開し、[ランタイム] タブをクリックします。このタブで、[タイムアウト] フィールドの値を直接編集できます。