无法从 Python 中的 AWS lambda 函数与 mongo 连接



我有 aws lambda,它无法通过 VPC 与 mongo 连接。

import pymongo
def handler(event, context):
try:
client = pymongo.MongoClient(host="xxxxxxx", port=27017, username=x1, password=x2, authsource="x3, authMechanism='SCRAM-SHA-1')
except pymongo.errors.ServerSelectionTimeoutError as err:
print(err)

找不到服务器。

我创建了一个安全组,新角色也为 VPC 和 lambda 授予了完全访问权限,但无法连接。

从 https://blog.shikisoft.com/access-mongodb-instance-from-aws-lambda-python/以及 https://blog.shikisoft.com/running-aws-lambda-in-vpc-accessing-rds/链接中获取帮助。

请帮忙。 从昨天开始尝试,但没有运气。

让我尝试帮助您找出问题所在。

1. 您的 MongoDB EC2 实例和 Lambda 是否托管在同一 VPC 上?

  • 如果这是问题的原因,则应将服务移至同一 VPC。

阿拉伯数字。附加到 MongoDB EC2 实例和 Lambda 的安全组是否已将默认 sg列入白名单/包含默认 sg?

  • 您必须将默认 sg包含在安全组中,以便该 VPC 中的服务/实例可以通信。

3.您的主机名是公开访问还是私下访问?

如果 Lambda
  • 需要通过互联网连接才能访问您的 MongoDB 实例,则无需将 Lambda 附加到 VPC 中。 在 VPC 内部,Lambda 需要 NAT 网关进行通信才能打开 世界。尝试私下通信,如果您的 MongoDB 实例和 Lambda 位于同一 VPC 中。 https://aws.amazon.com/premiumsupport/knowledge-center/internet-access-lambda-function/

希望这些答案对您有所帮助。

最新更新