Python lambda 函数在弹性缓存连接失败时超时



所以我有一个这样的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 显然拒绝了我机器的 IP 地址,但问题是当我在 lambda 上运行它以查看发生了什么时,我什至看不到错误消息。

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

提供的信息

较少。

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

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

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

最新更新