如何在Vercel部署服务器的安全位置添加秘密文件?
我正在部署Next.js项目到Vercel。该项目是一个连接到谷歌云平台的上传器。上传文件到存储桶
本地文件工作正常。GCP的凭据存储在本地JSON文件中,由GPC提供(在创建凭据时自动创建)。我使用.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返回一个关于太多参数的错误。在任何情况下,这些选项都没有文档化。
我还检查了文档和仪表板,寻找添加秘密的方法,但没有成功。
解决这个问题的一种方法是将字符串传递给env变量,然后在代码中将其解析为JSON。
-
删除换行符(在"内的除外)。可能是密钥的一部分。)从json文件。我在过去。
-
创建一个新的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
-
使用新的env变量解析为json。
const secretJSON = JSON.parse( process.env.SECRET_JSON);