为什么我的lambda无法与弹性帽说话?

Pie*_*arg 5 amazon-web-services redis stackexchange.redis .net-core aws-lambda

我有一个Redis ElastiCache集群,它具有以下格式的主节点的FQDN : master.clustername.x.euw1.cache.amazonaws.com. 我还有一个Route53记录,CNAME指向该FQDN.

我在与群集相同的VPC中有一个.net核心lambda,可通过安全组访问群集.lambda使用Stack Overflow开发的Redis库(Github repo在这里作为参考)与集群对话.

如果我给lambda主机名为Redis集群(开头的那个master)的FQDN,我可以连接,保存数据并读取它.

如果我给lambda提供CNAME(当我从本地机器ping它时,CNAME提供与FQDN相同的IP地址,如果我在lambda中使用Dns.GetHostEntry)它也没有连接,我得到以下错误信息:

One or more errors occurred. (It was not possible to connect to the redis server(s); to create a disconnected multiplexer, disable AbortOnConnectFail. SocketFailure on PING): AggregateException
at System.Threading.Tasks.Task.Wait(Int32 millisecondsTimeout, CancellationToken cancellationToken)
at lambda_method(Closure , Stream , Stream , LambdaContextInternal )

at StackExchange.Redis.ConnectionMultiplexer.ConnectImpl(Func`1 multiplexerFactory, TextWriter log) in c:\code\StackExchange.Redis\StackExchange.Redis\StackExchange\Redis\ConnectionMultiplexer.cs:line 890
at lambda.Redis.RedisClientBuilder.Build(String redisHost, String redisPort, Int32 redisDbId) in C:\BuildAgent\work\91d24911506461d0\src\Lambda\Redis\RedisClientBuilder.cs:line 9
at lambda.Ioc.ServiceBuilder.GetRedisClient() in C:\BuildAgent\work\91d24911506461d0\src\Lambda\IoC\ServiceBuilder.cs:line 18
at lambda.Ioc.ServiceBuilder.GetServices() in C:\BuildAgent\work\91d24911506461d0\src\Lambda\IoC\ServiceBuilder.cs:line 11
at Handlers.OrderHandler.Run(SNSEvent request, ILambdaContext context) in C:\BuildAgent\work\91d24911506461d0\src\Lambda\Handlers\OrderHandler.cs:line 26
Run Code Online (Sandbox Code Playgroud)

有没有人见过类似的东西?

Pie*_*arg 1

事实证明,因为我在 elasticache 集群上使用 SSL 证书,并且在master.我尝试连接到 CNAME 时 SSL 证书绑定到端点,所以证书验证失败。

因此,我最终在代码中查询 Route53 记录以获取端点,master结果成功了。