繁体   English   中英

如何从nodejs连接aws dynamodb

[英]How to connect aws dynamodb from nodejs

我正在使用aws-sdk与 dynamod 连接,我尝试了以下方法与 dynamodb 连接。

方法一

const aws_remote_config = {
      accessKeyId: process.env.ACCESS_KEY,
      secretAccessKey: process.env.SECRET_KEY,
      region: process.env.REGION,
}

express.Router().get("/test",(req,res)=>{
    AWS.config.update(aws_remote_config);
    const docClient = new AWS.DynamoDB.DocumentClient();
    const params = {
        TableName: "test"
    };
    docClient.scan(params, function (err, data) {
        if (err) {
            //console.log(err)
            res.send({
                success: false,
                message: err
            });
        } else {
            const { Items } = data;
            res.send({
                success: true,
                movies: Items
            });
        }
    });

})

我收到了这个回复

{"success":false,"message":{"message":"Requested resource not found","code":"ResourceNotFoundException","time":"2021-01-27T07:43:55.351Z","requestId":"L2MNQCL2EKUM13QED03FMK3ADJVV4KQNSO5AEMVJF66Q9ASUAAJG","statusCode":400,"retryable":false,"retryDelay":14.298055549242983}}

方法二

const aws_remote_config = {
      accessKeyId: process.env.ACCESS_KEY,
      secretAccessKey: process.env.SECRET_KEY,
      region: process.env.REGION,
}

express.Router().get("/test",(req,res)=>{
    AWS.config.update(aws_remote_config);
    const docClient = new AWS.DynamoDB.DocumentClient();
    const params = {
        TableName: "test"
    };
    var dynamodb = new AWS.DynamoDB();
     var param = {}
    dynamodb.listTables(param, function (err, data) {
        if (err) console.log(err, err.stack); // an error occurred
        else     console.log("Sussess data",data);     
    });
})

我懂了

Sussess data { TableNames: [] }

方法三

// i tried to connect like this

AWS.config.loadFromPath('../../config/db.json');
// path is correct, i checked by console.log(require('../../config/db.json'));

我懂了

Error: ENOENT: no such file or directory, open '../../config/db.json'
    at Object.openSync (fs.js:462:3)
    at Object.readFileSync (fs.js:364:35)
    at Object.readFileSync (C:\Users\Rahul kumar\desktop\Projects\merchent-backend\node_modules\aws-sdk\lib\util.js:95:26)
    at Config.loadFromPath (C:\Users\Rahul kumar\desktop\Projects\merchent-backend\node_modules\aws-sdk\lib\config.js:473:39)
    at C:\Users\Rahul kumar\desktop\Projects\merchent-backend\routes\user\test.js:9:16
    at Layer.handle [as handle_request] (C:\Users\Rahul kumar\desktop\Projects\merchent-backend\node_modules\express\lib\router\layer.js:95:5)
    at next (C:\Users\Rahul kumar\desktop\Projects\merchent-backend\node_modules\express\lib\router\route.js:137:13)
    at Route.dispatch (C:\Users\Rahul kumar\desktop\Projects\merchent-backend\node_modules\express\lib\router\route.js:112:3)
    at Layer.handle [as handle_request] (C:\Users\Rahul kumar\desktop\Projects\merchent-backend\node_modules\express\lib\router\layer.js:95:5)
    at C:\Users\Rahul kumar\desktop\Projects\merchent-backend\node_modules\express\lib\router\index.js:281:22

我同意另一个答案:方法 #2 似乎有效。 一点是listTables不需要任何 arguments 即可成功。 两个arguments...

  • Limit是可选的; 默认为 100
  • ExclusiveStartTableName也是可选的。 仅当您通过一长串表名“分页”并需要获取下一页时才应提供它。

长话短说,这...

Sussess data { TableNames: [] }

... 显示您通过身份验证的帐户没有任何 DynamoDB 表。 所以表名数组是空的。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM