[RAILS] Définir la clé de compte de service Google Cloud dans heroku

introduction

Je suis un débutant en Rails créant un portfolio avec Ruby on Rails. Auparavant, j'ai mis en œuvre une analyse d'image simple à l'aide de l'API Google Cloud Vision dans l'article suivant.

Obtenez des étiquettes de données en les associant à l'API Google Cloud Vision lors de la prévisualisation d'images avec Rails

Cependant, ** ne démarre pas bien dans l'environnement de production heroku ... (+ +) ** Je savais que l'authentification ne fonctionnait probablement pas bien, mais cela a pris un temps inattendu pour le réparer, alors je vais le laisser sous forme de mémorandum.

Cause

J'utilise git lorsque je mets divers fichiers programme dans heroku.

terminal


git push heroku master

En d'autres termes, il pousse les mêmes informations que github du côté heroku. Comme il est configuré pour ne pas télécharger de fichiers contenant des informations clés sur github (.gitignore), par conséquent, les fichiers contenant des informations clés ne seront pas téléchargés sur heroku. En conséquence, le fichier json avec la clé de compte de service, qui est requise lors de la connexion à l'API Google Cloud Vision, n'a pas été placé du côté heroku.

Cette fois, nous examinerons cette méthode de transmission des informations avec succès.

Solution

Ce que nous allons faire cette fois, c'est de le transmettre à heroku en tant que variable d'environnement et de l'appeler à partir de là. Au lieu de placer le fichier lui-même sur le conteneur d'heroku, définissez les informations de clé requises dans une variable.

paramètres heroku

  1. Accéder à heroku Tout d'abord, accédez à l'écran heroku et sélectionnez l'application que vous souhaitez configurer.

  2. Accéder aux paramètres Cliquez sur l'onglet de l'écran, Paramètres

  3. Cliquez sur Reveal Config Vars Cliquez sur le bouton Reveal Config Vars dans Paramètres スクリーンショット 2020-10-14 17.43.29.png

  4. Définissez les variables d'environnement Lorsque vous appuyez sur le bouton de 3., les variables d'environnement définies s'affichent, donc une nouvelle y apparaît. Copiez et enregistrez GOOGLE_CREDENTIALS (toute chaîne de caractères est OK) et tout ce qui se trouve dans le fichier de clé de compte de service.

  5. Redémarrez heroku Après avoir défini les variables d'environnement, redémarrez avec heroku restart

paramètres du contrôleur

Nous définirons également le contrôleur en conséquence.

XXXX_controller.rb


:
    #Paramètres de l'API Vision
    if Rails.env.production?
      config.credentials = JSON.parse(ENV.fetch('GOOGLE_CREDENTIALS'))
    else
      config.credentials = ENV["GOOGLE_APPLICATION_CREDENTIALS"]
    end
:

Cette fois, dans le cas de l'environnement de production, obtenez la variable d'environnement définie dans heroku et Modifié pour définir dans la configuration en tant que fichier JSON.

Vous pouvez désormais utiliser l'API Google Cloud Vision sur heroku!

À la fin

Cela a pris beaucoup de temps malgré le réglage simple ... Vérifiez attentivement le journal de heroku, et si les informations du journal sont insuffisantes, Vous pouvez le voir en définissant les paramètres suivants et en vérifiant les informations détaillées. https://qiita.com/YujiNaito/items/3102ad59124d38433b2e

Aussi, je me demande si c'est la bonne réponse pour le faire avec force à partir de cette variable d'environnement ... Est-ce correct pour la sécurité? Il semble y avoir un meilleur moyen ... Il y a un meilleur moyen que ça! Si vous avez des questions, n'hésitez pas à commenter.

Recommended Posts

Définir la clé de compte de service Google Cloud dans heroku
Configurer un environnement de développement Python sur Marvericks
Configurer un serveur local simple sur votre Mac
Configurez un serveur gratuit sur AWS en 30 minutes
[Partie 1] Configurons un serveur Micra sur Linux
Utilisez la clé P12 du compte de service avec dev_appserver de GAE SDK
Configurer Python 3.4 sur Ubuntu
Accédez à Google Cloud Storage à partir de Python (boto) à l'aide du compte de service et du fichier de clé (p12)
Configurer Polyglot sous Windows
Crypter ACME avec Alibaba Cloud: créer une clé de compte, une clé de certificat, une demande de signature de certificat
Configurer un nœud pour faire MNIST sur ROS à l'aide de Tensorflow
Créer un service SlackBot sur Pepper
Configurer l'environnement Python sur CentOS
Comment configurer un notebook Jupyter à la destination SSH (AWS EC2)
Configurer un serveur Samba avec Docker
Faire de Unity Accelerator un service sous Linux
Configurer un serveur de messagerie avec Twisted
Créer un environnement Python + OpenCV sur Cloud9