関数のタイムアウト
関数の実行時間はタイムアウト時間によって制限されます。この時間は、関数のデプロイ時に指定できます。デフォルトでは、関数は 1 分(60 秒)後にタイムアウトしますが、この期間は延長できます。
- Cloud Functions(第 1 世代)の最大タイムアウト時間は 9 分(540 秒)です。
- Cloud Functions(第 2 世代)の最大タイムアウト時間は、HTTP 関数の場合は 60 分(3,600 秒)、イベント ドリブン関数の場合は 9 分(540 秒)です。
関数の実行がタイムアウトするとすぐに、呼び出し側にエラー ステータスが返されます。タイムアウトした関数インスタンスが使用していた CPU リソースは調整されるため、リクエストの処理が一時停止します。
場合によっては、一時停止した処理がバックグラウンドで続行されたり、後続のリクエストで再開されることがあります。その場合、予期しない副作用が発生する可能性があります。この動作では、結果として 1 つのリクエストの作業とログが後続のリクエストに「リーク」されています。一時停止した作業が再開するかどうかはわからないため、この動作には依存しないでください。代わりに、次の方法を組み合わせて関数のタイムアウトを回避してください。
- 予想される関数の実行時間より長いタイムアウトを設定する。
- 実行中に残り時間を追跡し、クリーンアップまたは終了を早めに実行する。
タイムアウト時間を設定する
関数のタイムアウト時間は、デプロイ時に Google Cloud CLI または Google Cloud コンソールで設定できます。
gcloud
gcloud CLI を使用してデプロイする場合は、--timeout
フラグを使用します。
gcloud functions deploy YOUR_FUNCTION_NAME --timeout=TIMEOUT_DURATION ...
Google Cloud CLI で既存のタイムアウト時間を編集するには、新しいタイムアウト値を持つ関数を単に再デプロイします。
コンソール
Google Cloud コンソールで関数を作成するときにタイムアウト時間を設定するには:
- Google Cloud コンソールで Cloud Functions の概要ページに移動します。
- [関数を作成] をクリックします。
- 関数の必須フィールドを入力します。
- ページの最後にある [ランタイム、ビルド...] セクションを開き、[ランタイム] タブをクリックします。
[タイムアウト] フィールドに秒数を入力します。
Google Cloud コンソールで既存のタイムアウト時間を編集するには、関数の概要ページで目的の関数の名前をクリックして、詳細ページに移動します。詳細ページで [編集] をクリックし、[ランタイム、ビルド...] セクションを展開し、[ランタイム] タブをクリックします。このタブで、[タイムアウト] フィールドの値を直接編集できます。