У меня есть приложение Django, работающее на сервере Linux под NGINX. «Пользователь» для приложения Django - www-data
. В этом приложении я пытаюсь подключиться к AWS IOT, и для этого я считаю, что пакет AWS boto3 пытается найти учетные данные AWS здесь: ~/.aws/credentials
. Проблема в том, что для пользователя www-data
такого пути нет! Когда я подключаюсь к серверу (используя свое настоящее имя пользователя) и пытаюсь запустить скрипт, который подключается к AWS, он подключается просто отлично. Допустим, мое имя пользователя "Джо". Действительно, существует файл /home/joe/.aws/credentials
, который содержит правильные учетные данные. Вот почему скрипт работает нормально, когда я запускаю от имени пользователя "joe". Но когда приложение Django запущено, оно не работает, потому что нет www-данных логина, то есть нет файла /home/www-data/.aws/credentials.
Я понимаю, что AWS boto3 позволяет нам установить переменную окружения, чтобы указать нестандартный путь к файлу учетных данных. Эта переменная env AWS_SHARED_CREDENTIALS_FILE
, а также есть AWS_CONFIG_FILE.
Однако я не знаю, как задать переменную среды в Django для пользователя www-data
, чтобы boto3 теперь мог использовать эту переменную среды для указания пути к учетным данным AWS.
Кто-нибудь знает, как это сделать? Обратите внимание, что это производственная среда, поэтому я не могу использовать какие-либо хитрости / хаки на локальном сервере.