我正在尝试从Lambda函数写入DynamoDB表。当我测试运行这个函数时,它返回null,没有错误消息,也没有任何东西写入表中。功能如下。我已经为这个功能设置了一个服务角色,它具有允许访问“产品”表的权限策略。我看到一些教程提到创建一个“AWS Lambda应用程序”,然后创建Lambda函数,但我不认为这对我的使用是必要的。
const AWS = require('aws-sdk');
const dynamodb = new AWS.DynamoDB({apiVersion: '2012-08-10'});
exports.handler = async (event, context, callback) => {
dynamodb.putItem({
TableName: "Products",
Item: {
"sku": {S: "29574839"},
"name": {S: "Test Code"}
}
}, function(err, data) {
if (err) {
console.log(err, err.stack);
return callback(null, {
statusCode: '500',
body: err
});
} else {
return callback(null, {
statusCode: '200',
body: 'Adding to table!'
});
}
});
};
我还尝试过使用文档客户端 const docClient = new dynamodb。DocumentClient();
我得到的错误是:“发电机。文档客户端不是构造函数“。
我在这里错过了什么?谢谢
CloudWatch日志显示(我删除了请求Id):函数日志:开始请求Id:版本:$最新结束请求Id:报告请求id:持续时间:491.07毫秒计费持续时间:500毫秒内存大小:128 MB最大已用内存:87 MB初始化持续时间:405.37毫秒
由于您使用的是异步处理程序,我认为问题在于您的函数在处理程序的主体有机会运行之前完成。
纠正这种情况的一种方法是使用Promise
,如AWS文档中所示。例如:
const AWS = require('aws-sdk');
const dynamodb = new AWS.DynamoDB({apiVersion: '2012-08-10'});
exports.handler = async (event, context, callback) => {
const promise = new Promise(function(resolve, reject) {
dynamodb.putItem({
TableName: "Products",
Item: {
"sku": {S: "29574839"},
"name": {S: "Test Code"}
}
}, function(err, data) {
if (err) {
console.log(err, err.stack);
return callback(null, {
statusCode: '500',
body: err
});
} else {
return callback(null, {
statusCode: '200',
body: 'Adding to table!'
});
}
});
})
return promise;
};
上述变化仅是示例性的,因此可能仍需要一些调整。
我正在使用JSON结构来存储一个人的详细信息。基本上姓名,电话,注册时间戳等,将是其他属性,主键将是电子邮件地址。 MarkedLocation、visitedLocations、searchHistory和recommendation是AWS所称的列表或地图。它将包含许多JSON对象。 JSON结构- 在应用程序中,如果用户访问一个新位置,我需要向markedLocations添加一个新的JSO
在阅读AWS DynamoDB留档时,我看到它不建议创建多个表。但是当我们将json格式化的数据放在DynamoDB表中时,应该是创建具有许多级别(例如10)的嵌套json内容的属性还是具有较少级别的多个属性?我想这是逐案处理的。但我想知道的是设计DynamoDB表时的一般规则。阅读AWS文档后,我仍然感到困惑,所以我在这里发布问题。谢谢!
我正在尝试为ElasticCache启用VPC lambda函数以访问DynamicDB。我知道为此,我需要设置一个NAT网关。然而,我无法使它工作。我的专用子网在172.31..范围内。 以下是我遵循的步骤: < li >创建一个ip范围为10.0.0.0的公共子网。 < li >在上述相同的IP范围内创建一个公共VPC。 < li >在公共VPC创建公共互联网网关。 < li >创建一个公共路
我正在尝试使用新的Amazon DynamoDB JSON API在称为“文档”的JSON属性中添加/覆盖键值对。理想情况下,我想简单地构建我的写入调用以发送KV对以添加到属性中,如果给定主键不存在该属性,则让Dynamo创建该属性。但是,如果我只使用简单的来尝试: 我得到了无效,这意味着DynamoDB无法找到要应用更新的名为“document”的给定属性。 我设法通过以下一系列调用来近似此功能
我在尝试将Spring与Hibernate集成时遇到了一些问题。从日志中,表和数据库似乎已经创建,但我找不到数据库文件,在检查sessionFactory时,我得到了nullpointer异常,我无法真正理解发生了什么。 以下是我的配置文件: null 编辑:这是UtenteDaoImpl类,它不做任何事情,因为它继承了BaseDao的东西。
我有一个向服务器发送数据的调用。如果一切正常,服务器会返回一个无效的响应。但是当有错误时,我会得到数据。 当有错误时,为了管理这个情况,我有一个对象。问题是,当请求成功时,改造会抛出一个异常,消息是: