[英]How to verify message is delivered or not in AWS SNS?
这是我的 lambda 函数。 只返回消息 ID 和请求 ID。 但是如何验证消息是否已传递?
const AWS = require('aws-sdk');
AWS.config.update({
accessKeyId: 'xxxx',
secretAccessKey: 'xxxx',
region: 'xxxx'
});
const mobile = 'xxxxxxx';
const sns = new AWS.SNS();
const confirmUpload = (callback) => {
sns.publish({
Message: 'Test From Admin side',
Subject: 'Admin',
MessageStructure: 'string',
PhoneNumber: mobile
}, (err, result) => {
if (err) callback(false, err);
else callback(true, result);
});
};
exports.handler = (event,context, callback) => {
confirmUpload((st, data) =>{
if(st){
let record = {
"data": JSON.stringify(data),
"event": event,
"context": context
};
callback(null, (record));
} else{
callback(data, "not send");
}
});
};
这是运行 lambda 函数时的响应
"{\"ResponseMetadata\":{\"RequestId\":\"e8a07b26-d793-58e1-a529-2d7ac17aca9x\"},\"MessageId\":\"b8ecbcac-9f83-5bca-a9eb-eaf0896a69b\"}",
如果您对您的主题启用传递状态功能,您可以使用消息 ID 字段来跟踪您发布的消息的传递状态。
在您配置消息传输状态属性后,对于发送到订阅了 Amazon SNS 终端节点的主题的消息,日志条目将发送到 CloudWatch Logs。 记录消息传递状态有助于提供更好的操作洞察力,例如:
了解消息是否已传送到 Amazon SNS 终端节点。
识别从 Amazon SNS 终端节点发送到 Amazon SNS 的响应。
确定消息停留时间(发布时间戳和移交给 Amazon SNS 终端节点之前的时间)。
您可以查看本文以使用消息 ID 查找传递状态
using-the-delivery-status-feature-of-amazon-sns
顺便说一句,我不会建议签入相同的 lambda,而是仅配置云监视日志和过滤失败主题。 这里会有流量
您可能还喜欢 AWS 的 SNS SLA 。
您可以启用 SNS 死信队列来捕获无法传递给订阅者的消息:
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.