2010-12-02 3 views
7

Ich habe ein paar verschiedene "Umgebungen" für meine App, die auf Heroku gehostet, so habe ich: appName-staging.heroku.com appName-production.heroku .comwie Google Api-Schlüssel basierend auf heroku Anwendung verwenden Name

Ich möchte verschiedene Google API-Schlüssel für diese Anwendungen verwenden, wie mache ich das? Ich habe eine google.yml-Datei erstellt, die wie folgt aussieht:

Entwicklung: api_key: 'ABCXYZ'

Produktion: api_key: 'DEFXYZ'

so verwende ich ABCSZY, wenn sie lokal zu entwickeln, und DEFXYZ für appName-production.heroku.com Frage ist, wie bekomme ich appName-staging.heroku.com einen anderen Schlüssel zu verwenden?

Da jede Anwendung, die auf Heroku bereitgestellt wird, als "Produktion" gilt, verwenden appName-staging.heroku.com und appName-production.heroku.com denselben Schlüssel.

Antwort

5

Sie können jeder Umgebung eine heroku config variable hinzufügen, sodass Sie sie in der App identifizieren können.

Etwas entlang der Linien von:

$ heroku config:add APP_NAME_ENV=production --app appName-production 
$ heroku config:add APP_NAME_ENV=staging --app appName-staging 

Dann könnten Sie die aktuelle Umgebung aus Ihrer App greifen mit:

ENV['APP_NAME_ENV'] 

Und wenn Sie haben Ihre YAML-Datei als Hash bekam genannt etwas wie GOOGLE_KEYS, das folgende würde den korrekten Schlüssel für eine gegebene Umgebung zurückgeben:

+0

dank theTRON finden, funktioniert super! – Varun

0

Die vorherige Antwort funktioniert definitiv, berücksichtigt jedoch nicht die möglichen Sicherheitsbedrohungen, die beim Überprüfen von Dateien auftreten, die private Schlüssel in die Quellcodeverwaltung einschließen. Wenn Sie Ihre google.yml-Datei in der Quellcodeverwaltung haben, können alle Personen mit Zugriff auf Ihr Repo Ihre privaten API-Schlüssel sehen.

Eine sicherere Lösung wäre, die google.yml Datei zu löschen und andere Umgebungsvariablen auf dem Staging und Produktions-Server mit dem gleichen Schlüssel erstellen:

$ heroku config:add GOOGLE_API_KEY=<production key> --app appName-production 
$ heroku config:add GOOGLE_API_KEY=<development key> --app appName-staging 

Dann, wenn dies erforderlich ist, können Sie sich auf es in Code über

Dies ermöglicht Ihnen, Code zu teilen, ohne Ihre privaten API-Schlüssel zu teilen.

können einige weitere Informationen zur Verwendung von Umgebungsvariablen auf Heroku bei https://devcenter.heroku.com/articles/config-vars

Verwandte Themen