AWS Neptune 连接池设置

AWS Neptune connection pool settings

我们正在使用连接池从 AWS Lambda 与 AWS Neptune 通信。因此,我们遇到了各种连接问题。通常,它发生在维护 window 之后,需要重新启动 Neptune 才能修复它。

例如,以下是在 AWS Neptune 中自动推出 SSL 证书后 Python Lambda 中出现的错误:

Max retries exceeded with url: /endpoint/ (Caused by SSLError(SSLCertVerificationError(1, 
'[SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed: certificate has expired (_ssl.c:1131)')))

此行为似乎与 Neptune Endpoint 功能有关,并在 AWS Doc

中提到

A custom endpoint for a Neptune cluster represents a set of DB instances that you choose. When you connect to the endpoint, Neptune chooses one of the instances in the group to handle the connection.

When you add a DB instance to a custom endpoint or remove it from a custom endpoint, any existing connections to that DB instance remain active.

只要连接仍然有效,它就不会从池中删除,尽管它不再起作用。

我的问题:如何从客户端配置 HTTP 连接池以解决此问题?是否可以在使用之前检查 Neptune 连接?

一般的最佳做法是在遇到此类异常时假设连接仍然是 alive/valid 和 catch/reconnect。此处显示示例 Lambda 函数架构(主要用于 Gremlin,但其他查询语言也有类似的模式):https://docs.aws.amazon.com/neptune/latest/userguide/lambda-functions-examples.html