最近Divshotがシャットダウンしたため、多くのアプリケーションをFirebaseホスティングに切り替えました。これらのアプリの一部は外部APIに接続するため、Firebaseホスティングにプライベート環境変数(S3アクセスの秘密鍵など)を保存する方法が必要です-誰かアイデアがありますか?この記事があります- https://www.firebase.com/blog/2015-10-29-managing-development-environments.html -しかし、これは非プライベート環境変数のみを対象としています。
ありがとう!
Firebase Cloud Functionsを使用して、環境変数を設定できます。これを行う方法に関するドキュメントへのリンクは次のとおりです。 https://firebase.google.com/docs/functions/config-env
Firebaseホスティングにクラウド機能を追加していない場合は、FirebaseCLIツールを使用して追加できます。
firebase init functions
npm install --save firebase-functions@latest
npm install -g firebase-tools
詳細はこちら: https://firebase.google.com/docs/hosting/functions
クラウド機能で環境変数を設定するには、次のようにコマンドラインから設定することもできます。
firebase functions:config:set someservice.key="THE API KEY" someservice.id="THE CLIENT ID"
次に、次のような関数から変数にアクセスできます。
const functions = require('firebase-functions');
const request = require('request-promise');
exports.userCreated = functions.database.ref('/users/{id}').onWrite(event => {
let email = event.data.child('email').val();
return request({
url: 'https://someservice.com/api/some/call',
headers: {
'X-Client-ID': functions.config().someservice.id,
'Authorization': `Bearer ${functions.config().someservice.key}`
},
body: {email: email}
});
});
Googleの Secret Manager API を試すことができます。
これがFirebaseCloud Functionsに環境変数として保存するよりも安全である理由は次のとおりです。
ソースコードのその他の例については、GoogleCloudのSecretManager NPMパッケージのドキュメントをご覧ください こちら 。
お役に立てば幸いです。