AWS Lambda 无法连接到端点 URL DynamoDB
AWS Lambda could not connect to endpoint URL DynamoDB
我正在开发我在 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 class 我分配了区域“eu-west-1”。
超时很可能是因为 VPC 中的 lambda 没有互联网 也没有 public IP 地址。来自 docs:
Connecting a function to a public subnet doesn't give it internet access or a public IP address.
随后,lambda 函数无法连接 到 DynamoDB 端点。
有两种方法可以解决这个问题:
- 将 lambda 置于私有子网中并设置 NAT 网关 以启用 lambda 访问互联网。
- 使用VPC Gateway for DynamoDB which would be better in this case, as for DynamoDB gateway there are no extra charges.
除了上面 Marcin 的出色回答之外,您是否检查过与该函数关联的安全组是否具有允许网络接口连接到 DynamoDB 或其 NAT 网关的正确出口规则?
我正在开发我在 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 class 我分配了区域“eu-west-1”。
超时很可能是因为 VPC 中的 lambda 没有互联网 也没有 public IP 地址。来自 docs:
Connecting a function to a public subnet doesn't give it internet access or a public IP address.
随后,lambda 函数无法连接 到 DynamoDB 端点。
有两种方法可以解决这个问题:
- 将 lambda 置于私有子网中并设置 NAT 网关 以启用 lambda 访问互联网。
- 使用VPC Gateway for DynamoDB which would be better in this case, as for DynamoDB gateway there are no extra charges.
除了上面 Marcin 的出色回答之外,您是否检查过与该函数关联的安全组是否具有允许网络接口连接到 DynamoDB 或其 NAT 网关的正确出口规则?