一度あることは2度あるからしっかりとPCと奮闘メモ日記

日々の実話に基づいて検索してもズバリがなかったものを綴っていきます。

Cloud Functionsの開発環境Function Frameworkの使い方について(初心者用)

Cloud Functionsの開発環境Function Frameworkの使い方について

 

インストールまではググるとでてくるのですが、実際の動かし方がよくわからなくて、

戸惑ったのでメモします。

 

自分は以下の環境です。(ほぼ初心者)

OS Windows11

Python 3.10

Visual Studio Code

CloudFunctionsは第2世代

GoogleCloud SDKは使える

 

 

■FunctionFrameworkのインストール

pip install functions-fraemwork

参考:

Function Frameworks を使用した関数の実行  |  Google Cloud Functions に関するドキュメント

 

■IAMの認証情報作成

これがあると、Cloud Storageのテストもできます。

下のコマンドを実行すると、ブラウザが立ち上がってログインを求められました。

CloudFunctionsを利用するIDでログインすれば認証情報が作成されます。

gcloud auth application-default login

参考:

gcloud auth application-default login  |  Google Cloud CLI Documentation

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

 

---------------ここまで

ここまではスムーズにいったのですが・・・

自分のローカルにある、Visual Studio Codeの記述をどうやってクラウドファンクションとしてテスト実行するのかわからなかったので自分の方法をメモします。

 

もう一度環境のおさらい

Visual Studio Code

Windows11

Python10

CloudFunctionsは第2世代

GoogleCloud SDKは使える

 

■注意事項

コンソールのパスに注意する。

常に、pythonファイルのあるフォルダがカレントディレクトリであることを確認して、コマンドを打ってください。

 

■HTTPトリガーの場合

ローカル環境に

main.py

requirements.txtを準備します。

以下例です。

main.py

import functions_framework
@functions_framework.http
def hello_http(request):
"""HTTP Cloud Function.
Args:
request (flask.Request): The request object.
Returns:
The response text, or any set of values that can be turned into a
Response object using `make_response`
"""
request_json = request.get_json(silent=True)
request_args = request.args
if request_json and 'name' in request_json:
name = request_json['name']
elif request_args and 'name' in request_args:
name = request_args['name']
else:
name = 'World'
return 'Hello {}!'.format(name)

 

requirements.txt

functions-framework==3.*

 

■①コマンド入力
functions-framework --target hello_http --debug

hello_httpの部分は関数名で置き換えてください。

VisualStudioCodeでコマンド入力

VisualStudioCodeでコマンド入力

■②ブラウザを立ち上げアドレス入力

CloudFunctionsで利用しているグーグルアカウントでログインしているブラウザを立ち上げ

http://127.0.0.1:8080と入力してください。

Hello World!

と表示されれば成功です。

成功したー

成功したー

クラウドストレージのトリガーの場合

クラウドファンクション上できちんと動くソースを準備してください。

以下ローカルの開発環境でデバックするときの注意点です。

■①コマンド入力
functions-framework --target hello_gcs --debug

hello_gcsの部分は関数名で置き換えてください。

 

■②GoogleCloudSDKShellで以下のコマンド入力

参考:ローカル関数の呼び出し  |  Google Cloud Functions に関するドキュメント

 

上をそのままコピペしても動きません

bucketは自分のバケットにします。

nameはファイル名にします。フォルダ以下にある場合は folder/Test.txtのように指定します。

Windowsno場合、\を^に変更する必要があります。

まだJSON部分の改行も削除する必要があります。

環境によりそのままコピペできないようです。

参考:長いコマンドを複数行に分割して実行する方法(Windows) | SyachikuLOG

 

最後は駆け足で書いてしまいましたが、順次追記する予定。