Amazon Simple Notification Service
开发人员指南 (API Version 2010-03-31)
AWS 服务或AWS文档中描述的功能,可能因地区/位置而异。点 击 Getting Started with Amazon AWS to see specific differences applicable to the China (Beijing) Region.

设置发送 SMS 消息的首选项

使用 Amazon SNS 指定发送 SMS 消息的首选项,例如如何优化消息传输(在成本或可靠传输方面)、您的每月支出限额、如何记录消息传输以及是否要订阅每日 SMS 使用量报告。

这些首选项对从您的账户发送的每个 SMS 消息有效,但在您发送各条消息时可覆盖部分设置。有关更多信息,请参阅 发送 SMS 消息

设置首选项(控制台)

  1. 通过以下网址登录 AWS 管理控制台 并打开 Amazon SNS 控制台:https://console.amazonaws.cn/sns/v2/home

  2. 在控制台菜单上,将区域选择器设置为支持 SMS 消息的区域

  3. 在导航窗格中,选择 Text messaging (SMS)

  4. Text messaging (SMS) 页面,选择 Manage text messaging preferences

  5. Text messaging preferences 页面上,对于 Default message type,请选择您经常发送的 SMS 消息类型:

    • Promotional(默认)– 不重要的消息,例如营销消息。Amazon SNS 以产生最低成本为基准来优化消息传输。

    • Transactional – 为客户事务处理提供支持的重要消息,例如多重身份验证的一次性密码。Amazon SNS 以实现最高可靠性为基准来优化消息传输。

    您可以在发送消息时覆盖此设置。

    有关促销和事务处理消息的定价信息,请参阅全球 SMS 定价

  6. 对于 Account spend limit,请输入您在每个日历月想要为 SMS 消息支付的最高金额,以 USD 为单位。如果 Amazon SNS 确定发送 SMS 消息会产生超出当月支出限额的成本,Amazon SNS 会在几分钟内停止发布 SMS 消息。

    重要

    由于 Amazon SNS 是分布式系统,它会在几分钟的时间间隔内停止发送 SMS 消息。在该间隔内,如果您继续发送 SMS 消息,可能会产生超出限额的成本。

    默认情况下,支出限额设为 1.00 USD。如果您要提高限额,请提交 SNS 限额提高案例。在 New limit value 中,输入所需的每月支出限额。在 Use Case Description 字段中,说明您想请求提高每月的 SMS 支出限额。

  7. 对于 IAM role for CloudWatch Logs access,请创建允许 Amazon SNS 在 CloudWatch Logs 中写入 SMS 传输日志的 IAM 角色:

    1. 选择 Create IAM role

    2. SNS is requesting permission to use resources in your account 页面上,选择 Allow

  8. 对于 Default percentage of success to sample,请指定 Amazon SNS 将在 CloudWatch Logs 中写入日志的 SMS 成功传输的百分比。例如,如果只希望将失败传输写入日志,请将此值设为 0。要将 10% 的成功传输写入日志,请将其设为 10。如果您不指定百分比,Amazon SNS 会将所有成功传输写入日志。

  9. 对于 Default sender ID,请输入最多包含 11 个字母数字字符的自定义 ID,其中包括至少一个字母,不能有空格。该发件人 ID 在接收设备上显示为消息发件人。例如,您可以使用自己的企业品牌让消息来源更易于识别。

    对发件人 ID 的支持因国家/地区而异。例如,发送至美国电话号码的消息不显示发件人 ID。有关支持发件人 ID 的国家/地区,请参阅 支持的区域和国家/地区

    如果不指定发件人 ID,在支持的国家/地区,消息会显示一个长代码作为发件人 ID。对于要求使用字母作为发件人 ID 的国家/地区,消息的发件人 ID 显示为 NOTICE

    您可以在发送消息时覆盖此设置。

  10. 对于 Reports storage,请输入要用于从 Amazon SNS 接收每日 SMS 使用量报告的 Amazon S3 存储桶的名称。只有在您指定了接收每日使用量报告的 Amazon S3 存储桶后,Amazon SNS 才会创建报告。有关更多信息,请参阅 查看每日 SMS 使用量报告

  11. 选择 Update preferences

设置首选项(AWS 开发工具包)

要使用一个 AWS 开发工具包设置您的 SMS 首选项,请使用该 SDK 中对应 Amazon SNS API 中的 SetSMSAttributes 请求的操作。通过此请求,您可以分配不同 SMS 属性的值,例如您的每月支出限额和默认 SMS 类型(促销或事务)。有关所有 SMS 属性的信息,请参阅 Amazon Simple Notification Service API Reference 中的 SetSMSAttributes

设置首选项 (AWS SDK for Java)

以下示例使用 AmazonSNSClient 类的 setSMSAttributes 方法设置不同属性名称的值:

Copy
public static void main(String[] args) { AmazonSNSClient snsClient = new AmazonSNSClient(); setDefaultSmsAttributes(snsClient); } public static void setDefaultSmsAttributes(AmazonSNSClient snsClient) { SetSMSAttributesRequest setRequest = new SetSMSAttributesRequest() .addAttributesEntry("DefaultSenderID", "mySenderID") .addAttributesEntry("MonthlySpendLimit", "1") .addAttributesEntry("DeliveryStatusIAMRole", "arn:aws:iam::123456789012:role/mySnsRole") .addAttributesEntry("DeliveryStatusSuccessSamplingRate", "10") .addAttributesEntry("DefaultSMSType", "Transactional") .addAttributesEntry("UsageReportS3Bucket", "sns-sms-daily-usage"); snsClient.setSMSAttributes(setRequest); Map<String, String> myAttributes = snsClient.getSMSAttributes(new GetSMSAttributesRequest()) .getAttributes(); System.out.println("My SMS attributes:"); for (String key : myAttributes.keySet()) { System.out.println(key + " = " + myAttributes.get(key)); } }

此示例将 MonthlySpendLimit 属性的值设为 1.00 USD。默认情况下,该值是 Amazon SNS 允许的最大金额。如果您要提高此限额,请提交 SNS 限额提高案例。在 New limit value 中,输入所需的每月支出限额。在 Use Case Description 字段中,说明您想请求提高每月的 SMS 支出限额。

为了验证是否正确设置了属性,该示例打印出 getSMSAttributes 方法的结果。运行此示例时,属性会显示在 IDE 控制台的输出窗口中:

Copy
My SMS attributes: DeliveryStatusSuccessSamplingRate = 10 UsageReportS3Bucket = sns-sms-daily-usage DefaultSMSType = Transactional DeliveryStatusIAMRole = arn:aws:iam::123456789012:role/mySnsRole MonthlySpendLimit = 1 DefaultSenderID = mySenderID