使用AWS NodeJS Lambda读取AWS dynamoDB中的过滤数据

斯蒂芬·格兰隆(StéphaneGRILLON)

我想将元素从DynamoDB获取到我的NodeJS AWS Lambda。我想由“所有者”列选择,但不起作用。我尝试对“ id”列使用相同的语法,但结果没问题。在dynamoDB中添加索引?在哪里?

'use strict';

var AWS = require('aws-sdk');
var documentClient = new AWS.DynamoDB.DocumentClient({'region': 'eu-west-1'}); 

exports.handler = function(event, context, callback) {
  
  console.log(JSON.stringify(event));

  const claims = event.requestContext.authorizer.claims;
  const username = claims['cognito:username'];
  
  var params = {
    TableName : "tp-exam",
      Key: {
        owner: username 
      }
  };
  
    documentClient.get(params, function(err, data){
      if (err) {
      console.log("Error", err);
      const errResponse = {
        statusCode: 500,
        headers: {
          "Access-Control-Allow-Origin": "*"
        },
        body: JSON.stringify({ Error: 500, device : "DynamoDB"})
      };
      callback(null, errResponse);
    } else {
      console.log("Success", data.Item);
      const response = {
        statusCode: 200,
        headers: {
          "Access-Control-Allow-Origin": "*"
        },
        body: JSON.stringify(data.Item)
      };
        callback(null, response);
    }
        
    });

};

我的错误是:

ValidationException: The provided key element does not match the schema
    at Request.extractError (/var/runtime/node_modules/aws-sdk/lib/protocol/json.js:52:27)
    at Request.callListeners (/var/runtime/node_modules/aws-sdk/lib/sequential_executor.js:106:20)
    at Request.emit (/var/runtime/node_modules/aws-sdk/lib/sequential_executor.js:78:10)
    at Request.emit (/var/runtime/node_modules/aws-sdk/lib/request.js:688:14)
    at Request.transition (/var/runtime/node_modules/aws-sdk/lib/request.js:22:10)
    at AcceptorStateMachine.runTo (/var/runtime/node_modules/aws-sdk/lib/state_machine.js:14:12)
    at /var/runtime/node_modules/aws-sdk/lib/state_machine.js:26:10
    at Request.<anonymous> (/var/runtime/node_modules/aws-sdk/lib/request.js:38:9)
    at Request.<anonymous> (/var/runtime/node_modules/aws-sdk/lib/request.js:690:12)
    at Request.callListeners (/var/runtime/node_modules/aws-sdk/lib/sequential_executor.js:116:18) {
  code: 'ValidationException',
  time: 2021-03-01T21:46:40.263Z,
  requestId: 'C7UHG8354A92SGP2T4FRRFU4GFVV4KQNSO5AEMVJF66Q9ASUAAJG',
  statusCode: 400,
  retryable: false,
  retryDelay: 32.73628085995177
}
Balu vyamajala

我们需要一个全局二级索引来获取或查询备用键。

在此处输入图片说明

并使用GSI进行查询,我们需要使用查询api。

let docClient = new AWS.DynamoDB.DocumentClient();

documentClient.query(
  {
    TableName: "tp-exam",
    IndexName: "owner-index",
    KeyConditionExpression: "#owner_attr = :ownerVal",
    ExpressionAttributeValues: {
      ":ownerVal": "John",
    },
    ExpressionAttributeNames: {
      "#owner_attr": "owner",
    },
  },
  function (err, data) {
    console.log("err", err, "data", data);
  }
);

owner 是保留关键字,因此,我们需要使用ExpressAttributeNames替换为实际属性。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何在以NodeJs编写的AWS Lambda中读取表单数据?

来自分类Dev

使用AWS Lambda(NodeJS)创建AWS AppSync

来自分类Dev

使用AWS Lambda(nodejs)获取twilio使用情况数据

来自分类Dev

使用AWS Lambda(节点)的AWS DynamoDB中的UpdateItem

来自分类Dev

如何在Jest中为无服务器Nodejs Lambda模拟AWS DynamoDB?

来自分类Dev

在AWS上使用Titan DynamoDB并从NodeJs查询

来自分类Dev

在AWS上使用Titan DynamoDB并从NodeJs查询

来自分类Dev

使用特定的选项或环境变量在AWS lambda中启动NodeJS运行时

来自分类Dev

