Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/304.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何使用Python在AWS lambda中设置环境变量_Python_Amazon Web Services_Aws Lambda - Fatal编程技术网

如何使用Python在AWS lambda中设置环境变量

如何使用Python在AWS lambda中设置环境变量,python,amazon-web-services,aws-lambda,Python,Amazon Web Services,Aws Lambda,我正在尝试使用python在AWS lambda中设置环境变量 最初,我有一个环境变量stackname,在lambda配置中没有值 def lambda_handler(event, context): if os.environ["stackname"]: print("Not empty") print(os.environ["stackname"]) else: print("its empty") os.e

我正在尝试使用python在AWS lambda中设置环境变量

最初,我有一个环境变量stackname,在lambda配置中没有值

def lambda_handler(event, context):
    if os.environ["stackname"]:
        print("Not empty")
        print(os.environ["stackname"])
    else:
        print("its empty")
        os.environ["stackname"]="mystack"
        print(os.environ["stackname"])
现在我在这里看到了奇怪的间歇性行为,这是我第一次希望打印出来

its empty
mystack
无论何时我执行lambda,它都会打印出来

Not empty
mystack
在最初的几次打印中

Not empty
mystack
但经过几次或多次处决后,兰姆达在下面印了一些奇怪的图案

  its empty
    mystack

请建议是否有其他更好的方法来设置提供一致输出的环境变量。

AWS Lambda函数在Amazon Linux环境中运行。连续调用同一Lambda函数可能会导致该函数在同一环境或不同环境中运行。我所说的环境是指计算机、容器等

这意味着您无法可靠地设置环境变量并期望它们在下次调用时出现


更好的方法是将运行时变量存储在持久性存储中,如DynamoDB。

AWS Lambda函数在Amazon Linux环境中运行。连续调用同一Lambda函数可能会导致该函数在同一环境或不同环境中运行。我所说的环境是指计算机、容器等

这意味着您无法可靠地设置环境变量并期望它们在下次调用时出现


更好的方法是将运行时变量存储在持久性存储中,如DynamoDB。

为什么不使用lambda提供的?您可以在创建或更新函数时配置环境变量,然后在函数代码中引用这些变量。关于为什么它打印出“它的空”,约翰·汉利的回答相当准确。

为什么不使用lambda提供的?您可以在创建或更新函数时配置环境变量,然后在函数代码中引用这些变量。关于为什么它会打印出“它是空的”,约翰·汉利的回答相当准确。

你可以像在使用操作系统的系统中那样来做

 import os
 os.environ['varible']='value'

您可以像在使用操作系统的系统中一样执行此操作

 import os
 os.environ['varible']='value'

对,约翰汉利。您可以使用环境变量或任何其他持久性存储来缓存昂贵的信息,容器中的第一次运行可以获取这些信息,而容器中的其余运行可以使用这些信息。但是,您不能期望这些信息会出现在后续的任何函数运行中,这些信息可能在不同的容器中,甚至在不同的EC2实例上。对,@JohnHanley。您可以使用环境变量或任何其他持久性存储来缓存昂贵的信息,容器中的第一次运行可以获取这些信息,而容器中的其余运行可以使用这些信息。但是,您不能期望任何后续运行的函数都有这些信息,这些信息可能在不同的容器中,甚至在不同的EC2实例上。您知道有状态和无状态之间的区别吗?您知道有状态和无状态之间的区别吗?