嗯,我有一個問題,我一直在處理過去兩天,似乎仍然沒有進展。使用DynamoDB和Alexa Lambda函數
基本上,我試圖開發亞馬遜的回聲點的技能,但我的特殊技能需要使用持久性數據。我參考了文檔,發現了有關帳戶鏈接和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,[您的表應該有一個'userId'字符串HASH鍵](https://github.com/alexa/alexa-skills-kit-sdk - 用於-的NodeJS /斑點/主/ LIB/DynamoAttributesHelper.js#L82-L99)。 – idbehold
剛剛檢查過,我有一個'id'主索引,但不是'userId',添加後它又開始工作。我沒有看到它在自述文件中記錄。非常感謝你,你是一個拯救生命的人 – CristianHG
嗨亞歷山大,我有同樣的問題。你有沒有找到解決方案? :) –