Проблема с подключением AWS DocumentDB к TLS

Когда TLS отключен, я могу успешно подключиться через свою лямбда-функцию, используя тот же код, что и здесь - https://docs.aws.amazon.com/documentdb/latest/developerguide/connect.html#w139aac29c11c13b5b7

Однако, когда я включаю TLS и использую образец кода с включенным TLS из приведенной выше ссылки, время ожидания моей лямбда-функции истекает. Я загрузил объединенный файл ca pem rds через wget и развертываю файл pem вместе со своим кодом в лямбда-выражении AWS.

Это код, в котором мое выполнение останавливается и истекает время ожидания:

    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 после печати «Строка подключения».


person CM.    schedule 02.01.2020    source источник


Ответы (2)


Я подозреваю, что это проблема с вашим дизайном VPC

Подключение к кластеру Amazon DocumentDB извне Amazon VPC, проверьте последний абзац.

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

person AWS PS    schedule 02.01.2020
comment
Если дело в VPC, не должно ли оно выйти из строя, когда я подключаюсь без включенного TLS? Я могу подключиться к DocumentDB, когда TLS отключен. - person CM.; 03.01.2020
comment
Я понимаю, что вы можете подключиться без TLS, попробуйте запустить ›mongo --sslAllowInvalidHostnames --ssl --sslCAFile rds -comdated-ca-bundle.pem --username ‹yourUsername› --password ‹ourPassword› - person AWS PS; 03.01.2020
comment
извините, это тестовое соединение без лямбды, и убедитесь, что оно не связано с лямбдой, если у вас есть клиент mongo - person AWS PS; 03.01.2020
comment
Да, я могу подключиться с другого клиента к кластеру DocumentDB с помощью TLS. Он связан с лямбда-выражением и может подключаться только с помощью лямбда-выражения, когда TLS отключен. - person CM.; 03.01.2020

Можете ли вы попробовать создать функцию лямбда-теста с помощью python и посмотреть, есть ли у вас проблема

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()
person AWS PS    schedule 02.01.2020