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

查看 SMS 传输的 Amazon CloudWatch 指标和日志

您可以使用 Amazon CloudWatch 和 Amazon CloudWatch Logs 监控您的 SMS 消息传输。

查看 Amazon CloudWatch 指标

Amazon SNS 会自动收集有关您的 SMS 消息传输的指标并将其推送至 Amazon CloudWatch。您可以使用 CloudWatch 监控这些指标,并创建警报以便在指标超过阈值时提醒您。例如,您可以监控 CloudWatch 指标,了解您的 SMS 传输率和您当月至今的 SMS 费用。

有关监控 CloudWatch 指标、设置 CloudWatch 警报和可用指标类型的信息,请参阅使用 CloudWatch 监控 Amazon SNS 主题

查看 CloudWatch Logs

您可以通过让 Amazon SNS 写入 Amazon CloudWatch Logs,收集有关 SMS 消息是否成功传输的信息。对于您发送的每条 SMS 消息,Amazon SNS 会写入日志,其中包括消息价格、成功或失败状态、失败原因(如果消息发送失败)、消息停留时间以及其他信息。

为您的 SMS 消息启用 CloudWatch Logs

  1. 登录 Amazon SNS 控制台

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

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

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

  5. Edit text messaging preferences (编辑文本消息收发首选项) 页上,在 Delivery status logging (传输状态日志记录) 部分中,执行以下操作:

    1. 对于 Success sample rate (成功采样率),请指定 Amazon SNS 将在 CloudWatch Logs 中写入日志的成功 SMS 传输的百分比。例如:

      • 要仅将失败传输写入日志,请将此值设为 0。

      • 要将 10% 的成功传输写入日志,请将其设为 10。

      如果您不指定百分比,Amazon SNS 会将所有成功传输写入日志。

    2. 选择 Create new service role (创建新的服务角色)

    3. 选择 Create new role (创建新角色)

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

  6. 选择 Save changes

成功 SMS 传输的示例日志

成功 SMS 传输的传输状态日志与下面的示例类似:

{ "notification": { "messageId": "34d9b400-c6dd-5444-820d-fbeb0f1f54cf", "timestamp": "2016-06-28 00:40:34.558" }, "delivery": { "phoneCarrier": "My Phone Carrier", "mnc": 270, "destination": "+1XXX5550100", "priceInUSD": 0.00645, "smsType": "Transactional", "mcc": 310, "providerResponse": "Message has been accepted by phone carrier", "dwellTimeMs": 599, "dwellTimeMsUntilDeviceAck": 1344 }, "status": "SUCCESS" }

失败 SMS 传输的示例日志

失败 SMS 传输的传输状态日志与下面的示例类似:

{ "notification": { "messageId": "1077257a-92f3-5ca3-bc97-6a915b310625", "timestamp": "2016-06-28 00:40:34.559" }, "delivery": { "mnc": 0, "destination": "+1XXX5550100", "priceInUSD": 0.00645, "smsType": "Transactional", "mcc": 0, "providerResponse": "Unknown error attempting to reach phone", "dwellTimeMs": 1420, "dwellTimeMsUntilDeviceAck": 1692 }, "status": "FAILURE" }

SMS 传输失败的原因

providerResponse 属性中提供失败的原因。SMS 消息传输失败可能是因为以下原因:

  • 被电话运营商作为垃圾消息屏蔽

  • 目标已加入黑名单

  • 电话号码无效

  • 消息正文无效

  • 电话运营商已屏蔽此消息

  • 电话运营商目前无法访问/不可用

  • 电话已屏蔽 SMS

  • 电话已加入黑名单

  • 电话当前无法访问/可用

  • 电话号码已退出

  • 此传输会超过最高价格

  • 尝试联系电话时发生未知错误