如何使用 nodejs 10x 向 aws lambda 中的外部 api 发送发布请求?

来自分类Dev

如何停止 AWS Lambda [Nodejs]

来自分类Dev

AWS Lambda上NodeJS EventEmitter中的异步功能

来自分类Dev

用于 AWS Lambda 的 NodeJS 中的子回调

来自分类Dev

如何在 AWS Lambda 的块中执行我的 nodejs 代码

来自分类Dev

在Lambda中读取AWS S3 CSV列名称

来自分类Dev

在Alexa Skill中调试AWS Lambda函数的“读取超时”

来自分类Dev

AWS Chalice:在Python中读取Lambda环境变量

来自分类Dev

使用aws-lambda将数据插入DynamoDB

来自分类Dev

AWS lambda 使用来自 DynamoDB 的数据编辑 html 模板

来自分类Dev

使用 NodeJS 读取数据时,DynamoDB StringSet 会自动解组

来自分类Dev

AWS Lambda使用NodeJs进行PostgreSQL-超时错误

来自分类Dev

如何使用NodeJS改善AWS Lambda函数的性能?

来自分类Dev

不使用 accessKeyId 和 secretAccessKey 的 AWS lambda nodejs 函数?

来自分类Dev

如何使用给定模板生成PDF,并使用Python或NodeJS中的动态数据将其部署在AWS上

来自分类Dev

从AWS Lambda(NodeJS)发送SSH命令

来自分类Dev

AWS Lambda如何支持不同版本的NodeJS

来自分类Dev

AWS Lambda NodeJS启动EMR Spark问题

来自分类Dev

NodeJS AWS Lambda ListObject返回空数组

来自分类Dev

AWS Lambda NodeJS - OAuth 到 Google API

来自分类Dev

从AWS Lambda读取SQS队列

Related 相关文章

  1. 1

    如何在以NodeJs编写的AWS Lambda中读取表单数据?

  2. 2

    使用AWS Lambda(NodeJS)创建AWS AppSync

  3. 3

    使用AWS Lambda(nodejs)获取twilio使用情况数据

  4. 4

    使用AWS Lambda(节点)的AWS DynamoDB中的UpdateItem

  5. 5

    如何在Jest中为无服务器Nodejs Lambda模拟AWS DynamoDB?

  6. 6

    在AWS上使用Titan DynamoDB并从NodeJs查询

  7. 7

    在AWS上使用Titan DynamoDB并从NodeJs查询

  8. 8

    使用特定的选项或环境变量在AWS lambda中启动NodeJS运行时

  9. 9

    如何使用 nodejs 10x 向 aws lambda 中的外部 api 发送发布请求?

  10. 10

    如何停止 AWS Lambda [Nodejs]

  11. 11

    AWS Lambda上NodeJS EventEmitter中的异步功能

  12. 12

    用于 AWS Lambda 的 NodeJS 中的子回调

  13. 13

    如何在 AWS Lambda 的块中执行我的 nodejs 代码

  14. 14

    在Lambda中读取AWS S3 CSV列名称

  15. 15

    在Alexa Skill中调试AWS Lambda函数的“读取超时”

  16. 16

    AWS Chalice:在Python中读取Lambda环境变量

  17. 17

    使用aws-lambda将数据插入DynamoDB

  18. 18

    AWS lambda 使用来自 DynamoDB 的数据编辑 html 模板

  19. 19

    使用 NodeJS 读取数据时,DynamoDB StringSet 会自动解组

  20. 20

    AWS Lambda使用NodeJs进行PostgreSQL-超时错误

  21. 21

    如何使用NodeJS改善AWS Lambda函数的性能?

  22. 22

    不使用 accessKeyId 和 secretAccessKey 的 AWS lambda nodejs 函数?

  23. 23

    如何使用给定模板生成PDF,并使用Python或NodeJS中的动态数据将其部署在AWS上

  24. 24

    从AWS Lambda(NodeJS)发送SSH命令

  25. 25

    AWS Lambda如何支持不同版本的NodeJS

  26. 26

    AWS Lambda NodeJS启动EMR Spark问题

  27. 27

    NodeJS AWS Lambda ListObject返回空数组

  28. 28

    AWS Lambda NodeJS - OAuth 到 Google API

  29. 29

    从AWS Lambda读取SQS队列

热门标签

归档