AWS Lambda无法连接到终端URL DynamoDB

时间:2020-08-18 15:11:20

标签: python amazon-web-services amazon-dynamodb boto3

我正在开发我在DynamoDB中编写的lambda函数。一方面,我创建了一个包含具有DynamoDB功能的脚本的层:

class DynamoHandler():
    def __init__(self):
        self.resource = boto3.resource('dynamodb', region_name = 'eu-west-1')
        self.__table = None

 

    def set_table(self, table_name: str):
        table = self.resource.Table(table_name)
        table.table_arn
        self.__table = table

 

    def insert(self, item, **kwargs):
        self.__check_table()

 

        return self.__table.put_item(
            Item=item,
            **kwargs
        )

 

在lambda中,我编写了以下代码:

from dynamo_class import DynamoHandler
    db = DynamoHandler()
    db.set_table(TABLE NAME)
    db.insert(msg) 

我得到了错误:

[错误] EndpointConnectionError:无法连接到端点URL:“ https://dynamodb.eu-west-1.amazonaws.com/”

您知道如何解决此问题吗? 我已经搜索了类似的错误,但是它们在未指定区域时发生,在我的DynamoDB类中,我将区域分配为“ eu-west-1”。

2 个答案:

答案 0 :(得分:2)

发生超时的可能性最大,因为VPC中的Lambda没有没有互联网,也没有公共IP地址。来自docs

将功能连接到公共子网不提供互联网访问权限或公共IP地址。

随后,lambda函数无法连接到DynamoDB端点。

有两种方法可以纠正此问题:

答案 1 :(得分:1)

除了上面Marcin给出的一个很好的答案之外,您是否检查过与该功能关联的安全组是否具有允许网络接口连接到DynamoDB或其NAT网关的正确出口规则?