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
属性。
另一件事是您必须在响应中传递PlainText
或SSML
以获取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