gpt4 book ai didi

python - aws lambda 中的返回变量

转载 作者:太空宇宙 更新时间:2023-11-04 00:37:21 25 4
gpt4 key购买 nike

如何从 aws lambda 函数返回散列?

使用 boto3 模块。

这是我的代码片段

def lambda_handler(event, context):
global cnt
any = []

for node in ec2.instances.filter(Filters=[{'Name': 'instance-state-name', 'Values': ['running']}]):

inst= node.instance_type
any.append(inst)
cnt=collections.Counter(any)
return cnt


for key, val in cnt.items():
print key
print val

精确的代码在 python IDE 中工作。我的目标是从 AWS lambda 函数返回一个变量,并在具有相同 lambda 函数的其他函数中使用。

lambda 日志中的错误

module initialization error: global name 'cnt' is not defined

最佳答案

编辑:添加错误消息后,问题似乎只是没有在顶级范围内声明全局。参见 this answer .相应地修复我的示例。

如果需要,AWS 会将您的代码加载到容器中,然后调用 Lambda Function Handler 指示的方法属性(property)。该函数可以引发错误或返回数据,AWS 会将其传回给调用者(例如:API 网关方法)。

因此,例如您可以:

cnt = []

def lambda_handler(event, context):
global cnt
cnt = [{'id': 1, 'label': 'One'}, {'id': 2, 'label': 'Two'}]
print "cnt: {0!s}".format(cnt)
other_method()
return cnt

def other_method():
global cnt
print "cnt length is: {0!s}.format(len(cnt))
return

(我还没有在 AWS 中测试这个,所以要小心可能出现的错误)但可以说,您也可以让 lambda_handler 方法将 cnt 变量作为参数传递给 other_method。或者创建一个类并在其上调用一些方法,并让该类将 cnt 变量作为自己的数据进行管理(例如:通过 protected 变量)。

请记住,在对任何给定 Lambda 的连续调用之间,全局变量可能存在,也可能不存在。参见 Understanding Container Reuse in AWS Lambda .

HTH

关于python - aws lambda 中的返回变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43438966/

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