AWS Lambda variables d'environnement peuvent être définies à l'aide de la Console AWS, CLI, ou des Kits de développement logiciel. Voici comment vous pouvez définir une AWS Lambda qui utilise une variable d'environnement LD_LIBRARY_PATH à l'aide d'AWS CLI:
aws lambda create-function \
--region us-east-1
--function-name myTestFunction
--zip-file fileb://path/package.zip
--role role-arn
--environment Variables={LD_LIBRARY_PATH=/usr/bin/test/lib64}
--handler index.handler
--runtime nodejs4.3
--profile default
Une fois créés, les variables d'environnement peuvent être lues à l'aide du support de la langue de votre offre pour accéder à l'environnement, par exemple à l'aide de processus.env pour Node.js. Lors de l'utilisation de Python, vous devez importer les os de la bibliothèque, comme dans l'exemple suivant:
...
import os
...
print("environment variable: " + os.environ['variable'])
Ressources Lien:
AWS Lambda prend Désormais en charge les Variables d'Environnement
En supposant que vous avez créé .fichier env côtés de vos paramètres de module.
.
├── .env
└── settings.py
Ajoutez le code suivant à votre settings.py
# settings.py
from os.path import join, dirname
from dotenv import load_dotenv
dotenv_path = join(dirname(__file__), '.env')
load_dotenv(dotenv_path)
Alternativement, vous pouvez utiliser find_dotenv() méthode qui va essayer de trouver un .fichier de configuration par (a) de deviner par où commencer utilisation du fichier ou le répertoire de travail -- qui permet de travailler en non-fichier des contextes tels que IPython portable et le REPL, puis (b) à pied jusqu'à l'arborescence de répertoires à la recherche pour le fichier spécifié -- appelé .env par défaut.
from dotenv import load_dotenv, find_dotenv
load_dotenv(find_dotenv())
Maintenant, vous pouvez accéder aux variables, soit à partir d'une variable d'environnement système ou de chargé de .fichier env.
Ressources Lien:
https://github.com/theskumar/python-dotenv
gepoggio répondu dans ce post: https://github.com/serverless/serverless/issues/577#issuecomment-192781002
Une solution de contournement consiste à utiliser python-dotenv:
https://github.com/theskumar/python-dotenv
import os
import dotenv
dotenv.load_dotenv(os.path.join(here, "../.env"))
dotenv.load_dotenv(os.path.join(here, "../../.env"))
Il essaie de charger deux fois parce que quand couru localement il est dans
projet/.env et lors de l'exécution de l'onu Lambda la .env est situé dans
projet/composant/.env