【问题标题】:AWS Lambda could not connect to endpoint URL DynamoDBAWS Lambda 无法连接到端点 URL DynamoDB
【发布时间】:2020-08-24 22:49:56
【问题描述】:

我正在开发一个我在 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”。

【问题讨论】:

  • 您可以检查运行 lambda 的角色的 IAM 权限。
  • lambda 是否在 VPC 中?
  • @Jim 是的,lambda 被分配了在 DynamoDB 中读写的权限。
  • @Marcin 没错,lambda 在 VPC 中,谢谢!

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


【解决方案1】:

超时很可能是因为 VPC 中的 lambda 没有没有互联网也没有公共 IP 地址。来自docs

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

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

有两种方法可以解决这个问题:

【讨论】:

    【解决方案2】:

    除了上述 Marcin 的出色回答之外,您是否检查过与该函数关联的安全组是否具有允许网络接口连接到 DynamoDB 或其 NAT 网关的正确出口规则?

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-07-01
      • 2021-06-10
      • 2019-11-08
      相关资源
      最近更新 更多