node.js - 无法通过lambda从nodejs代码访问dynamodb

标签 node.js amazon-dynamodb aws-lambda aws-sdk-nodejs

我一直在尝试从 lambda 测试这一点,但无法继续。

    var Alexa = require("alexa-sdk");

    var dynamoDBConfiguration = {
        "accessKeyId": "useraccess",
        "secretAccessKey": "usersecretkey",
        "region": "us-east-1"
      };
    var AWS = require("aws-sdk");
    AWS.config.update(dynamoDBConfiguration);
    var promisify = require("es6-promisify");
    var dynClient = new AWS.DynamoDB.DocumentClient({"region":"us-east-  
    1"});


    //convert callback style functions to promises
    const dbGet = promisify(dynClient.get,dynClient);
    const dbPut = promisify(dynClient.put,dynClient);
    const dbDelete = promisify(dynClient.delete,dynClient);


    var startStateHandlers = (GAME_STATES.STARt, {
        "StartGame": function (isNewGame,context) {

            const dynamoParams = {
                TableName: "Userdata",
                Key: {
                  "UserId":"test"
                }
              }

          dbGet(dynamoParams)
                .then(data => {
                  console.log('Get user succeeded', data);
                  const userId = data.UserId;

                  if (userId != null) {                
                    console.log(data.UserName);                
                  }
                  else {
                    // no match, add the user
                    return dbPut(dynamoParams);
                  }
                })
                .then(data => {
                  console.log('Add user succeeded', data);              
                })
                .catch(err => {
                  console.error(err);
                });

               this.emit(":tell", speechOutput, speechOutput);
        }
    });
    var handlers = {    
        "LaunchRequest": function () {
            var speechOutput = "hello";
            this.emit(":tell", speechOutput, speechOutput);
        }
    };
    var handler = (function () {
        function handler(event, context, callback) {
            var alexa = Alexa.handler(event, context);
            alexa.appId = "appid";     

            alexa.registerHandlers(handlers, startStateHandlers);
            alexa.execute();
        }
        return handler;
    })();
    exports.handler = handler;

它不会在 lamda 日志中引发任何错误,并且无法在 Cloudwatch 中看到任何日志。它只是执行其他代码行。

我已将所有权限策略附加到用户并将 lamda 函数设置为 lambda_dynamo。

无法理解它出了什么问题。

感谢您的帮助。

最佳答案

var dynamoDBConfiguration = {
   "accessKeyId": "useraccess",
   "secretAccessKey": "usersecretkey",
   "region": "us-east-1"
};
var AWS = require("aws-sdk");
// update the AWS.Config global configuration object
AWS.config.update(dynamoDBConfiguration)
// Create DynamoDB document client
var dynClient = new AWS.DynamoDB.DocumentClient()

关于node.js - 无法通过lambda从nodejs代码访问dynamodb,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47426226/

相关文章:

node.js - 连接池和 lambda 终止

javascript - CouchDB 在 Node.js 中获取用户的所有帖子

python - 在 boto3 中对 DynamoDB 查询进行分页

amazon-dynamodb - 尝试的条件约束不是可索引的操作

javascript - 保证将 AWS Lambda 函数限制在指定预算内

node.js - AWS Alexa V2 中的 SSML 支持

svn - 如何为 Node.js 构建 svn 客户端库

node.js - 使用 gitlab ci cd 管道时访问 Node js 应用程序中的环境变量

php - DynamoDB 本地基本 PHP 设置

python - AWS Lambda (python) 中的 Cassandra 数据库 session 重用