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

Dynamodb 调用文档客户端.get in AWS Lamdba 超时

蒋波光
2023-03-14

以下lambda函数正在超时(通过WSS API网关调用)类似的调用在本地DynamoDB上有效

'''

var AWS = require("aws-sdk");
var docClient = new AWS.DynamoDB.DocumentClient({
  region: "ap-south-1",  
  httpOptions: {
    timeout: 5000
  },
  maxRetries: 3
  
});

exports.handler = async function(event, context) 
{
  
  console.log("Entering handler");
  
  try 
  {
    
     var params = 
     {
        TableName : "meeting_info",
        Key:{
          "meeting_id" :"100-200-300"
            
        }
    };
    
    try 
    {
      var data = await docClient.get(params).promise();
      
      console.log(data);
      
    } catch (e) {
      console.error(e);
    }
  } 
  catch (err) 
  {
      console.error("meeting_connections",err);
      return { statusCode: 500.4, body: 'Failed to connect: ' + JSON.stringify(err) };
  }
 
  return { statusCode: 200, body: 'Connected' };      
  
};

'''

以下是相应的CloudWatch日志。

开始请求id:234 b8e 95-0555-45d 6-811 f-c6fa 4d 354 e 61版本:$最新

2020-11-22t 19:11:23.781 z 234 b8e 95-0555-45d 6-811 f-c6fa 4d 354 e 61信息输入处理器

结束请求id:234 b8e 95-0555-45d 6-811 f-c6fa 4d 354 e 61

报告请求 Id: 234b8e95-0555-45d6-811f-c6fa4d354e61 持续时间: 10010.57 毫秒 计费持续时间: 10000 毫秒 内存大小: 128 MB 最大使用内存: 85 MB 初始化持续时间: 403.44 毫秒

10.01秒后,任务超时

共有1个答案

金旺
2023-03-14

“谢谢,”jarmod,Lambda穿着VPC。

我没有让它访问互联网,而是向 dynamo 数据库添加了一个 VPC 终端节点。

我在DocumentClient配置中添加了一个endpoint,现在我的Lambda可以连接到DB了。

"'var AWS=需要("aws-sdk");

var docClient = new AWS.DynamoDB.DocumentClient({
  region: "ap-south-1",  
  endpoint:"https://dynamodb.ap-south-1.amazonaws.com",
  httpOptions: {
    timeout: 5000
  },
  maxRetries: 3
  
});

'''

 类似资料:
  • 当我执行扫描时,我需要应用一个过滤器来确保只返回我需要的记录类型。我注意到的是,返回的LastEvalue atedKey没有考虑到应用的Filter表达式。 我的(扫描)查询: 返回的: 我可以理解这可能是DynamoDB更基本的实现细节,而不是DocumentClient的问题。当使用单个表设计时,它确实使api更难使用。 我的表中有多个实体,并非所有实体都是“公共”的和/或针对同一租户。如果

  • 我正在使用Apache HTTP客户端联系外部服务。这项服务可能需要几个小时(如果不是更长的话)才能产生响应。我尝试了一些不同的方法,但要么以套接字结束,要么以读取超时结束。我刚刚尝试使用RequestConfig将套接字和连接超时设置为0,根据文档,这应该是无限的,但请求总是在1小时后返回。有什么想法吗?

  • 客户端模块是一个较复杂的模块,这里包含了集群管理、路由、地址管理器、连接管理器、负载均衡器,还与代理、注册中心等模块交互。

  • 问题内容: 如何在Go HTTP客户端中使空闲超时? 空闲超时意味着从HTTP客户端内部调用Conn接口的Read / Write方法时发生超时。当客户端下载文件并且由于读取超时而导致下载失败时,此功能很有用。 问题答案: 您需要创建自己的,并返回,以设置适当的读写期限。 该会是这个样子:

  • 在我们的Spring应用程序中,我们依赖外部系统。我们希望为该系统的请求设置超时,但无法确定如何配置。 我们使用这个: 我已经尝试过这个:如何使用泽西2. x设置连接和读取超时?和许多其他建议,但无法让它工作。任何建议都将不胜感激。 不工作的更新: 也

  • 我对Spring集成的设想是: 使用自定义协议(大小和内容)发送数据的十个生产者 我必须解码这个自定义协议,然后处理结果。 所以我尝试了很多配置,目前最好的配置如下: 序列化类为: 我使用此代码来测试服务器: 当我用一个线程执行此操作时,如果我尝试执行多个线程,则效果很好,如: spring集成服务器卡住了,我有以下警告: 而且它不工作,服务器无法接收消息。 我错在哪里?非常感谢。 编辑 我这样修