🤖

CLIを利用したCloud Run functionsの始め方

2024/09/07に公開

環境・前提

  • macOS:Apple M2
  • Google Cloud側で,プロジェクトが作成されているところまで完了している.
  • Python 3.8 から 3.12,いずれかのバージョンがインストールされている.私のマシンでは,python3.12を使用します.

手順

CLIのインストール&gcloud初期化

  • APIを有効にする.

  • 対応するGoogle Cloud CLIパッケージ(.tar.gzファイル)をインストール

    公式ドキュメントにリストアップされているので,参考にしてください.

  • インストールした.tar.gzファイルをホームディレクトリで展開する.

  • (省略可)インストールスクリプトを使用して、gcloud CLI ツールを PATH に追加する.

% ./google-cloud-sdk/install.sh
Welcome to the Google Cloud CLI!

(省略)
# Yを選択
Do you want to help improve the Google Cloud CLI (y/N)?  y 

(省略)

Modify profile to update your $PATH and enable shell command completion?
# Yを選択
Do you want to continue (Y/n)?  Y 

The Google Cloud SDK installer will now prompt you to update an rc file to bring
 the Google Cloud CLIs into your environment.

Enter a path to an rc file to update, or leave blank to use 
[/Users/***/.zshrc]:  
Backing up [/Users/***/.zshrc] to [/Users/***/.zshrc.backup].
[/Users/***/.zshrc] has been updated.

==> Start a new shell for the changes to take effect.


Google Cloud CLI works best with Python 3.11 and certain modules.
# nを選択
Download and run Python 3.11 installer? (Y/n)?  n .


For more information on how to get started, please visit:
  https://cloud.google.com/sdk/docs/quickstarts
  • gcloudの初期化

プロジェクトを作成したアカウントで,ログインする.

% ./google-cloud-sdk/bin/gcloud init
Welcome! This command will take you through the configuration of gcloud.

(省略)

You must log in to continue. Would you like to log in (Y/n)?  Y # Yを入力

Your browser has been opened to visit:

(省略)

Updates are available for some Google Cloud CLI components.  To install them,
please run:
  $ gcloud components update

You are logged in as: [***@gmail.com].

Pick cloud project to use: 

(省略)

Please enter numeric choice or text value (must exactly match list item): # ここにプロジェクト名を入力

Your current project has been set to: [<ここにプロジェクト名が表示される.>].

(省略)
  • gcloudコマンドの有効化
$ source ~/.zshrc

開発環境の準備

  • 私は,pythonで行います.

https://cloud.google.com/python/docs/setup?hl=ja#installing_and_using_virtualenv

$ cd my_project
# 仮想環境作成
$ python3 -m venv env
# 仮想環境の有効化
$ source env/bin/activate 

仮想環境から脱却するには,

(env) *** % deactivate

を行ってください

以降は,仮想環境内での操作です.

依存関係のインストール

(env) *** % pip install functions-framework

第2世代を使う場合

  • 第2世代をサポートしているリージョンを適用する.

https://cloud.google.com/functions/docs/locations?hl=ja

$ gcloud config set functions/region asia-northeast2

CLIを用いてデプロイ

  • main.py
main.py
import functions_framework

@functions_framework.http
def hello_get(request):
    return "Hello World!"
  • requirements.txt

pip freezepipreqs .等で生成してください.

requirements.txt
functions_framework==3.8.1
  • deploy.sh
deploy.sh
gcloud functions deploy python-http-function \
--gen2 \
--runtime=python312 \
--source=. \
--entry-point=hello_get \
--trigger-http 
  • 作成しているプロジェクトディレクトリ配下で実行
$ ./deploy.sh

デプロイ後のコンソール画面

補足事項

ローカル環境下でのFunctions-frameworkの実行

functions-framework  \
    --debug \
    --target <関数名> \
    --source=<対象ファイル名.例:~.py>

ステータスコードを付随させる

  • 下記のようなオブジェクトを返り値とする.
return  ({"message": "Recipe document added."}, 200)

参考資料

https://cloud.google.com/functions/docs/create-deploy-gcloud?hl=ja

https://cloud.google.com/functions/docs/running/function-frameworks?hl=ja

Discussion