当AWS Lambda函数通过SQS触发器被调用时,可见性超时时间是由SQS队列控制的,而不是由Lambda函数内的设置控制。
解决方法是在SQS队列配置中设置可见性超时时间,而不是在Lambda函数内手动设置。
以下是一个示例代码,展示了如何使用AWS SDK(Node.js)来创建SQS队列并设置可见性超时时间:
const AWS = require('aws-sdk');
const sqs = new AWS.SQS({ region: 'us-west-2' });
const createQueue = async () => {
const params = {
QueueName: 'my-queue',
Attributes: {
VisibilityTimeout: '300' // 设置可见性超时时间为300秒
}
};
try {
const result = await sqs.createQueue(params).promise();
console.log(result.QueueUrl);
} catch (error) {
console.error(error);
}
};
createQueue();
在上述示例中,我们使用createQueue函数创建了一个名为my-queue的SQS队列,并通过Attributes参数设置可见性超时时间为300秒。你可以根据自己的需求调整超时时间。
通过这种方式,在Lambda函数通过SQS触发器被调用时,它将遵守在SQS队列中设置的可见性超时时间。