🤖
CLIを利用したCloud Run functionsの始め方
環境・前提
- 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で行います.
$ cd my_project
# 仮想環境作成
$ python3 -m venv env
# 仮想環境の有効化
$ source env/bin/activate
仮想環境から脱却するには,
(env) *** % deactivate
を行ってください
以降は,仮想環境内での操作です.
依存関係のインストール
(env) *** % pip install functions-framework
第2世代を使う場合
- 第2世代をサポートしているリージョンを適用する.
$ 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 freeze
やpipreqs .
等で生成してください.
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)
参考資料
Discussion