【发布时间】:2021-02-18 15:43:08
【问题描述】:
我已尝试遵循有关在 AWS 上为我的 Lambda 设置 SQS 死信队列的文档,但我似乎无法将错误传递给它。
我在eu-west-2 上有一个 Lambda
exports.handler = async (event) => {
if (event.desire === 'error') {
throw new Error('dutifully throw an error');
}
const response = {
statusCode: 200,
body: JSON.stringify('Complete the lambda!'),
};
return response;
};
将异步调用设置为我的 sqs 队列 @987654327@
我在角色中添加了以下内容:
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "",
"Effect": "Allow",
"Action": "sqs:*",
"Resource": "arn:aws:sqs:eu-west-2:123456789:test-dlq"
}
]
}
(我之前已将此设置为"Action": "sqs:SendMessage",但为了简洁起见,它变得更加宽松)
我已经设置了我的 SQS 队列来接收消息:
我的测试用例有效载荷是:
{
"desire": "error"
}
这会导致 lambda 出错并将错误添加到 CloudWatch 日志,但不会传递到 DLQ。
我需要做些什么来将错误路由到队列还是我配置错误?
【问题讨论】:
-
你是如何调用你的函数的?
-
只需使用控制台中lambda函数页面右上角的测试按钮即可。我还尝试在命令行上使用以下内容:
aws lambda invoke --function-name testFunction --payload '{"desire":"error"}' /tmp/out.json
标签: amazon-web-services aws-lambda amazon-sqs