我正在构建使用ServiceAccountKey.json
进行Firebase身份验证的AWS Lambda函数。部署到Netlify时,我不想在git repo中公开此数据。有没有办法将整个JSON保存为环境变量?
答案 0 :(得分:2)
免责声明:我为Netlify的支持团队工作。
虽然先前的建议是可以将JSON用作没有嵌入回车符的字符串,但可能的做法是,让环境变量包含引号可能有点挑战,我见过的所有非平凡JSON都会使用它。有两种不同的建议可以做到这一点:
@
字符,因此您的“ JSON”看起来像{@type@: @service_account...
,然后您可以在构建中使用类似的内容: echo -e "${JSON_VARIABLE//@/\"}" > file.json && do_your_normal_build
答案 1 :(得分:1)
如果我没看错,您可以将json作为简单字符串存储在env var中。
否则,请看一下jq
,它允许您运行以从文件中读取json并将其直接存储在env var中。
此致
答案 2 :(得分:0)
除非您将netlify函数用作下面提到的@fool,否则Netlify不会为您保存JSON文件。但是您也不应该将带有env变量的json文件保存到Git中。因此,最好的方法是将json文件中的数据转换为对象并使用该对象:
.replace(/\\n/g, '\n')
以下是我的对象:
require('dotenv').config();
module.exports = {
FIREBASE_KEY: {
type: process.env.REACT_APP_SAK_TYPE,
project_id: process.env.REACT_APP_SAK_PROJECT_ID,
private_key_id: process.env.REACT_APP_SAK_PRIVATE_KEY_ID,
private_key: process.env.REACT_APP_SAK_PRIVATE_KEY.replace(/\\n/g, '\n'),
client_email: process.env.REACT_APP_SAK_CLIENT_EMAIL,
client_id: process.env.REACT_APP_SAK_CLIENT_ID,
auth_uri: process.env.REACT_APP_SAK_AUTH_URI,
token_uri: process.env.REACT_APP_SAK_TOKEN_URI,
auth_provider_x509_cert_url: process.env.REACT_APP_SAK_AUTH_PROVIDER_X509_CERT_URL,
client_x509_cert_url: process.env.REACT_APP_SAK_X509_CERT_URL,
},
FIREBASE_DB: process.env.REACT_APP_FB_DATABASE_URL,
};
以及使用这些键的相应功能:
const config = require('./config');
const serviceAccount = config.FIREBASE_KEY;
firebaseAdmin.initializeApp({ credential: firebaseAdmin.credential.cert(serviceAccount), databaseURL: config.FIREBASE_DB,});