/ / Problème avec Heroku, variables de configuration et django avec S3 - django, heroku, amazon-s3

Problème avec Heroku, variables de configuration et django avec S3 - django, heroku, amazon-s3

J'ai un problème très étrange.

Mon projet Django est exécuté à Heroku et utilise S3 pour stocker mes ressources statiques.

Je voulais utiliser les variables d'environnement Heroku en les configurant comme suit:

heroku config:add AWS_S3_TOKEN=my_s3_token
heroku config:add AWS_S3_SECRET=my_s3_secret

Et les utiliser avec le module os de python:

import os

token = os.getenv("AWS_S3_TOKEN")
secret = os.getenv("AWS_S3_SECRET")

Mais heroku continue de me jeter l'erreur suivante:

NoAuthHandlerFound: No handler was ready to authenticate. 1 handlers were checked. ["HmacAuthV1Handler"] Check your credentials

Donc, j'ai fini par écrire ces paramètres dans mon fichier settings.py et ça fonctionne bien

Pourquoi cela arrive-t-il?

Si je cours

heroku config

Je peux voir toutes mes variables définies et si je le fais

heroku run python manage.py shell

et alors

import os
print os.getenv("AWS_S3_TOKEN")

Par exemple, il affiche la valeur de la variable.

aucun indice sur ce ???

Merci d'avance

Réponses:

0 pour la réponse № 1

Les variables d'environnement de l'application ne sont généralement pasdisponibles pendant que Heroku compile le slug et configure l’application, elles ne sont disponibles que lorsque l’application est en cours d’exécution. collectstatic dans le cadre de la compilation slug, ce qui explique probablement pourquoi vous voyez cette erreur.

Vous pouvez rendre les variables d'environnement disponibles lors de la compilation en activant une fonctionnalité de Heroku Labs:

heroku labs:enable user-env-compile

Il y a plus d’informations dans cet article du centre de développement Heroku: https://devcenter.heroku.com/articles/labs-user-env-compile


1 pour la réponse № 2

Je ne suis pas familier avec python ou Django, mais je suis curieux.

Si vous essayez votre authentification avec des chaînes vides, obtenez-vous la même erreur?

Si oui, alors je soupçonne que c’est à propos de quand vous faites cette danse d'authentification. Quand le faites-vous? Au moment de la compilation ou à l'exécution? (Si au moment de la compilation, regardez ce)