Python aws lambda中的返回变量

Python aws lambda中的返回变量,python,amazon-web-services,aws-lambda,Python,Amazon Web Services,Aws Lambda,如何从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 a

如何从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

编辑:添加错误消息后,问题似乎只是没有在顶部范围中声明全局。看见修正我的样品如下

如果需要,AWS将在容器中加载代码,然后调用属性指示的方法。该函数可能会引发错误或返回数据,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\u处理程序
方法将
cnt
变量作为参数传递给
other\u方法
。 或者创建一个类并对其调用一些方法,让该类将
cnt
变量作为自己的数据进行管理(例如:通过受保护的变量)

请记住,在对任何给定Lambda的连续调用之间,globals可能存在,也可能不存在。看


HTH

AWS将调用您定义的lambda入口点,一旦返回,lambda进程将终止。除非您的入口点调用了这些函数,否则没有机会在其他函数中使用全局函数。如果入口点正在调用其他函数,则可以将
cnt
作为参数传递——无需全局函数。如果您的入口点没有调用其他函数,它们将根本不会运行——仍然不需要全局:)

谢谢,包括在lamda函数中调用函数。它起作用了