Amazon Simple Notification Service
开发人员指南
AWS 文档中描述的 AWS 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅中国的 AWS 服务入门

设置发送 SMS 消息的首选项

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

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

使用 AWS 管理控制台设置发送 SMS 消息的首选项

  1. 登录 Amazon SNS 控制台

  2. 选择支持 SMS 消息的区域

  3. 在导航面板上,选择移动文本消息 (SMS)

  4. Mobile text messaging (SMS) (移动文本消息 (SMS)) 页上,在文本消息发送首选项部分中,选择编辑

  5. Edit text messaging preferences (编辑文本消息发送首选项) 页上,在详细信息部分中,执行以下操作:

    1. 对于默认消息类型,选择下列选项之一:

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

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

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

    2. (可选)对于 Account spend limit (账户花费限额),请输入您在每个日历月想要为 SMS 消息支付的金额,以 USD 为单位。

      重要

      • 默认情况下,支出限额设为 1.00 USD。如果您想提高该限额,请向 AWS Support 提交一份 SNS 文本消息案例

      • 如果在控制台中设置的金额超过您的服务限制, Amazon SNS 会停止发布 SMS 消息。

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

  6. (可选)对于默认发件人 ID,请输入一个自定义 ID(如您的企业品牌),它显示为接收设备的发送者。

    注意

    对发件人 ID 的支持因国家/地区而异。

  7. (可选)输入 Amazon S3 bucket name for usage reports (使用率报告的 S3 存储桶名称) 的名称。

    注意

    S3 存储桶策略必须授予对 Amazon SNS 的写入权限。

  8. 选择保存更改

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

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

以下示例说明如何使用 AWS 开发工具包提供的 Amazon SNS 客户端设置 SMS 首选项。

AWS SDK for Java适用于 .NET 的 AWS 开发工具包
AWS SDK for Java

以下示例在 AWS SDK for Java 中使用 AmazonSNSClient 类的 setSMSAttributes 方法。此示例设置不同属性名称的值:

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 允许的最大金额。如果您想提高该限额,请向 AWS Support 提交一份 SNS 文本消息案例。在新限制值 中,输入所需的每月支出限额。在 Use Case Description 字段中,说明您想请求提高每月的 SMS 支出限额。一般来说,AWS Support 会在 2 个工作日内处理你您的案例。根据您要求的支出限制以及您案例的复杂程度,AWS Support 可能会要求额外 3-5 天来确保您的请求得到处理。

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

My SMS attributes: DeliveryStatusSuccessSamplingRate = 10 UsageReportS3Bucket = sns-sms-daily-usage DefaultSMSType = Transactional DeliveryStatusIAMRole = arn:aws:iam::123456789012:role/mySnsRole MonthlySpendLimit = 1 DefaultSenderID = mySenderID
适用于 .NET 的 AWS 开发工具包

以下示例在 适用于 .NET 的 AWS 开发工具包 中使用 AmazonSimpleNotificationServiceClient 类的 SetSMSAttributes 方法。此示例设置不同属性名称的值:

static void Main(string[] args) { AmazonSimpleNotificationServiceClient snsClient = new AmazonSimpleNotificationServiceClient(Amazon.RegionEndpoint.USWest2); SetDefaultSmsAttributes(snsClient); } public static void SetDefaultSmsAttributes(AmazonSimpleNotificationServiceClient snsClient) { SetSMSAttributesRequest setRequest = new SetSMSAttributesRequest(); setRequest.Attributes["DefaultSenderID"] = "mySenderID"; setRequest.Attributes["MonthlySpendLimit"] = "1"; setRequest.Attributes["DeliveryStatusIAMRole"] = "arn:aws:iam::123456789012:role/mySnsRole"; setRequest.Attributes["DeliveryStatusSuccessSamplingRate"] = "10"; setRequest.Attributes["DefaultSMSType"] = "Transactional"; setRequest.Attributes["UsageReportS3Bucket"] = "sns-sms-daily-usage"; SetSMSAttributesResponse setResponse = snsClient.SetSMSAttributes(setRequest); GetSMSAttributesRequest getRequest = new GetSMSAttributesRequest(); GetSMSAttributesResponse getResponse = snsClient.GetSMSAttributes(getRequest); Console.WriteLine("My SMS attributes:"); foreach (var item in getResponse.Attributes) { Console.WriteLine(item.Key + " = " + item.Value); } }

此示例将 MonthlySpendLimit 属性的值设为 1.00 USD。默认情况下,该值是 Amazon SNS 允许的最大金额。如果您想提高该限额,请向 AWS Support 提交一份 SNS 文本消息案例。在新限制值 中,输入所需的每月支出限额。在 Use Case Description 字段中,说明您想请求提高每月的 SMS 支出限额。一般来说,AWS Support 会在 2 个工作日内处理你您的案例。根据您要求的支出限制以及您案例的复杂程度,AWS Support 可能会要求额外 3-5 天来确保您的请求得到处理。

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

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