AWS lambda 函数-“发生错误:收到来自 Lambda 的错误响应:已处理”

Posted

技术标签:

【中文标题】AWS lambda 函数-“发生错误:收到来自 Lambda 的错误响应:已处理”【英文标题】:AWS lambda function- 'An error has occurred: Received error response from Lambda: Handled' 【发布时间】:2017-10-23 07:39:41 【问题描述】:

使用AWS Lex 创建聊天机器人并在AWS Lambda 中使用Node.js

错误:发生错误:收到来自 Lambda 的错误响应: 已处理

Lambda 函数:

var aws = require('aws-sdk');
var ses = new aws.SES(region: 'us-east-1');

    exports.handler = function(event, context, callback) 

        var eParams = 
            Destination: 
                ToAddresses: [event.currentIntent.slots.Email]
            ,
            Message: 
                Body: 
                    Text: 
                        Data: "Hi, How are you?"
                    
                ,
                Subject: 
                    Data: "Title"
                
            ,

            Source: "abc@gmail.com"
        ;
        var email = ses.sendEmail(eParams, function(err, data)
            if(err) 
            else 

                context.succeed(event);

            
        );
    ;

成功执行后如何从 Lambda 获得对 Lex 的正确响应(电子邮件服务正常工作)。我试过context.done();,但没有成功。

编辑 1: 尝试从AWS Documentation for LEX 添加下面的响应测试仍然得到相同的错误响应。

exports.handler = (event, context, callback) =>  

callback(null,  
"dialogAction":  
"type": "ConfirmIntent", 
"message":  
"contentType": "PlainText or SSML", 
"content": "message to convey to the user, i.e. Are you sure you want a large pizza?" 
 

 


);

【问题讨论】:

您是否收到类似Received invalid response from Lambda 的错误,但这似乎是来自此处的 424 DependencyFailedException -> docs.aws.amazon.com/lex/latest/dg/API_runtime_PostText.html @yashhy 是的,我得到了错误,是的,它是 424 DependencyFailedException 知道你是如何解决这个错误的424 @yashhy 尚未解决,我认为需要使用 IAM 角色授予 lex 权限 @yashhy 在 IAM 角色中已经获得了 Post Text ' "Version": "2012-10-17", "Statement": [ "Action": [ "lex:PostText" ], "效果": "允许", "资源": "*" ] ' 【参考方案1】:

lambda-input-response-format 文档中所述,响应中需要 here fulfillmentState 属性。

另一件事是您必须在响应中传递PlainTextSSML 以获取contentType。在您的情况下,它只是 PlainText

    exports.handler = (event, context, callback) => 
      callback(null, 
        "dialogAction": 
          "type": "ConfirmIntent",
          "fulfillmentState": "Fulfilled", // <-- Required
          "message": 
            "contentType": "PlainText",
            "content": "message to convey to the user, i.e. Are you sure you want a large pizza?"
          
        
    );

上面的代码应该可以解决你的问题。

但是,如果您在网络选项卡中看到 req-res,您会收到 HTTP 错误 424,上面写着 DependencyFailedException,上面写着 “Amazon Lex 没有足够的权限来调用 Lambda 函数” em> 非常具有误导性。

【讨论】:

以上是关于AWS lambda 函数-“发生错误:收到来自 Lambda 的错误响应:已处理”的主要内容,如果未能解决你的问题,请参考以下文章

AWS Lambda Invoke 不执行 lambda 函数

AWS Lambda 无法调用没有 VPC 的另一个 AWS Lambda - NodeJs

AWS lambda 函数调用另一个带参数的 lambda 函数

是否可以重命名 AWS Lambda 函数?

AWS Lambda 函数帮助

调用 AWS Lambda Java 函数的 AWS 网关收到空正文