【问题标题】:Send confirmation email, SQS or SNS aws?发送确认电子邮件、SQS 或 SNS aws?
【发布时间】:2016-11-15 17:56:13
【问题描述】:

我有一个用户可以注册的网络应用程序。
我需要向他们发送一封确认电子邮件(最后是一条短信),在这种情况下,将 SQS 与 beanstalk 工作进程或 SNS 一起使用会更好吗?

这两者有什么优势吗?

【问题讨论】:

    标签: java email amazon-web-services message-queue


    【解决方案1】:

    SNS 和 SES 有时会混淆用例。顾名思义,SNS 用于通知,可以通过电子邮件、推送通知、短信等方式发送,而 SES 仅用于电子邮件。

    对于 SNS,用户应该订阅一个主题,并在主题更新时收到来自该主题的更新。因此,对于 SNS,他需要确认历史订阅才能接收来自该主题的电子邮件。在 SES 中,用户可以接收交易或促销电子邮件,这是您的用例。

    一个好的方法是在用户注册时使用 AWS Lambda 向用户发送一封带有 SES 的确认电子邮件。

    要使用 SES 发送电子邮件而不要求用户注册,首先您需要创建 AWS 支持票证以增加使用限制。然后您只需要注册发件人电子邮件。

    之后,创建一个 AWS Lambda 函数并添加一个角色,允许它使用 SES 发送电子邮件,下面是使用 SES 和 Lambda 和 node.js 发送电子邮件的示例代码:

    var AWS = require('aws-sdk');
    
    exports.handler = (event, context, callback) => {
    
        var ses = new AWS.SES({
            apiVersion: '2010-12-01'
        });
    
        var email = event['email'];
        var email_text = '<body><h5>Hello, World!</h5></body>';
    
        ses.sendEmail({
                Source: 'My Email <myemail@example.com>',
                Destination: {
                    ToAddresses: [email]
                },
                Message: {
                    Body: {
                        Html: {
                            Data: email_text
                        },
                        Text: {
                            Data: email_text
                        }
                    },
                    Subject: {
                        Data: 'Confirmation'
                    }
                }
    
            }, function (err, data) {
                if (err) {
                    callback(null, err);
                } else {
                    callback(null, 'ok');
                }
    
            });
    }
    

    如果以后您需要发送 SNS 以获取任何类型的更新,那么您应该让用户订阅 SNS 主题并使用该服务。

    【讨论】:

      【解决方案2】:

      这取决于您要发送的电子邮件数量。如果有很多电子邮件,那么最好将这些电子邮件放到 SQS 队列中进行处理。然后,工作人员可以从队列中消费并使用 SES 将电子邮件消息发送给用户。

      如果您只有几封电子邮件要发送并且还不足以影响性能,那么您可以使用 SES 直接从您的应用程序发送电子邮件。

      您无需将用户的电话号码订阅到 SNS 主题即可向该号码发送 SMS 消息 [1]。因此,当您还想在用户注册时发送 SMS 消息时,您只需修改您的 SQS 队列处理器(或应用程序)以将 SMS 消息也发送给用户。

      [1]http://docs.aws.amazon.com/sns/latest/dg/SMSMessages.html

      【讨论】:

        猜你喜欢
        • 2016-10-31
        • 2018-03-31
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2021-04-02
        • 1970-01-01
        • 2016-09-22
        相关资源
        最近更新 更多