如何验证消息是否在AWS SNS中传递?

时间:2019-11-30 09:09:15

标签: node.js amazon-web-services aws-lambda

这是我的lambda函数。仅返回message-id和request-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\"}",

2 个答案:

答案 0 :(得分:4)

如果在主题上启用delivery status feature,则可以使用消息ID字段来跟踪已发布消息的传递状态。

  

配置邮件传递状态属性后,登录   条目将发送到CloudWatch Logs,以获取发送给主题的消息   订阅了Amazon SNS终端节点。记录邮件传递状态   有助于提供更好的运营洞察力,例如:

     
      
  • 了解消息是否已传递到Amazon SNS终端节点。

  •   
  • 标识从Amazon SNS终端节点发送到Amazon SNS的响应。

  •   
  • 确定消息的停留时间(从发布时间戳记到移交给Amazon SNS端点之前的时间)。

  •   

Configuring Delivery Status Logging Using the AWS Management Console

您可以查看本文以使用消息ID查找发送状态

using-the-delivery-status-feature-of-amazon-sns

顺便说一句,我不建议签入同一lambda,而仅配置云监视日志和过滤器失败主题。这将是流

  1. 启用该主题的投放状态日志
  2. 在Cloud Watch上为失败的主题配置过滤器
  3. 如果交付状态失败则触发lambda
  4. 在lambda中处理失败的SNS主题。

您可能还喜欢SLA来使用AWS的SNS。

答案 1 :(得分:0)