添加指向 JSON 文件的 Vercel 环境变量

问题描述 投票:0回答:2

如何在 Vercel 部署服务器上的安全位置添加秘密文件?

我正在将 Next.js 项目部署到 Vercel。该项目是一个连接到Google Cloud Platform的上传器。它将文件上传到存储桶。

该文件在本地运行良好。 GCP 的凭据存储在 GPC 提供的本地 JSON 文件中(创建凭据时自动创建)。我正在使用 .env 文件来存储环境变量,包括该本地文件的路径。

在 Vercel 上,我还需要提供一个环境变量,以提供此 json 文件的路径。我可以在 Vercel 部署服务器上的哪里存储此 JSON 文件?

使用我尝试过的cli:

vercel secrets add GOOGLE_CLOUD_KEY_FILE --json path/to/file.json

vercel secrets add GOOGLE_CLOUD_KEY_FILE --local-file path/to/file.json

这不起作用。 cli 返回有关参数过多的错误。无论如何,这些选项都没有记录。

我还检查了文档和仪表板以了解添加秘密的方法,但没有成功。

json environment-variables google-cloud-storage credentials vercel
2个回答
3
投票

解决此问题的一种方法是将字符串传递给 env 变量,然后在代码中将其解析为 JSON。

  1. 从 json 文件中删除换行符(“”内的换行符除外。可能是键的一部分。)。我使用过 textfiler 过去。

  2. 创建一个新的 Vercel 环境变量。要通过命令行执行此操作,请运行

    vercel env add SECRET_JSON
    。它会提示你
    ? What’s the value of SECRET_JSON?
    。您可以粘贴步骤 1 中的 json 内容。您也可以通过 Vercel Web ui 执行此操作。如果你是本地开发,你可以像这样添加它
    SECRET_JSON='JSON file content without line breaks'
    到你的
    .env.local

  3. 通过将新的环境变量解析为 json 来使用它。

    const secretJSON = JSON.parse( process.env.SECRET_JSON);


0
投票
  1. 将包含所有 Google API 信息的 JSON 转换为 base64。您可以找到一个用于此目的的网站或使用您自己的项目来记录它。

// .env.local(格式相同,但值是 Base64 编码的)

JSON_KEYS=ewogICJ0eXBlIjogInNlcnZpY2VfYWNjb3VudCIsCiAgInB...
  1. 使用此信息从 .env 加载初始配置。

// src/utils/google.ts 或 .js

const credentials = JSON.parse(
  Buffer.from(process.env.JSON_KEYS ? process.env.JSON_KEYS : "", "base64").toString()
);

export const storage: Storage = new Storage({
  projectId: credentials.projectId,
  credentials: {
    client_email: credentials.client_email,
    private_key: credentials.private_key
  }
})
  1. 现在您可以将 .env 中的 JSON_KEYS 内容粘贴到 Vercel 中并继续部署。
最新问题
© www.soinside.com 2019 - 2025. All rights reserved.