【发布时间】:2017-02-25 15:45:35
【问题描述】:
嗯,我有一个问题,我在过去 2 天里一直在处理,但似乎仍然没有进展。
基本上,我正在尝试为亚马逊的回声点开发一项技能,但我的特殊技能需要使用持久数据。我查看了文档并找到了有关帐户链接和 DynamoDB 的信息,对于一个简单的研究项目而言,帐户链接似乎很复杂,所以我选择了 DynamoDB。
我使用了一个 lambda 函数,它运行良好,直到我将 DynamoDB 表行放入:
alexa.dynamoDBTableName = 'rememberThisDB';
那条线完全停止了我的技能工作并返回以下消息:
The remote endpoint could not be called, or the response it returned was invalid.
老实说,我不知道如何处理它;我对整个 AWS 概念完全陌生,所以我什至不知道如何获取 Lambda 函数返回的实际错误消息。
我更改了角色,并给了它以下配置:
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": [
"logs:CreateLogGroup",
"logs:CreateLogStream",
"logs:PutLogEvents"
],
"Resource": "arn:aws:logs:*:*:*"
},
{
"Effect": "Allow",
"Action": [
"dynamodb:DeleteItem",
"dynamodb:GetItem",
"dynamodb:PutItem",
"dynamodb:Scan",
"dynamodb:UpdateItem"
],
"Resource": "*Yes, I did put the correct ARN*"
}
]
}
但这并没有真正改变任何东西,它仍然只是返回相同的错误。
问题是,我根本没有对 DynamoDB 做任何事情,我只是定义了 alexa 对象的 dynamoDBTableName 属性,仅此而已。
是的,DynamoDB 表存在。
我觉得我的头快要炸了,所以非常感谢任何帮助。
更新:找到了如何查看日志,这是最新的日志:Error fetching user state: ValidationException: The provided key element does not match the schema,不知道为什么它会给出这个错误,因为我从来没有查询过任何东西,我唯一做的就是声明表名。
【问题讨论】:
-
你的表的架构是什么?假设您使用的是 alexa-skills-kit-sdk-for-nodejs,your table should have a single
userIdstring HASH key. -
刚刚检查,我有一个
id主索引,但没有userId,添加后它又开始工作了。我没有看到它记录在自述文件中。非常感谢你,你是一个救生员 -
嗨,亚历山大,我也有同样的问题。你找到解决方案了吗? :)
标签: node.js amazon-web-services aws-lambda amazon-dynamodb alexa