2017-02-25 57 views
0

嗯,我有一個問題,我一直在處理過去兩天,似乎仍然沒有進展。使用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,不知道爲什麼它會給這個錯誤,因爲我從來沒有質疑什麼,我做的唯一的事情就是申報表名。

+1

你的表的模式是什麼?假設您使用的是alexa-skills-kit-sdk-for-nodejs,[您的表應該有一個'userId'字符串HASH鍵](https://github.com/alexa/alexa-skills-kit-sdk - 用於-的NodeJS /斑點/主/ LIB/DynamoAttributesHelper.js#L82-L99)。 – idbehold

+0

剛剛檢查過,我有一個'id'主索引,但不是'userId',添加後它又開始工作。我沒有看到它在自述文件中記錄。非常感謝你,你是一個拯救生命的人 – CristianHG

+0

嗨亞歷山大,我有同樣的問題。你有沒有找到解決方案? :) –

回答

1

只是爲了記錄這個問題的評價和分辨率,使這個問題不留「懸而未決」的SO:

假設你正在使用Alexa的技能-KIT-SDK -for-nodejs,your table should have a single userId string HASH key

var newTableParams = { 
    AttributeDefinitions: [ 
     { 
      AttributeName: 'userId', 
      AttributeType: 'S' 
     } 
    ], 
    KeySchema: [ 
     { 
      AttributeName: 'userId', 
      KeyType: 'HASH' 
     } 
    ], 
    ProvisionedThroughput: { 
     ReadCapacityUnits: 5, 
     WriteCapacityUnits: 5 
    } 
} 

原來,用戶沒有爲他們的DynamoDB表中相應的架構設置。

相關問題