我在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"
答案 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函数时会自动创建日志流。您可以在那里找到所有打印进行调试。