【アップデート】gcloudコマンドでCloud Functions関数をデプロイする際のデフォルトの世代が第2世代になります

Cloud Functions関数をgcloudコマンドでデプロイした際に、世代指定を省略した場合のデフォルト世代が第2世代になるアップデートが予告されましたのでまとめてみました。
2024.05.23

今回のアップデート内容

概要

2024年9月1日以降、gcloud functions deploy CLIコマンドの将来のバージョンは、デフォルトで第2世代のCloud Functions関数を作成します。(DeepL翻訳)

※引用:Google Cloudからのアナウンス([Action Advised] Evaluate Google Cloud Functions created with gcloud before Sep. 1, 2024)

2024/9/1から、gcloud functions deployコマンドでCloud Functions関数をデプロイする際に、
世代の指定を省略するとデフォルトで第2世代の関数として作成されるようになります。(現在省略した場合は第1世代で作成されます)
ただ、既に作成済みの第1世代関数への再デプロイは影響を受けずに第1世代のままとなるようです。

既存の第1世代機能は影響を受けません。gcloud CLIを使用した既存の第1世代機能の更新および再デプロイは影響を受けず、第1世代のままです。 (DeepL翻訳)

※引用:Google Cloudからのアナウンス([Action Advised] Evaluate Google Cloud Functions created with gcloud before Sep. 1, 2024)

影響

パターンをまとめてみました。

パターン 2024/8/31以前 2024/9/1以降 影響
既存の第1世代関数を再デプロイ 第1世代 第1世代 影響なし
新規関数作成(世代指定なし) 第1世代 第2世代 影響あり
新規関数作成(第2世代指定) 第2世代 第2世代 影響なし

上記となり、影響を受けるのはgcloudコマンドでデプロイする際に世代の指定をしていない場合になります。

対応

新規Cloud Functions関数作成をgcloudコマンドでスクリプトなどで自動化している場合、2024/9/1以降も第1世代で作成したい場合は--no-gen2フラグを設定する必要があります。

gcloud functions deploy function-name \
    --no-gen2 \
    --region asia-northeast1 \
    --runtime python311 \
    --trigger-http \
    --no-allow-unauthenticated \
(省略)

繰り返しとなりますが、既に作成ずみの第1世代の関数をgcloudコマンドで再デプロイする場合は影響を受けません。

補足:Cloud Functions関数の第1世代/第2世代の違い

機能 第1世代 第2世代
最大タイムアウト 9分 60分(HTTPトリガー)または9分(イベントトリガー)
最大メモリ 8GB 32GiB
同時実行 1インスタンス1件 1インスタンあたり最大1000件

上記以外にも違いはたくさんありますが、第2世代の方はタイムアウト時間がHTTPトリガーの場合であれば60分まで、1インスタンスあたりの同時実行数も設定できるなどスケーラビリティが増しています。
より詳細な世代の違いに関しては以下のリファレンスをご参照ください。

おわりに

影響を受けるワークロードは少ないかもしれませんが、意図せず第2世代になってしまっていた、というようなことは避けた方が良いと思うので新規関数の作成をgcloudコマンドを用いたスクリプト等で自動化している場合は確認した方が良いかもしれません。
この記事がどなたかのお役に立てば幸いです。それではまた。