Je crée une fonction AWS Lambda qui utilise ServiceAccountKey.json
pour l'authentification Firebase. Lors du déploiement sur Netlify, je ne souhaite pas exposer ces données dans le référentiel git. Existe-t-il un moyen de sauvegarder le JSON entier en tant que variable d'environnement ?
3 Réponses :
Si je ne me trompe pas, vous pouvez stocker le json dans la variable env comme une simple chaîne.
Sinon regardez un jq
qui vous permet de lancer pour lire un json à partir d'un fichier et de le stocker directement dans un env var.
Cordialement,
clause de non-responsabilité: je travaille pour l'équipe d'assistance de Netlify.
Bien que la suggestion précédente selon laquelle JSON peut être utilisé comme une chaîne sans retour chariot intégré puisse fonctionner, il peut être un peu difficile d'obtenir une variable d'environnement contenant des guillemets, que tous les JSON non triviaux que j'ai jamais vus utilisent . Deux suggestions différentes pour faire cela différemment:
@
dans cet exemple, donc votre "JSON" ressemblerait à {@ type @: @service_account ...
, puis vous pourriez utiliser quelque chose comme ça dans votre build: echo -e "$ {JSON_VARIABLE // @ / \"} "> file.json && do_your_normal_build
Netlify ne sauvegarde pas les fichiers JSON pour vous sauf si vous utilisez les fonctions netlify comme @fool mentionné ci-dessous. Mais vous ne devriez pas non plus enregistrer les fichiers json avec des variables env dans Git. Le meilleur moyen est donc de convertir les données de votre fichier json en un objet et de l'utiliser:
.replace (/ \\ n / g, '\ n')
voici mon objet à titre d'exemple:
const config = require('./config'); const serviceAccount = config.FIREBASE_KEY; firebaseAdmin.initializeApp({ credential: firebaseAdmin.credential.cert(serviceAccount), databaseURL: config.FIREBASE_DB,});
et la fonction correspondante qui utilise les touches:
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, };