LoginSignup
0
1

More than 1 year has passed since last update.

Cloud Functionsの関数作成時の構造

Posted at

環境

  • python 3.10.4
  • Ubuntu 22.04LTS
  • gcloud インストール済み

構造

関数は、main.py からスタートする決まりになっている。
また、ソース構造は下記の3パターン

依存関係が不要な場合
.
├── .env.yaml
└── main.py
依存関係がある場合。requirements.txtに依存関係を記述
.
├── .env.yaml
├── main.py
└── requirements.txt
ローカルに依存関係で利用するソースを含める場合
.
├── .env.yaml
├── main.py
└── mylocalpackage/
    ├── __init__.py
    └── myscript.py

requirements.txtの内容例。
python3.10 の場合、下記に記述してある依存関係は
CloudFunctionsのデプロイ時に自動でインストールされる。

requirements.txt
click==8.0.3
cloudevents==1.2.0
deprecation==2.1.0
Flask==2.0.2
functions-framework==3.0.0
gunicorn==20.1.0
itsdangerous==2.0.1
Jinja2==3.0.3
MarkupSafe==2.0.1
packaging==21.3
pathtools==0.1.2
pyparsing==3.0.6
setuptools==60.3.1
watchdog==1.0.2
Werkzeug==2.0.2

ランタイム環境変数は、.env.yamlで指定。
デプロイ時に、gcloud functions deploy FUNCTION_NAME --env-vars-file .env.yaml と指定する

.env.yaml
 FOO: bar
 BAZ: boo

デプロイの時は、オプションも多いのでスクリプト作っておくと便利。 例えばこんな感じ
deploy.sh
#!/bin/bash
# オプションrun-service-accountは、--gen2 が指定されたときのみ設定される
gcloud functions deploy 関数名 \
       --project=プロジェクト名 \
       --region=asia-northeast1\
       --runtime=python310 \
       --entry-point=実行開始するPython関数名 \
       --trigger-topic=Pub/Subのトピック名 \
       --env-vars-file=.env.yaml \
       --memory=256MB \
       --service-account=サービスアカウント名 \
       --run-service-account=サービスアカウント名 \
       --timeout=180S 

実行の時は以下のコマンド打つだけ
$ bash deploy.sh

参考

ローカルマシンからのデプロイ
gcloud functions deploy
Cloud Pub/Subトリガー

0
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
1