2017-02-25 23 views
0

私は過去2日間対処していて、まだ進捗がないようです。Alexa Lambda関数でDynamoDBを使用してください

基本的には、私はAmazonのエコードットのスキルを開発しようとしていますが、私の特定のスキルでは永続データを使用する必要があります。私はドキュメントにアクセスし、アカウントのリンクとDynamoDBに関する情報を見つけたので、簡単なリサーチプロジェクトのためにアカウントのリンクが複雑に見えたので、DynamoDBに行った。

私はラムダ関数を使用し、私はDynamoDBのテーブルの行を入れてまで、それがうまく走った:完全に並ぶ

alexa.dynamoDBTableName = 'rememberThisDB';

が働いてから私のスキルを停止し、次のメッセージを返します。

The remote endpoint could not be called, or the response it returned was invalid.

私は正直なところ、それに対処する方法がありません。私はAWSの概念全体を完全に新しくしているので、ラムダ関数が返す実際のエラーメッセージをどのように取得するか分からない。

私は役割を変更し、それを次のように構成与えた:

{ 
    "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テーブルが存在します。

私の頭が爆破しようとしているような気がするので、どんな助けでも大歓迎です。

UPDATE:、ログを参照する方法を見つけたが、ここでは、最新のログです: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 -for-nodejs/blob/master/lib/DynamoAttributesHelper.js#L82-L99)。 – idbehold

+0

ちょうどチェックして、私は 'id'主インデックスを持っていましたが、' userId'ではなく、それを追加してから再び動作しました。私はそれがReadmeに文書化されているのを見ませんでした。あまりにもありがとう、あなたは命の恩人です – CristianHG

+0

こんにちはアレクサンダー、私は同じ問題があります。あなたはその解決策を見つけましたか? :) –

答えて

1

ちょうどコメントで、問題の解決を文書化するので、この質問は「未回答」のままSOでないこと:

あなたはアレクサ・スキル・キット-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のテーブルのための適切なスキーマのセットアップを持っていなかったが判明しました。

関連する問題