繁体   English   中英

在 python 中更新一个 AWS Lambda function 的环境变量

[英]Update an environment variable of an AWS Lambda function in python

我想从 AWS Lambda function 更新环境变量。我试过这段代码:

import os


def lambda_handler(event, context):

    call = os.environ["last_call"]
    print (call)
    os.environ["last_call"] = "last update now "
    print (os.environ["last_call"])

当我重新分配os.environ["last_call"] = "last update now"时,我没有看到环境变量更新。

我知道我错过了什么。 您能否指导我每次调用 Lambda function 时如何更新值?

使用os.putenv(key, value) ,但要小心:

如果平台支持putenv putenv() function,这个映射可以用来修改环境和查询环境。

您的目标似乎是存储一些信息,以便在下次执行 function 时 function 可以访问这些信息。

这可以(大部分)简单地通过使用全局变量而不是环境变量来完成。 只需在处理程序 function 之外定义一个变量,它就可以在 function 的未来执行期间访问。

然而:

  • 如果频繁执行 function,AWS Lambda 可能会创建多个容器 全局变量只能在其中一个容器内运行,因此并非所有函数都可以访问该值。
  • 如果 function 一段时间没有使用,容器可能会被破坏 这将丢失全局变量。

使用环境变量也会有同样的问题。

让 Lambda function 的未来执行可以访问信息的正确方法是使用某种形式的存储服务,例如 DynamoDB、Amazon S3 或数据库。

你可以像这样使用它......它对我有用。

import boto3

def lambda_handler(event, context):    
    client = boto3.client('lambda')
    response = client.update_function_configuration(
        FunctionName='my-test-lam-1',
        Environment={
            'Variables': {
                'NAME': 'updated_value',
                'key2': 'val2'
            }
        }
    )

环境变量将通过导入库使用

import os
variable = os.environ["env-variable"]

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM