【Cloud Functions】Functions Framework for Rubyを試す(環境変数を扱う編)
2021/10/11
今回はCloud Functionsで環境変数を扱ってみる
(パスワードなどの秘匿情報はSecret Managerを使うべし)
手順
環境変数 FUNCTION_ENV の設定を試してみる
コード
FunctionsFramework.http("env_vars") do |request|
"FUNCTION_ENV: #{ENV['FUNCTION_ENV']}\n"
endRubyではENVで環境変数を呼び出すことができる
ローカルで実行
$ FUNCTION_ENV=development bundle exec functions-framework-ruby --target env_vars$ curl http://localhost:8080
FUNCTION_ENV: developmentデプロイ
--set-env-varsで環境変数を設定することができる
$ gcloud functions deploy env_vars --runtime ruby27 --trigger-http --set-env-vars FUNCTION_ENV=production$ curl https://us-central1-masamune-287217.cloudfunctions.net/env_vars
FUNCTION_ENV: production補足
複数の環境変数を設定する
FunctionsFramework.http("env_vars") do |request|
"ENV_VAR_A: #{ENV['ENV_VAR_A']}, ENV_VAR_B: #{ENV['ENV_VAR_B']}\n"
endカンマ区切りで複数の環境変数を設定できる
$ gcloud functions deploy env_vars --set-env-vars ENV_VAR_A=foo,ENV_VAR_B=bar$ curl https://us-central1-masamune-287217.cloudfunctions.net/env_vars
ENV_VAR_A: foo, ENV_VAR_B: bar一部の環境変数を更新・追加する
--update-env-varsで更新・追加ができる
$ gcloud functions deploy env_vars --update-env-vars ENV_VAR_B=baz$ curl https://us-central1-masamune-287217.cloudfunctions.net/env_vars
ENV_VAR_A: foo, ENV_VAR_B: baz--set-env-varsだと指定していない環境変数は消えてしまう
ENV_VAR_Bだけ指定した場合、ENV_VAR_Aは消えてしまうので注意
$ gcloud functions deploy env_vars --set-env-vars ENV_VAR_B=baz$ curl https://us-central1-masamune-287217.cloudfunctions.net/env_vars
ENV_VAR_A: , ENV_VAR_B: baz--update-env-varsは使わず、--set-env-varsで必要な環境変数を全て記述してデプロイするのが無難なのかなと思う
