如何将 google 凭据 json 放入生产环境变量中?

How to put google credential json in ENV variable for production?

我找不到如何将 google Json 凭据文件注入 ENV 变量以进行生产。我使用的依赖项称为 goth for elixir,我应该在应用程序启动时将这些凭据提供给它。

对于 json,我使用 Poison.encode!() 对 Google 的文件进行了编码,并将其用作我的 ENV 变量中的文本。

在我的开发配置文件中:有效

config :goth, json: {:system, "GCP_CREDENTIALS"}

在我的产品配置文件中:它不起作用并且我在 json

的开头不断收到语法错误
config :goth, json: {:system, '${GCP_CREDENTIALS}'}

有任何建议或任何使此工作有效并可以分享他的经验的人吗?

查看哥特自述文件,您似乎有几个选择。

  1. 通过以下方式将文件加载到配置中:config :goth, json: "path/to/google/json/creds.json" |> File.read!
  2. 将文件的全部内容放入环境变量中并执行:config :goth, json: {:system, "GCP_CREDENTIALS"}
  3. 通过你自己的模块:config :goth, config_module: MyConfigMod 然后

defmodule MyConfigMod do
  use Goth.Config

  def init(config) do
    {:ok, Keyword.put(config, :json, System.get_env("MY_GCP_JSON_CREDENTIALS"))}
  end
end

我对配置中的“${GCP_CREDENTIALS}”可能是错误的,但我之前看到“${...}”的唯一地方是在酒厂中使用 REPLACE_OS_VARS=true。如果你确实在使用酒厂,那么你不需要 {:system, "${GCP_CREDENTIALS}"} 元组,你可以把 config :goth, json: "${GCP_CREDENTIALS}" 放在 GCP_CREDENTIALS env var 包含的地方凭据 json 文件的内容。

示例来源:https://github.com/peburrows/goth#installation

酒厂文档:https://hexdocs.pm/distillery/runtime-configuration.html#vm-args