运行python作业时获取NULL输出

时间:2017-09-05 08:57:11

标签: python-2.7

我在AWS Lambda中运行python作业以基于标记停止ec2实例。 脚本运行正常,但即使脚本成功完成,我也会得到输出" null"在函数执行返回的结果中。 随附的是python脚本。我是Python脚本的新手。我来自运营方。

import boto3
import logging

#setup simple logging for INFO
logger = logging.getLogger()
logger.setLevel(logging.INFO)

#define the connection
ec2 = boto3.resource('ec2')

def lambda_handler(event, context):
    # Use the filter() method of the instances collection to retrieve
    # all running EC2 instances.
    filters = [{
            'Name': 'tag:AutoOff',
            'Values': ['True']
        },
        {
            'Name': 'instance-state-name', 
            'Values': ['running']
        }
    ]

    #filter the instances
    instances = ec2.instances.filter(Filters=filters)

    #locate all running instances
    RunningInstances = [instance.id for instance in instances]

    #print the instances for logging purposes
    print RunningInstances 

    #make sure there are actually instances to shut down. 
    if len(RunningInstances) > 0:
        #perform the shutdown
        shuttingDown = ec2.instances.filter(InstanceIds=RunningInstances).stop()
        print shuttingDown
    else:
        print "NOTHING"

1 个答案:

答案 0 :(得分:1)

为了从Lambda获得响应,您需要从 lambda_handler 方法返回某些内容(通常是字典)。默认情况下,所有Python方法都返回 None 类型,这就是您没有收到任何有价值的响应的原因。

def lambda_handler(event, context):
    ... your code here ...
    return {"turned_off": RunningInstances}

P.S。它优先使用logging.debug | info | ...方法而不是print()。您可以在文档中找到更多信息:https://docs.python.org/2.7/library/logging.html

无论如何,所有输出都保存到CloudWatch Logs。创建Lambda函数时会自动创建日志流。您可以在那里找到所有打印进行调试。