как использовать ключи Google api на основе имени приложения heroku
Я создал несколько разных "сред" для моего приложения, которое размещено на heroku, поэтому у меня есть: appName-staging.heroku.com appName-production.heroku.com
Я хочу использовать разные ключи Google api для этих приложений, как это сделать? я создал google.файл yml, который выглядит так:
развитие: api_key:'ABCXYZ'
производство: api_key:'DEFXYZ'
поэтому я использую ABCSZY при разработке локально и DEFXYZ для appName-production.heroku.com вопрос в том, как мне получить appName-staging.heroku.com использовать другой ключ?
поскольку каждое приложение, развернутое в Heroku, считается "производственным", оба appName-staging.heroku.com и appName-production.heroku.com используйте тот же ключ.
2 ответов
вы можете добавить переменная конфигурации heroku для каждой среды, что позволяет идентифицировать каждый из них из приложения.
что-то вроде:
$ heroku config:add APP_NAME_ENV=production --app appName-production
$ heroku config:add APP_NAME_ENV=staging --app appName-staging
тогда вы можете захватить текущую среду из вашего приложения, используя:
ENV['APP_NAME_ENV']
и если у вас есть файл YAML как хэш, называемый чем-то вроде GOOGLE_KEYS
, следующее вернет правильный ключ для данной среды:
GOOGLE_KEYS[ENV['APP_NAME_ENV']]
предыдущий ответ определенно работает, но не учитывает потенциальные угрозы безопасности, которые приходят с проверкой файлов, которые включают закрытые ключи в систему управления версиями. Имея свой google.YML-файл в системе управления версиями позволит любому, кто имеет доступ к вашему РЕПО, видеть ваши личные ключи API.
более безопасным решением было бы удалить google.YML-файл и создание различных переменных среды на промежуточных и производственных серверах с одинаковыми ключ:
$ heroku config:add GOOGLE_API_KEY=<production key> --app appName-production
$ heroku config:add GOOGLE_API_KEY=<development key> --app appName-staging
тогда, когда это необходимо, вы можете ссылаться на него в коде через
ENV['GOOGLE_API_KEY']
Это позволит вам обмениваться кодом без совместного использования ваших личных ключей API.
дополнительную информацию об использовании переменных среды на Heroku можно найти в https://devcenter.heroku.com/articles/config-vars