如何通过JavaScript调用Amazon Fraud Detector?

问题描述

我收到一个错误消息,说“ getEventPrediction”不是一个函数。我正在关注AWS文档,却找不到原因。

这是我关注的文档: https://docs.aws.amazon.com/AWSJavaScriptSDK/latest/AWS/FraudDetector.html

这是我在运行Lambda测试事件时遇到的错误

2020-10-09T21:01:54.151Z a5c86d6f-9347-49ec-9fe9-4124cd976953错误调用错误{“ errorType”:“ TypeError”,“ errorMessage”:“ frauddetector.getEventPrediction不是函数”,“堆栈“:[” TypeError:欺诈检测器.getEventPrediction不是函数“,”在Runtime.exports.handler(/var/task/index.js:18:18)“,”在Runtime.handleOnce(/ var / runtime / Runtime .js:66:25)“]}

这是Lambda函数

    const AWS = require('aws-sdk')
    const frauddetector = new AWS.FraudDetector();
     
    exports.handler = async (event) => {
    
      frauddetector.getDetectors();
      console.log('getDetectors worked 3');
      
      var params = {
          detectorId: 'new_account_fraud_detector',eventId:'123456789',eventTimestamp: '2020-07-13T23:00:03Z',eventTypeName: 'new_customer_registration',eventvariables: {'email_address':'fake_jamie11@example.com','ip_address':'1.2.3.4'},entities: [ {entityType:'customer',entityId:'12345'} ]
      };  
    
      frauddetector.getEventPrediction(params,function (err,data) {
          if (err) console.log(err,err.stack); // an error occurred
          else     console.log(data);           // successful response
      });
      
        // Todo implement
       const response = {
            statusCode: 200,body: JSON.stringify('FraudDetector : ran'),};
        return response;
    };

解决方法

Lambda运行时附带的SDK尚未与最新的Fraud Detector API更改保持最新。

GetEventPrediction在2.720.0中引入:https://github.com/aws/aws-sdk-js/blob/master/CHANGELOG.md#27200

Lambda运行时当前正在使用2.712.0:https://docs.aws.amazon.com/lambda/latest/dg/lambda-runtimes.html

,

如果其他任何人也遇到同样的问题,即lambda运行时中的aws-sdk版本不是最新的,那么按照本文中的建议创建自定义层是一个简单的解决方案:

https://aws.amazon.com/premiumsupport/knowledge-center/lambda-layer-aws-sdk-latest-version/

步骤是:

  • 创建一个新目录并cd进入其中
  • 运行npm i aws-sdk
  • 压缩cwd
  • 运行aws lambda publish-layer-version cli命令