gpt4 book ai didi

python - 如何从 Python 访问 AWS Lambda 环境变量

转载 作者:IT老高 更新时间:2023-10-28 21:37:53 27 4
gpt4 key购买 nike

使用新的 environment variable support in AWS Lambda ,我已经通过 webui 为我的函数添加了一个 env var。

如何从 Python 访问它?我试过了:

import os

MY_ENV_VAR = os.environ['MY_ENV_VAR']

但我的函数停止工作(如果我对 MY_ENV_VAR 的相关值进行硬编码,它可以正常工作)。

最佳答案

可以使用 AWS 控制台、CLI 或开发工具包定义 AWS Lambda 环境变量。这就是您使用 AWS CLI 定义使用 LD_LIBRARY_PATH 环境变量的 AWS Lambda 的方式:

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

创建后,可以使用您的语言为访问环境提供的支持来读取环境变量,例如对 Node.js 使用 process.env。使用 Python 时,您需要导入 os 库,如下例所示:

...
import os
...
print("environment variable: " + os.environ['variable'])

资源链接:

AWS Lambda Now Supports Environment Variables



假设您已在设置模块旁边创建了 .env 文件。

.
├── .env
└── settings.py

将以下代码添加到您的 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)

或者,您可以使用 find_dotenv() 方法,该方法将尝试通过 (a) 猜测从哪里开始使用 file 或工作目录来查找 .env 文件——允许它在非- 文件上下文,例如 IPython 笔记本和 REPL,然后 (b) 沿着目录树查找指定文件——默认情况下称为 .env。

from dotenv import load_dotenv, find_dotenv
load_dotenv(find_dotenv())

现在,您可以从系统环境变量或从 .env 文件加载的变量访问。

资源链接:

https://github.com/theskumar/python-dotenv



gepoggio 在这篇文章中回答:https://github.com/serverless/serverless/issues/577#issuecomment-192781002

A workaround is to use 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"))

It tries to load it twice because when ran locally it's in project/.env and when running un Lambda the .env is located in project/component/.env

关于python - 如何从 Python 访问 AWS Lambda 环境变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40937512/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com