概要
パッケージ管理をpipenv
に移行していた中で、GCPの Cloud Functions にも適用してみたところ 正常に動作したのでメモ
厳密な調査をしているわけではないので間違っていた場合は指摘していただけるとありがたいです。
(根本的に理解が間違っているかもしれません。すみません。)
本編
前提
pipenv
やらgcloud
コマンドやらの環境は整っている前提でメモします。
検証のために適当な外部ライブラリ(今回はrequests
)を用いたファンクションをデプロイして動作を確認する。
作業
最終的には以下のようなディレクトリ構造を作る。(main.py
以外はコマンドで生成される)
pipenv_functions_test/
├── Pipfile
├── Pipfile.lock
└── main.py
main.py
は以下のよう
main.py
import requests
# gcloud beta functions deploy test_function --trigger-http --runtime python37
def test_function(request):
return requests.get('http://google.com')
# 動作確認用
if __name__ == '__main__':
print(test_function('a'))
デプロイコマンド
$ pipenv install requests
$ gcloud beta functions deploy test_function --trigger-http --runtime python37
デプロイ完了時に出力されるURLにアクセスしてみると正常に動作していた。
pipenv でも動作していることが確認できた。
パッケージ管理がだいぶ楽になるので助かる!!
補足
pipenv
なしの環境でも試してみたが、No module named
エラーだった。