【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"
end
Rubyでは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
で必要な環境変数を全て記述してデプロイするのが無難なのかなと思う