AWS SNSOTPメール

Dec 24 2020

AmazonSNSを活用したユーザーログイン用のOTPメッセージの送信に取り組んでいます。ここで提案するようにテキストメッセージを送信することができます。電子メール通知についても、同様のアプローチを使用したいと思います。ただし、電子メール通知の場合と同様に、トピックをSNSで作成し、アプリケーションに登録されている電子メールIDごとにサブスクライバーを作成する必要があります。

トピックとサブスクライバーを作成せずに、テキストメッセージのように動的にmail-idに電子メールを送信することはできませんか?そうでない場合は、ログインしているユーザーに基づいて電子メールIDを動的に設定する方法を提案してください。

テキストメッセージングのコード:

 public static void main(String[] args) {
    AmazonSNSClient snsClient = new AmazonSNSClient();
    String message = "My SMS message";
    String phoneNumber = "+1XXX5550100";
    Map<String, MessageAttributeValue> smsAttributes = 
            new HashMap<String, MessageAttributeValue>();
    //<set SMS attributes>
    sendSMSMessage(snsClient, message, phoneNumber, smsAttributes);
 }
 public static void sendSMSMessage(AmazonSNSClient snsClient, String message, 
    String phoneNumber, Map<String, MessageAttributeValue> smsAttributes) {
    PublishResult result = snsClient.publish(new PublishRequest()
                    .withMessage(message)
                    .withPhoneNumber(phoneNumber)
                    .withMessageAttributes(smsAttributes));
    System.out.println(result); // Prints the message ID.
 }

回答

2 JohnRotenstein Dec 24 2020 at 17:26

正しい。

Amazon SNSは通常、メッセージにPublic / Subscribeモデルを使用します。

唯一の例外は、特定の受信者にSMSメッセージを送信する機能です。

1人の受信者にメールを送信する場合は、独自のSMTPサーバー使用するか、Amazon Simple Email Service(Amazon SES)を使用する必要があります