web-dev-qa-db-ja.com

認識できないLambda出力コグニート

AWSで自動確認メカニズムを実装しようとしていますが、Lambdaの応答が原因でエラーが発生します。ドキュメントで正しい戻り値の型が見つかりません。

ラムダ:

exports.handler = (event, context, callback) => {
    event.response.autoConfirmUser = true;
    context.succeed(event.response);
};

例外:

認識できないラムダ出力(サービス:AWSCognitoIdentityProviderService;ステータスコード:400;エラーコード:InvalidLambdaResponseException;リクエストID:5c7a2436-0515-11e7-b971-41a89adf53ea)

14
KnowHoper

Cognito開発者ガイドの PreSignUpトリガーの例 に示されているように、トリガーの最後にcontext.done(null, event);またはcontext.succeed(event);を使用する必要があります。

Cognitoは、さまざまなCognitoユーザープールフローの一部として呼び出されるラムダトリガーからの応答として、完全なイベントソースが返されることを期待しています。

16
Chetan Mehta

Rubyラムダの人々、cognitoが戻したいのはイベントオブジェクトだけです。

def lambda_handler(event:, context:)
    # TODO implement
    return event
end
2
Chris

とてもシンプルです。

  1. このコードでLambda関数を作成します:

    exports.handler = function(event, context) {
    
    /* This Lambda function returns a flag to indicate if a user should be auto-confirmed.
    Perform any necessary validations.Impose a condition that the minimum length of the
    username of 5 is imposed on all user pools. */
    
       if (event.userName.length < 5) {
          var error = new Error('failed!');
          context.done(error, event);
       }
    
    /* Access your resource which contains the list of emails of users who were invited to
    sign up. Compare the list of email IDs from the request to the approved list */
    
       if(event.userPoolId === "yourSpecialUserPool") {
          if (event.request.userAttributes.email in listOfEmailsInvited) {
               event.response.autoConfirmUser = true;
          }
       }
    
       // Return result to Cognito
       context.done(null, event);
    };
    

注:役割:Lambdaの基本的な実行

  1. Cognitoコンソールからトリガーを作成し、関数lambdaを選択します。

テスト3.APIを使用してユーザーを作成し、完了します。