gpt4 book ai didi

node.js - NodeJS Lambda 调用错误 : Unable to stringify response body

转载 作者:行者123 更新时间:2023-12-04 01:14:20 31 4
gpt4 key购买 nike

创建了一个 Lambda 函数以从 AWS Textract API 获取分析。这是相关代码(Node.js 12)

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

let request = textract.getDocumentAnalysis(params);
request.send((err, data) => {
if (err) console.log(err, err.stack);
else console.log(data);
});

callback(null, request);
};
在 CloudWatch 日志中收到此错误:
ERROR   Invoke Error    
{
"errorType": "Error",
"errorMessage": "Unable to stringify response body",
"stack": [
"Error: Unable to stringify response body",
" at _trySerializeResponse (/var/runtime/RAPIDClient.js:175:11)",
" at RAPIDClient.postInvocationResponse (/var/runtime/RAPIDClient.js:45:22)",
" at complete (/var/runtime/CallbackContext.js:33:12)",
" at callback (/var/runtime/CallbackContext.js:43:7)",
" at /var/runtime/CallbackContext.js:104:16",
" at Runtime.exports.handler (/var/task/index.js:92:5)",
" at Runtime.handleOnce (/var/runtime/Runtime.js:66:25)"
]
}
当我修改回调时: callback(null, request.X) ... lambda 从 Textract 返回数据对象。起初我认为我必须深入到数据对象 (request.DocumentMetadata) 中……但可以处理我放在“请求”前面的任何字符串。 (至少我试过的那些)。对此的任何帮助表示赞赏。

最佳答案

由于密切关注 AWS SDK API 文档,我使用了上述方法。但是,我找到了另一种方法,它解决了所有问题(很多)。也许有人可以解释原因。
这是解决方案。

let results = await textract.getDocumentAnalysis(params, (err, data) => {
if(err) console.log(err, err.stack);
else console.log(data);
}).promise();

callback(null, results);
答案与 aws-skd(用于 js)有关。这是网址:
https://docs.aws.amazon.com/AWSJavaScriptSDK/latest/AWS/Request.html#promise-property[][1]
对于任何异步请求(认为所有或大部分 AWS api 请求都是异步的),您需要一个 Promise...then。对于 AWS 请求,您需要一个“thenable” promise ......所以在请求的末尾添加:promise()
直接来自 AWS 文档,我认为这可能有点神秘:
var request = s3.putObject({Bucket: 'bucket', Key: 'key'});
var result = request.promise();
result.then(function(data) { ... }, function(error) { ... });
如果我像这样写上面的:
async function(){
const params = {Bucket: 'bucket', Key: 'key'};
await s3.putObject(params, (err, data) => {
if (err) function(err){ ... };
else function(data) { ... };
}).promise();
};

关于node.js - NodeJS Lambda 调用错误 : Unable to stringify response body,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63838583/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com