zappa上传环境变量到哪里?
Where does zappa upload environment variables to?
tl;dr
在 zappa_settings.json
中设置的环境变量不会作为环境变量上传到 AWS Lambda。他们去哪儿了?
ts;wm
我使用 Zappa 框架配置、部署和管理了一个 Lambda 函数。在zappa_settings.json
我设置了一些环境变量。当我的应用程序成功运行时,这些变量肯定存在,但是,当尝试在控制台或 AWS CLI 中检查 Lambda 函数环境变量时,我发现没有环境变量已上传到 Lambda 函数本身。
摘自zappa_settings.json:
{
"stage-dev": {
"app_function": "project.app",
"project_name": "my-project",
"runtime": "python3.7",
"s3_bucket": "my-project-zappa",
"slim_handler": true,
"environment_variables": {
"SECRET": "mysecretvalue"
}
}
}
aws lambda get-function-configuration --function-name my-project-stage-dev
的输出:
{
"Configuration": {
"FunctionName": "my-project-stage-dev",
"FunctionArn": "arn:aws:lambda:eu-west-1:000000000000:function:my-project-stage-dev",
"Runtime": "python3.7",
"Role": "arn:aws:iam::000000000000:role/lambda-execution-role",
"Handler": "handler.lambda_handler",
"CodeSize": 12333025,
"Description": "Zappa Deployment",
"Timeout": 30,
"MemorySize": 512,
"LastModified": "...",
"CodeSha256": "...",
"Version": "$LATEST",
"TracingConfig": {
"Mode": "PassThrough"
},
"RevisionId": "..."
},
"Code": {
"RepositoryType": "S3",
"Location": "..."
}
}
尽管 Environment
包含在 zappa_settings 中,但输出中不存在
Environment
并且 AWS 文档指示它应该包含在存在的情况下,这可以通过检查控制台来确认。我想知道 zappa 将环境变量上传到哪里,如果可能的话,为什么它使用 Lambda 的内置环境这样做?
AWS CLI 文档:
https://docs.aws.amazon.com/cli/latest/reference/lambda/get-function-configuration.html
environment_variables
在创建部署包时保存在 zappa_settings.py 中(运行 zappa package STAGE
并浏览存档)然后通过修改handler.py.
中的os.environ
动态设置为环境变量
要设置原生 AWS 变量,您需要使用 aws_environment_variables
。
tl;dr
在 zappa_settings.json
中设置的环境变量不会作为环境变量上传到 AWS Lambda。他们去哪儿了?
ts;wm
我使用 Zappa 框架配置、部署和管理了一个 Lambda 函数。在zappa_settings.json
我设置了一些环境变量。当我的应用程序成功运行时,这些变量肯定存在,但是,当尝试在控制台或 AWS CLI 中检查 Lambda 函数环境变量时,我发现没有环境变量已上传到 Lambda 函数本身。
摘自zappa_settings.json:
{
"stage-dev": {
"app_function": "project.app",
"project_name": "my-project",
"runtime": "python3.7",
"s3_bucket": "my-project-zappa",
"slim_handler": true,
"environment_variables": {
"SECRET": "mysecretvalue"
}
}
}
aws lambda get-function-configuration --function-name my-project-stage-dev
的输出:
{
"Configuration": {
"FunctionName": "my-project-stage-dev",
"FunctionArn": "arn:aws:lambda:eu-west-1:000000000000:function:my-project-stage-dev",
"Runtime": "python3.7",
"Role": "arn:aws:iam::000000000000:role/lambda-execution-role",
"Handler": "handler.lambda_handler",
"CodeSize": 12333025,
"Description": "Zappa Deployment",
"Timeout": 30,
"MemorySize": 512,
"LastModified": "...",
"CodeSha256": "...",
"Version": "$LATEST",
"TracingConfig": {
"Mode": "PassThrough"
},
"RevisionId": "..."
},
"Code": {
"RepositoryType": "S3",
"Location": "..."
}
}
尽管 Environment
包含在 zappa_settings 中,但输出中不存在
Environment
并且 AWS 文档指示它应该包含在存在的情况下,这可以通过检查控制台来确认。我想知道 zappa 将环境变量上传到哪里,如果可能的话,为什么它使用 Lambda 的内置环境这样做?
AWS CLI 文档: https://docs.aws.amazon.com/cli/latest/reference/lambda/get-function-configuration.html
environment_variables
在创建部署包时保存在 zappa_settings.py 中(运行 zappa package STAGE
并浏览存档)然后通过修改handler.py.
os.environ
动态设置为环境变量
要设置原生 AWS 变量,您需要使用 aws_environment_variables
。