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

AWS-Data未从Lambda保存到DynamoDB

王才英
2023-03-14

我的任务是使用lambda向DynamoDB添加新的Cognito用户。我已经得到了一个现有的AWS Cognito用户池。到目前为止,我已经编写了一个lambda函数&用demo数据测试它,以便它可以将数据保存到Dynamodb中。但在测试时,它不会将我的数据保存到数据库中。为了获得指导,我一直在跟踪这篇文章。在这篇文章中说,在测试之后,我的DynamoDB表应该被填充。

const aws = require('aws-sdk');
const ddb = new aws.DynamoDB.DocumentClient({region: 'us-east-2'});


exports.handler = async (event, context) => {
    console.log(event);

    let date = new Date();

    const tableName = 'User';
    const region = 'us-west-2';
  
    
    console.log("table=" + tableName + " -- region=" + region);

    aws.config.update({region});


       
        let ddbParams = {
            Item: {
                'user_name': {S: event.request.userAttributes.user_name},
                'first_name': {S: event.request.userAttributes.first_name},
                'last_name': {S: event.request.userAttributes.last_name},
                'email_address': {S: event.request.userAttributes.email_address},
                'mobile_phone': {S: event.request.userAttributes.mobile_phone},
                'password': {S: event.request.userAttributes.password},
                'referred_by': {S: event.request.userAttributes.referred_by},
                'createdAt': {S: date.toISOString()}
            },
            TableName: tableName
        };

       
        try {
            await ddb.putItem(ddbParams).promise()
            console.log("Success");
        } catch (err) {
            console.log("Error", err);
        }

        console.log("Success: Everything executed correctly");
        context.done(null, event);


};
{
  "userName": "Proteeti Prova",
  "request": {
    "userAttributes": {
      "user_name": "Proteeti13",
      "first_name": "Proteeti",
      "last_name": "Prova",
      "email_address": "proteeti13@gmail.com",
      "mobile_phone": "7777777",
      "password": "ironman",
      "referred_by": "tony stark"
    }
  },
  "response": {}
}

日志输出

START.Emit(/var/runtime/node_modules/AWS-SDK/lib/request.js:688:14)在请求时。Transition(/var/runtime/node_modules/AWS-SDK/lib/request.js:22:10)在AcceptorStateMachine.runto(/var/runtime/node_modules/AWS-SDK/lib/state_machine.js:14:12)在请求时/var/runtime/node_modules/AWS-SDK/lib/state_machine.js:26:10.在请求时(/var/runtime/node_modules/AWS-SDK/lib/state_machine.js:38:9)在请求时modules/aws-sdk/lib/request.js:690:12)在request.calllisteners(/var/runtime/node_modules/aws-sdk/lib/sequential_executor.js:116:18)消息:“reque未找到sted资源“,代码:”ResourceNotFoundException“,时间:2020-10-23T07:59:49.233Z,
RequestId:'xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx',
StatusCode:400,可重试:false,retrydelay:37.83355253768394}:89 MB初始化持续时间:391.58 ms

共有1个答案

贲永思
2023-03-14

因此,根据AWS文档,ResourceNotFoundException的意思是:

您应该再次检查您的表是否存在,以及您是否使用了正确的访问键。此外,为什么要将us-east-2作为区域创建DynamoDB对象,只是为了将其在lambda中更改为us-West-2。尝试立即用正确的区域启动实例

 类似资料:
  • 我正在做一个NodeJS项目,似乎使用了非常常见的AWS设置。我的ApiGateway接收调用,触发lambda A,然后这个lambda根据从ApiGate传递的参数触发其他lambda,比如B或C。 Lambda A需要访问MongoDB,为了避免自己运行MongoDB时遇到麻烦,我决定使用mLab。ATM Lambda A正在使用NodeJS驱动程序访问MongoDB。现在,为了不在每次执行

  • 我创建了一个aws Lambda函数,它将hello world打印到控制台 使用类所在的包名和要调用的方法名配置lambda,并将jar文件上载到aws lambda函数。 当我执行lambda时,我得到一个异常,表示找不到类。 以消息作为 无法理解为什么aws无法在jar中找到类。 以下是项目配置的详细信息 项目pom:

  • 背景: 我正在通过Terraform开发一个自定义AWS github webhook。我使用AWS API网关触发一个AWS Lambda函数,该函数从请求头验证GitHub webhook的sha256签名。如果lambda函数成功验证了请求,我希望通过lambda提供的异步调用目标特性调用子lambda函数。 问题: 即使我已经使用目标子Lambda函数配置了异步调用,但当父Lambda函数

  • 我目前正在使用DynamoDB流,并期待着转向Kinesis流,因为我想控制我喜欢从流中处理的记录数量。 我一直在读有关Kinesis流和lambda的文章。有很多关于Kinesis流和EC2的多用户和KCL等的文章。 null

  • 我有一个用例,我需要将拼花文件从Lambda保存到S3。我需要以追加模式存储Lambda函数中触发的事件。 我尝试使用Avro,但它不允许将数据以追加模式存储在同一个拼花文件中。 到目前为止,我发现只要spark允许在附加模式下将数据存储在拼花文件中…然后,我可以使用Lambda提交一个存储数据的spark作业。你认为这个可能的解决方案如何? 然而,真的不存在不使用spark的解决方案吗?预先感谢

  • 我有一个Lambda函数,它在直接执行时工作得非常好。由于目前只是为了测试,它只读取请求,并返回其中一个子项的值作为响应: 然而,当我使用AWSAPI网关从中创建Api时,出现了一种奇怪的行为。如果Lambda函数包含上述代码,则响应主体为空。但是,如果我更改响应以返回整个请求正文,而不是一个子请求(在本例中为),它将返回整个请求正文。无论如何,尽管lambda函数在隔离状态下工作良好,但在API