【发布时间】:2018-07-07 15:08:52
【问题描述】:
所以我有一个这样的 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 秒并超时?
【问题讨论】:
-
需要更多信息。 Lambda 函数使用的内存是多少?请确认 redis 实例是在该 VPC 上创建的,并且在 Elasticache 子网组中选择的安全组是允许所有入站/出站的安全组。还要确认 Lambda 位于相同的 VPC 和子网中。然后将内存和超时设置为 300 秒,然后重试。也可以在 Lambda 控制台中启用“x-ray”和/或使用 Cloud9(尚未使用此功能)对 Lambda 中发生的事情进行不同的处理。
-
@Aliweb,你弄清楚为什么 lambda / redis 连接超时了吗?
-
@Jun 很遗憾没有
-
@Aliweb 可能是因为 ElasticCache 的访问权限。查看这个 aws 教程:docs.aws.amazon.com/lambda/latest/dg/vpc-ec.html 我刚刚找到了这个。
标签: python redis aws-lambda amazon-vpc amazon-elasticache