使用Python从AWS Lambda连接到DocumentDB
我正在尝试从Lambda函数连接到DocumentDB 我已经按照此配置了DocumentDB,可以通过cloud9命令提示符访问它 documentDB集群是两个安全组的一部分。第一个安全组称为使用Python从AWS Lambda连接到DocumentDB,python,mongodb,aws-lambda,pymongo,aws-documentdb,Python,Mongodb,Aws Lambda,Pymongo,Aws Documentdb,我正在尝试从Lambda函数连接到DocumentDB 我已经按照此配置了DocumentDB,可以通过cloud9命令提示符访问它 documentDB集群是两个安全组的一部分。第一个安全组称为demoDocDB,第二个安全组称为default,是vpc defulat安全组 demoDocDB的入站规则将请求从cloud9实例转发到运行my documentDB数据库的端口27017 defualt安全组的入站规则指定所有通信量、所有端口范围和自身的源。VPC ID是默认的VPC设置 在la
demoDocDB
,第二个安全组称为default
,是vpc defulat安全组
demoDocDB
的入站规则将请求从cloud9实例转发到运行my documentDB数据库的端口27017
defualt
安全组的入站规则指定所有通信量、所有端口范围和自身的源。VPC ID是默认的VPC设置
在lambda中编辑VPC详细信息时,我输入了:
默认安全组
[ERROR] ServerSelectionTimeoutError: MY_DATABASE_URL:27017: [Errno -2] Name or service not known
下面的代码片段是要执行的,函数永远不会到达打印(“插入的数据”)
它在insert语句中超时
def getDBConnection():
client = pymongo.MongoClient(***MY_URL***)
##Specify the database to be used
db = client.test
print("GOT CONNECTION",db)
##Specify the collection to be used
col = db.myTestCollection
print("GOT COL",col)
##Insert a single document
col.insert_one({'hello':'Amazon DocumentDB'})
print("INSERTED DATA")
##Find the document that was previously written
x = col.find_one({'hello':'Amazon DocumentDB'})
##Print the result to the screen
print("RETRIEVED DATA",x)
##Close the connection
client.close()
我已经尝试过改变pymongo的版本,但是没有帮助
Type Protocol Port Range Source
Custom TCP TCP 27017 Lambda Security Group
Type Protocol Port Range Destination
All Traffic All All 0.0.0.0/0
如果愿意,还可以将此限制为端口80/443上的HTTP/HTTPS
2.检查DocumentDB群集的安全组,查看其是否设置了入站规则,如下所示:
Type Protocol Port Range Source
Custom TCP TCP 27017 Lambda Security Group
这应该对你有好处。如果它不起作用,请告诉我,我将尝试帮助您排除故障。嘿,谢谢您的回复,不幸的是服务器仍然超时。我如何知道子网是否是私有的?没有任何指示?我也尝试过这样做,但没有运气好,所以您的路由表中有正确的路由,并且您遵循了IGW和NATGW。此外,您还可以通过从Lambda控制台复制子网ID,然后转到VPC控制台中的子网部分来检查子网。但是,如果在创建子网时未命名/标记子网,则必须检查路由表。如果是这种情况,则公共子网将与包含IGW的路由表关联,而私有子网将与NATGW关联。已经存在一个已解除的路由表,并将其标记为VPC的
Main
,其中有0.0.0.0/0目标和目标IGW,但没有子网关联。您是否更改了默认的路由表,还是像那个教程中那样不使用它,而是创建了两个新的路由表?没有,只是根据我从AWS工作中获得的知识从头开始构建了所有内容。我没有学习任何教程或类似的内容。我认为你的问题出在人际网络的某个地方。我现在正在做一个项目,从API中提取数据,利用DocumentDB作为数据存储并记录所有数据。因此,当我完成后,我将以这种方式在这里发布链接,如果您仍然无法使自己的工作正常,您可以查看我所做的并复制它。应该在星期天之前完成。让我知道如果你明白了这个问题,我会在这里发表评论,如果我想到其他任何事情