高木のブログ

【Cloud Functions】Functions Framework for Rubyを試す(環境変数を扱う編)

· 112 words · 1 minutes to read

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

参考 🔗

環境変数の使用 | Google Cloud Functions に関するドキュメント

Categories


Tags