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

无法在本地查询lambda格式的dynamodb GSI

单于海荣
2023-03-14
const AWS = require("aws-sdk");
const db = new AWS.DynamoDB.DocumentClient({
  region: process.env.REGION,
  apiVersion: "2012-08-10",
});


 const params = {
  // ProjectionExpression: ["province", "gender", "updatedAt", "createdAt"],
  ExpressionAttributeValues: {
    ":provinceVal": "Sichuan",
  },
  IndexName: "RegistreesByProvince",
  KeyConditionExpression: "province = :provinceVal",
  TableName: process.env.API_PORTAL_SUBMISSIONSTABLE_NAME,
};

const calculateStatistics = async () => {
  try {
    const data = await db.query(params).promise();
    console.log(data);
  } catch (err) {
    console.log(err);
  }
};

const resolvers = {
  Query: {
    getStatistics: () => {
      return calculateStatistics();
    },
  },
};
exports.handler = async (event) => {
  // TODO implement
  const typeHandler = resolvers[event.typeName];
  if (typeHandler) {
    const resolver = typeHandler[event.fieldName];
    if (resolver) {
      var result = await resolver(event);
      return result;
    }
  }
}; // };
     { UnknownEndpoint: Inaccessible host: `dynamodb.us-east-1-fake.amazonaws.com'. This service may not be available in the `us-east-1-fake' region.
    at Request.ENOTFOUND_ERROR (/Users/apple/Documents/work/web/portal/amplify/backend/function/calcStatistics/src/node_modules/aws-sdk/lib/event_listeners.js:501:46)
    at Request.callListeners (/Users/apple/Documents/work/web/portal/amplify/backend/function/calcStatistics/src/node_modules/aws-sdk/lib/sequential_executor.js:106:20)
    at Request.emit (/Users/apple/Documents/work/web/portal/amplify/backend/function/calcStatistics/src/node_modules/aws-sdk/lib/sequential_executor.js:78:10)
    at Request.emit (/Users/apple/Documents/work/web/portal/amplify/backend/function/calcStatistics/src/node_modules/aws-sdk/lib/request.js:688:14)
    at ClientRequest.error (/Users/apple/Documents/work/web/portal/amplify/backend/function/calcStatistics/src/node_modules/aws-sdk/lib/event_listeners.js:339:22)
    at ClientRequest.<anonymous> (/Users/apple/Documents/work/web/portal/amplify/backend/function/calcStatistics/src/node_modules/aws-sdk/lib/http/node.js:96:19)
    at ClientRequest.emit (events.js:198:13)
    at ClientRequest.EventEmitter.emit (domain.js:448:20)
    at TLSSocket.socketErrorListener (_http_client.js:401:9)
    at TLSSocket.emit (events.js:198:13)
  message:
   'Inaccessible host: `dynamodb.us-east-1-fake.amazonaws.com\'. This service may not be available in the `us-east-1-fake\' region.',
  code: 'UnknownEndpoint',
  region: 'us-east-1-fake',
  hostname: 'dynamodb.us-east-1-fake.amazonaws.com',
  retryable: true,
  originalError:
   { Error: getaddrinfo ENOTFOUND dynamodb.us-east-1-fake.amazonaws.com dynamodb.us-east-1-fake.amazonaws.com:443
       at GetAddrInfoReqWrap.onlookup [as oncomplete] (dns.js:56:26)
     message:
      'getaddrinfo ENOTFOUND dynamodb.us-east-1-fake.amazonaws.com dynamodb.us-east-1-fake.amazonaws.com:443',
     errno: 'ENOTFOUND',
     code: 'NetworkingError',
     syscall: 'getaddrinfo',
     hostname: 'dynamodb.us-east-1-fake.amazonaws.com',
     host: 'dynamodb.us-east-1-fake.amazonaws.com',
     port: 443,
     region: 'us-east-1-fake',
     retryable: true,
     time: 2020-08-12T10:18:08.321Z },
  time: 2020-08-12T10:18:08.321Z }
Result:
null
Finished execution.

PS:值得一提的是,我能够通过Appsync控制台成功地查询到这些数据,这让我坚信问题出在函数本身。

共有1个答案

宋俊艾
2023-03-14

在做了更多的研究和四处询问后,我终于明白了github上提供给我的答案

当对一个可以访问由API生成的dynamodb表的函数运行mock时。它将用假值填充env。如果您想根据部署的dynamodb表模拟lambda函数,可以编辑sdk客户机中的值,这样它就可以准确地进行调用。

总之,如果您在本地运行,那么您将无法访问您可能尝试模拟的后端变量。我希望这能帮助到某人。谢了!

 类似资料:
  • 我有一个问题,也许有人可以帮助我。我正在尝试构建一个简单的java aws lambda并使用无服务器框架部署它。 我试图建立一个简单的lambda使用: 当我尝试使用调用远程函数时 它起作用了。 但是,当我尝试在本地调用它时,出现以下错误: 编辑:要在本地运行它,我使用: 我在谷歌上搜索了一下,什么也没找到。我不理解这个错误。看起来像是关于maven的?

  • 问题内容: 我有一个关于Spring + Thymeleaf日期格式的问题。我有一个简单的实体与领域。我想以表单形式从用户那里获取此日期并将其保存到MySQL数据库。我收到这样的错误: 无法将类型java.lang.String的属性值转换为属性日期所需的类型java.time.LocalDate;嵌套异常是org.springframework.core.convert.ConversionFa

  • 问题内容: 有时,当我在Eclipse中调试代码时,虽然我可以毫无困难地查看和检查类成员变量,但是却无法检查在函数中本地声明的变量的值。顺便说一句,当前函数的任何参数都将丢失其“真实”名称,而是将其在“变量”窗口中列出的值视为arg0,arg1,arg2等,但至少这些值是可见的。 目前,这与核心JDK中定义的类有关。我已验证安装的当前JRE是JDK。 有人能阐明这种行为吗? 问题答案: 显然,答案

  • 作为最近一个项目的一部分,我们的Solr搜索引擎升级到了5.0.0。运行客户机的程序在生产/qa中运行良好,但当我在本地系统上运行该程序时,会收到以下错误消息: 这个例外来自apache-solr-solrj-1.4.1。罐子,我想应该换掉。但当我检查(正在运行的)生产代码时,相同的jar文件就在那里。 但是,生产服务器上的java版本已升级为java版本“1.7.0_79”。在我的本地系统上,我

  • 问题内容: 我正在尝试使用elasticsearch和ruby-on- rails建立一个现有项目。我可以启动并运行该项目,但是elasticsearch查询为我返回了各种错误消息,而我的同事都没有: 这显然使我相信这与我的设置有关。我已经安装了它们的相同版本(2.4),但是即使项目附带了setup命令,也是如此: 给我超时错误。我已经检查并且服务正在运行。如果我在此方面呆了2天,将对我的设置有什

  • 问题内容: 由于ORFirestore中没有逻辑运算符,因此我尝试在本地合并2个单独的查询。 现在,我想知道如何保持结果的正确顺序。当我独立运行2个查询时,我无法明确地查询结果(至少不是我使用该orderBy方法从Firestore获取结果的顺序)。 我的想法是将第二个查询放在第一个查询的内部。这是一个坏主意的表现明智的选择吗? 问题答案: 要在本地合并2个单独的查询,建议您使用方法。您可以使用以