1

禁用 TLS 后,我可以使用此处显示的相同代码通过我的 lambda 函数成功连接 - https://docs.aws.amazon.com/documentdb/latest/developerguide/connect.html#w139aac29c11c13b5b7

但是,当我启用 TLS 并使用上面链接中启用 TLS 的代码示例时,我的 lambda 函数会超时。我已经通过 wget 下载了 rds 组合的 ca pem 文件,并且我正在将 pem 文件连同我的代码一起部署到 AWS lambda。

这是我的执行停止和超时的代码:

    caFilePath = "rds-combined-ca-bundle.pem"
    var connectionStringTemplate = "mongodb://%s:%s@%s:27017/dbname?ssl=true&sslcertificateauthorityfile=%s"
    var connectionURI = fmt.Sprintf(connectionStringTemplate, secret["username"], secret["password"], secret["host"], caFilePath)

    fmt.Println("Connection String", connectionURI)
    client, err := mongo.NewClient(options.Client().ApplyURI(connectionURI))
    if err != nil {
        log.Fatalf("Failed to create client: %v", err)
    }

在“连接字符串”打印后,我在 cloudwatch 日志中看不到任何错误。

4

2 回答 2

1

我怀疑这是您的 VPC 设计的问题

从 Amazon VPC 外部连接到 Amazon DocumentDB 集群,检查最后一段

https://docs.aws.amazon.com/documentdb/latest/developerguide/connect-from-outside-a-vpc.html

此外,以下链接提供了详细说明

https://blog.webiny.com/connecting-to-aws-documentdb-from-a-lambda-function-2b666c9e4402

于 2020-01-02T21:14:50.930 回答
1

你可以尝试使用 python 创建 lambda 测试函数,看看你是否有问题

import pymongo
import sys

##Create a MongoDB client, open a connection to Amazon DocumentDB as a replica set and specify the read preference as secondary preferred
client = pymongo.MongoClient('mongodb://<dbusername>:<dbpassword>@mycluster.node.us-east-1.docdb.amazonaws.com:27017/?ssl=true&ssl_ca_certs=rds-combined-ca-bundle.pem&replicaSet=rs0&readPreference=secondaryPreferred') 

##Specify the database to be used
db = client.test

##Specify the collection to be used
col = db.myTestCollection

##Insert a single document
col.insert_one({'hello':'Amazon DocumentDB'})

##Find the document that was previously written
x = col.find_one({'hello':'Amazon DocumentDB'})

##Print the result to the screen
print(x)

##Close the connection
client.close()
于 2020-01-02T22:42:43.930 回答