2016-05-24 28 views
3

Cognito User Poolの "Pre-sign-up"トリガーを呼び出すDynamoDBにレコードを挿入しようとしています。Cognito User PoolトリガのAWS Lambdaエラー

ラムダ関数はテスト目的のために非常に単純ですが、AWSCognito.CognitoIdentityServiceProvider.CognitoUserPool.signUpコール

ユースケース1

ラムダ本体上のクライアントアプリケーションでエラーが常にある:

console.log('Received event:', JSON.stringify(event, null, 2)); 
は、

結果:

InvalidLambdaResponseException: Invalid lambda function output : Invalid JSON 

ユースケース2

ラムダ体:

callback("null", "success"); 

結果:

InvalidLambdaResponseException: Invalid lambda function output : Invalid JSON 

ユースケース3

ラムダ体:

new AWS.DynamoDB.DocumentClient().put(params, callback); 

結果:だから

InvalidLambdaResponseException: Invalid cognito sign in version. Version should be 1 

、間違っているかもしれないものの任意のアイデア?

最新のエラーは、Cognito User Poolのベータステータスに関連している可能性がありますか?

P.S.必要に応じて詳細を提供します。前もって感謝します。

答えて

5

これはnode.jsで行います。エラーは、サービスが期待するイベントソースを返さないことを示しています。

ラムダ関数の実行が終了したら、context.done()を呼び出す必要があります。また、Cognito User Poolサービスが生成するトリガソースのいずれかで、ソースの「応答」部分だけを編集できます。たとえば、PreSignUpトリガーソースの "autoConfirmUser"フラグ。

詳細については、developer guideの例をご覧ください。

+0

はい、正確です。私はどこかで私が '文脈 'に対処する必要があることを覚えていることを覚えていますが、1000ページの異なるドキュメンテーションの後では、すでに頭の中にちょっと混乱しています:)あなたの助けをたくさんありがとう! – Stanislau

+0

@Stanislau - ユーザープールの投稿確認トリガーでdynamodbにユーザーデータを挿入しようとしているときに、私は正確な問題に直面しています。これを解決する方法を教えてください。 –

+1

@Asa - Chetanが彼の返答で述べたように、 'context.done()'はその仕事をします。あなたのラムダ関数では、 'context.done(null、event)'または 'context.done(err)'のいずれかの点を呼び出すだけでよい(例えば 'exports.handler =(event、context)=> {"あなたのコードここで "; context.done(null、event)}' – Stanislau

0

これはあなたの問題を解決する必要がありcallback("null", event);

を返してみてください。

2

user3479125 はPythonで同じことを行うには、@だけであるようイベントを返す、またはデータセットで修正しています。

このコードは、同期イベントが正常に終了しますので、それがイベントを変更することができますし、それが戻ってそれを返す必要がありますので、モバイルデバイスとcognitoの間に実行することになっています。

さらに詳しい説明here

+0

ありがとう、Mykhail。 – kal

関連する問題