MENU

Cloud Functions で環境変数を使う

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.pyrequirements.txtしかデプロイされません。

余談ですが、gcloud meta list-files-for-uploadコマンドを実行すると、デプロイされるファイルやディレクトリがコンソールに出力されます。

環境変数を読み込む

関数は、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

この記事が気に入ったら
フォローしてね!

シェアしていただけると励みになります
  • URLをコピーしました!

コメント

コメントする

目次
閉じる