Web API のアクセストークンや ID 、パスワードといった自分以外の人に漏れてほしくない定数は、セキュリティ上の観点から環境変数に一度格納してから読み込みます。
もちろん、Cloud Functions でも環境変数を使うことができるので、その方法を紹介します。
目次
YAML ファイルを作成
.env.yaml
という名前で YAML ファイルをデプロイ用のフォルダの中に作成し、環境変数をセットします。
folder/
┣ .env.yaml
┣ main.py
┗ requirements.txt
LOGIN_ID: aiueokakikukeko
LOGIN_PW: 0123456789
.gcloudignore ファイルを作成
このままデプロイすると YAML ファイルまでデプロイされてしまうので、.gcloudignore
ファイルを作成してデプロイされないように設定します。
folder/
┣ .env.yaml
┣ .gcloudignore
┣ main.py
┗ requirements.txt
*
!.
!main.py
!requirements.txt
このように.gcloudignore
ファイルを設定すると、main.py
とrequirements.txt
しかデプロイされません。
環境変数を読み込む
関数は、HTTP 関数でもバックグラウンド関数でもどちらでも大丈夫です。この記事では、動作確認のしやすさから HTTP 関数を選びました。
import os
def main(request):
LOGIN_ID = os.environ.get('LOGIN_ID')
LOGIN_PW = os.environ.get('LOGIN_PW')
return f"LOGIN_ID: {LOGIN_ID}, LOGIN_PW: {LOGIN_PW}"
サードパーティ製のモジュールをしようしていないので、requirements.txt
は空です。
デプロイ
デプロイオプションの--env-vars-file
に YAML ファイルを指定します。
gcloud functions deploy FUNCTION_NAME \
--trigger-http \
--allow-unauthenticated \
--region=asia-northeast1 \
--runtime=python39 \
--source=. \
--env-vars-file=.env.yaml \
--entry-point=main
コメント