【发布时间】:2021-10-18 06:29:28
【问题描述】:
我正在尝试使用标准 SQS 调用 lambda 函数。我已经使用 try-catch 块处理了错误,只要捕获到错误,就会返回它。否则,将返回 200 OK 的响应消息。
我想重新处理返回错误的消息。但是 lambda 不会重新处理这些消息。 甚至保留时间段(5 分钟)> 可见性超时(1 分钟) 为什么会这样?
const { spawnSync, execSync } = require('child_process');
const fs = require('fs');
const { S3Client, GetObjectCommand, PutObjectCommand } = require("@aws-sdk/client-s3");
const { DynamoDBClient, UpdateItemCommand } = require("@aws-sdk/client-dynamodb");
const { marshall } = require('@aws-sdk/util-dynamodb');
exports.lambdaHandler = async (event) => {
try {
const body = JSON.parse(event["Records"][0]['body']);
try {
// Code base 1
// All the above imported dependencies will be used here
const response = {
statusCode: 200,
body: JSON.stringify({ message: "Function Executed" })
};
console.log('Response: ',response);
return response;
}
catch (err) {
console.log("[ERROR]: ", err);
console.log('body is: ', body);
console.log("err returning");
return err;
}
}
catch (error) {
console.log("[ERROR]: ", error);
console.log("error returning");
return error;
}
};
// Below functions are used in code base 1
// No try catch block or error hadling in below code bases
async function downloadFile() {
//code base 2
};
async function uploadFile() {
// code base 3
};
async function updateUsdz() {
// code base 4
}
【问题讨论】:
-
能贴一下你的函数代码吗?
-
@PubuduJayawardana 感谢您的回复。由于这是一个生产级代码库,因此存在一些限制。我将在上面的正文部分发布一个完善的代码库
标签: error-handling aws-lambda amazon-sqs retry-logic