Cloud Functions の関数をローカルで検証できる Functions Framework のインストール方法

記事タイトルとURLをコピーする

こんにちは、G-gen の武井です。今回は Google Cloud (旧称 GCP) で Cloud Functions の関数をローカルで検証できる Functions Framework のインストール方法について紹介したいと思います。

cloud.google.com

前提条件

1. Linux 開発環境 を有効化

当社では全社員が Chromebook (Chrome OS) を使って業務をしています。

そのため本記事では、ローカル環境とは Chromebook のデベロッパー向け機能である「 Linux 開発環境」を指しています。

もちろん Chromebook でなくても Functions Framework は使用できるので、 Chromebook ではない環境へ Functions Framework をインストールする場合は、当項目はスキップしてください。

Chromebook の Linux 開発環境機能を用いると Chromebook 内に Linux (Debian) のコンテナが起動し、ターミナルで操作することができます。

Linux 環境を有効化するには 設定 > 詳細設定 > デベロッパー > Linux 開発環境 から同機能を有効化します。

設定画面 (このスクリーンショットでは既に有効化済み)

2. gcloud コマンドのインストール・初期化

※この手順は通常の gcloud コマンドと同じです。また、実施が必要なのは始めの1回だけです。

ドキュメント「 Cloud SDK のインストール 」に従い Linux 環境に gcloud コマンドをインストールします。

上記リンク先の Debian/Ubuntu の手順に従ってください。

インストールできたら gcloud init コマンドで初期化します。
アカウントやプロジェクトを指定しましょう。

Functions Framework の導入

1. venv・pip3 のインストール

Chromebook の Linux 開発環境にはあらかじめ Python3.x がインストールされています。
マイナーバージョンは Linux 開発環境を有効にしたタイミングによって異なる場合があり、私の場合は v3.9 がインストールされていました。

ただ、venv や pip についてはインストールされていませんでしたので、以下のコマンドを実行してインストールします。

sudo apt update && sudo apt install python3-pip

2. venv 仮想環境の作成

​ Functions Framework を実行するための venv 仮想環境を準備して、そこにパッケージ類をインストールしたいと思います。
​ ・プロジェクトの作成 (プロジェクト名は ”function” とする) ​

mkdir function

・仮想環境の作成と初期化 ​

cd function
python3 -m venv venv
source venv/bin/activate

仮想環境が起動していると、プロンプトに仮想環境名が表示されます。

venv 仮想環境が起動している状態

3. Functions Framework のインストール

​ 準備した venv 仮想環境に Functions Framework をインストールします。
​ ​

pip3 install functions-framework

動作確認

1. ソースの準備

こちらの Quickstart にしたがって簡単な動作確認を実施したいと思います。

github.com

venv 仮想環境上に任意の作業ディレクトリを作成し、そこにソースファイル (main.py) を準備します。
Chromebook の場合、vscode.dev を使えばファイルの作成と Linux 開発環境への配置が簡単に行なえます。

vscode.dev から Linux コンテナのファイルを編集

vscode.dev から Linux コンテナのファイルを編集

2. Functions Framework の実行

ソースファイルを配置したディレクトリ上で Functions Framework をデバッグモードで実行します。"hello" はソースファイル上で定義した関数名です。

functions-framework --debug --target hello

ターミナル画面にデバッグが出力されますので、http://localhost:8080 にアクセスします。
関数で定義したとおり Hello world! が表示されれば Quickstart にしたがった動作確認は完了です。

関数 (Hello world!) が表示

仮想関数からの Cloud SDK 実行

functions-framework で起動した仮想的な function の中から Cloud SDK を実行する場合があると思います。

例えば BigQuery へデータを投入したり Cloud Storage のオブジェクトを操作する、などです。

Cloud SDK は IAM 認証を必要とします。そのとき、どのように認証すればよいのでしょうか。

そんなときは functions-framework の実行環境で以下のコマンドを実行します。

gcloud auth application-default login

このコマンドを実行することで gcloud に設定されている認証情報で ~/.config/gcloud/application_default_credentials.json に認証情報ファイルが作成され、これを使って Cloud SDK が実行されるようになります。

武井 祐介 (記事一覧)

2022年4月にジョイン。クラウドソリューション部所属。G-gen唯一の山梨県在住エンジニア

Google Cloud Partner Top Engineer 2024 に選出。IaC や CI/CD 周りのサービスやプロダクトが興味分野です。

趣味はロードバイク、ロードレースやサッカー観戦です。