当前位置: 首页 > 知识库问答 >
问题:

lambda python dynamodb写入获取超时错误

樊博雅
2023-03-14

我一直在努力完成关于lambda dynamodb连接的第一个教程,但遇到了超时错误。

在lambda控制台中,我有以下代码:

from __future__ import print_function
import json
import boto3

print('Loading function')

def lambda_handler(event, context):

    dynamodb = boto3.resource('dynamodb', region_name='us-east-1', endpoint_url="http://localhost:8000")
    print('Dynamodb loaded')
    pages_table = dynamodb.Table('Pages')
    print('Pages table referenced')

    for item in event:
        print('Item: {}'.format(item))
        response = pages_table.put_item( Item=item)
        print('Response: {}'.format(response))

    return "hi"

我已经通过dynamodb控制台创建了Pages表。

当我从lambda控制台测试运行lambda函数时,我得到:

START RequestId: 4008f77f-3b3e-11e7-ad79-0713f3bd7f4e Version: $LATEST
Dynamodb loaded
Pages table referenced
Item: {'UID': 1, 'id': 1, 'label': 'Original', 'snippet': 'Style', 'type': 'item', '$$hashKey': 'object:4'}
END RequestId: 4008f77f-3b3e-11e7-ad79-0713f3bd7f4e
REPORT RequestId: 4008f77f-3b3e-11e7-ad79-0713f3bd7f4e  Duration: 3002.30 ms    
Billed Duration: 3000 ms    Memory Size: 128 MB Max Memory Used: 36 MB  
2017-05-17T20:20:24.159Z 4008f77f-3b3e-11e7-ad79-0713f3bd7f4e Task timed out after 3.00 seconds

我的调试打印语句表明,第一个pages\u table.put\u item()是发生超时的地方,因为没有后续的响应打印。(我的项目数组中有一些元素用于测试)

当我检查dynamodb表时,表中没有数据,甚至几天后也没有。

我想我已经准确地遵循了AWS留档中的所有步骤,以创建一个通过lambda(IAM权限、Dynamodb表键等)访问的Dynamodb,但在搜索具有超时的类似体验的其他实例时被难倒了。我能找到的最接近的东西参考了VPC配置,但这似乎对我来说没有意义,因为教程没有提到VPC设置。此外,当我深入VPC控制台的设置似乎是默认的。

我错过了什么?

共有1个答案

阎建德
2023-03-14

DynamoDB的endpointURL似乎不正确:

endpoint_url="http://localhost:8000"

这仅用于DynamoDB的本地测试。根据Lambda函数,us-east-1的endpoint需要为:

endpoint_url="https://dynamodb.us-east-1.amazonaws.com"

根据AWS区域和endpoint文件。

 类似资料:
  • 我已经使用和构建了一个微服务。在此微服务中,我试图使用另一个REST API服务。但是,我得到以下错误在。我已经禁用了Windows防火墙和McAfee防病毒防火墙,但仍然得到相同的错误。我可以直接使用Postman工具调用REST API,但不能通过我的微服务。 错误:- JAVAlang.IllegalStateException:底层HTTP客户端已完成,但未发出响应。 2018-06-12

  • 我正在尝试使用Spring Data Redis绝地组合连接到AWS ElastiCache Redis。[Redis Cluster enabled,因此它有Cluster Config endpoint,有3个碎片-每个碎片有1个主节点和2个副本节点] 读取超时错误。 AWS Redis服务器版本:5.0.3/群集模式:已启用/SSL:已启用/Auth:已启用(通过密码) 库——Spring数

  • 有人问我一个关于求两个数之间的公约数的问题。我能够使用“埃拉托色尼筛”找出逻辑方法,我正在运行我的代码。但是我的代码给出了一个意想不到的输出,它能够计算出no。指两个数之间的公约数。对于第一个输入,但对于其余的输入,它以某种方式继续与前一个值“内部循环j”,在该值处,它在第一个测试用例中停止;对于其他测试用例。 逻辑方法-->如果一个素数不。是给定两个NO的因子。然后,我们将检查每一个素数的倍数。

  • 我想以这种方式在csv中写入arraylist中的任何内容,无论其大小如何,但一个数组的值较少,这会导致数组越界错误,有没有办法解决这个问题? 在这个A到H中,它有自己的arraylist,有时其他数组中的元素少于A的大小,这会导致数组超出范围。

  • 问题内容: 由于某种原因,每次尝试使用Tomcat上的java webapp写入计算机上的文件夹时,我都会不断获取信息。此文件夹的权限设置为对我的计算机(Windows)上的每个人都完全控制。有人知道我为什么会得到这个例外吗? 这是我的代码: 这是错误: 异常:java.nio.file.AccessDeniedException:C:\ safesite_documents \ site1 ja