amazon-web-services - 使用 aws sns 从 Java Web 应用程序发送短信

标签 amazon-web-services amazon-sns

用户将在我的 Web 应用程序上创建一个帐户。该应用程序需要通过向用户提供的手机号码发送短信来验证用户身份。文本消息是一个简短的唯一代码,用户需要在网络浏览器中输入该代码,以便应用程序对用户进行身份验证。

如何为此用例配置 Amazon AWS SNS?

据我所知,SNS 是由网站管理员选择 topic 来运作的。然后每个用户订阅该主题。然后站长将消息广播样式发送给该主题的所有订阅者。这不符合我向每个用户发送唯一消息的要求。或者,创建一个单独的 topic对于每个电话号码都太麻烦了,更不用说在保护所有电话号码的隐私方面造成安全问题。

可以为此用例配置 Amazon AWS SNS 吗?如果是这样,如何?

我正在使用 Java。

最佳答案

AWS 开发工具包中已弃用某些方法。

BasicAWSCredentials awsCredentials = new BasicAWSCredentials("CLIENT-ID", "SECRET-KEY");
AmazonSNS snsClient = AmazonSNSClientBuilder.standard()
                     .withRegion(Regions.fromName("YOUR_REGION"))
     .withCredentials(new AWSStaticCredentialsProvider(awsCredentials)).build();

Map<String, MessageAttributeValue> smsAttributes = new HashMap<String, MessageAttributeValue>();
smsAttributes.put("AWS.SNS.SMS.SenderID",new MessageAttributeValue().withStringValue("SENDER-ID").withDataType("String");
smsAttributes.put("AWS.SNS.SMS.SMSType",new MessageAttributeValue().withStringValue("Transactional").withDataType("String"));

PublishRequest request = new PublishRequest();
request.withMessage("YOUR MESSAGE")
.withPhoneNumber("E.164-PhoneNumber")
.withMessageAttributes(smsAttributes);
PublishResult result=snsClient.publish(request);

关于amazon-web-services - 使用 aws sns 从 Java Web 应用程序发送短信,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31466916/

相关文章:

amazon-web-services - 如何从 aws ec2 命令获取 IP 地址

amazon-web-services - Terraform:特定于 ubuntu 20.08 LTS AWS 的 AMI 列表

ruby-on-rails - Elasticsearch::Transport::Transport::Errors::Forbidden: [403] 发送超过 1200 个字符的文本字段时出错

ios - 如何通过 AWS SNS 实现类似推特的推送通知?

amazon-web-services - 如何提示 AWS SNS 向 Cloudformation 创建的订阅发送确认消息?

amazon-web-services - 具有自定义授权方的无服务器 lambda 单元测试处理程序

php - 无法将我的凭证传递给 AWS PHP SDK

amazon-web-services - 使用 API Gateway 发布 SNS 主题/使用 API Gateway 的多个 lambda 函数

ios - iOS 推送通知的 AWS SNS 声音未发生

ios - ionic 版本 1 推送通知 cordova-ios 4.4.0