Python lambda函数在失败的弹性连接上超时

时间:2018-01-28 23:26:39

标签: python redis aws-lambda amazon-vpc amazon-elasticache

所以我有一个像这样的python处理程序:

redisClinet = redis.StrictRedis(host = environ['REDIS_ENDPOINT'], port=6379, db=0)    

def handler(event, context):
    // some logic

    lastEvent = redisClinet.get('lastEvent')

    // rest of the logic

我有:

  • lambda vpc正确设置为与Elasticache集群在同一个vpc上,安全组允许每个入站/出站
  • lambda执行角色可以访问所有资源的所有操作,包括vpc,elasticache等。

当我在我自己的机器上本地运行该函数时,它正确地退出,因为Elasticache明显拒绝我的机器的IP地址,但问题是当我在lambda上运行它时我甚至看不到错误消息发生了什么事。

实际问题:除了我的lambda无法连接到redis的原因外,如何让lambda正确记录错误并退出错误而不是等待60秒并超时?

1 个答案:

答案 0 :(得分:0)

提供的信息较少。

由于redis连接,Lambda可能会超时。您可以增加lambda超时(必须大于redis客户端中设置的超时)或者在redis-py中设置自己的连接超时值。

我认为你也可以将Redis连接部分移动到lambda处理程序并传递它。尝试捕获并将日志打印到catch中。 像这样:

def handler(event, context):
    try:
       redisClinet = redis.StrictRedis(host = environ['REDIS_ENDPOINT'], port=6379, db=0)
    except Exception as e:
        print e
    // some logic
    lastEvent = redisClinet.get('lastEvent')
    // rest of the logic