查看 SMS 传输的 Amazon CloudWatch 指标和日志 - Amazon Simple Notification Service
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅中国的 Amazon Web Services 服务入门

查看 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)) 页上,在文本消息发送首选项部分中,选择编辑

  5. 在下一页上,展开 Delivery status logging(传输状态日志记录)部分。

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

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

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

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

  7. 为提供所需的权限,请执行以下操作之一:

    • 要创建新的服务角色,请选择 Create new service role(创建新的服务角色),然后选择 Create new roles(创建新角色)。在下一页上,选择 Allow(允许)以授予 Amazon SNS 对您账户资源的写入访问权限。

    • 要使用现有服务角色,请选择 Use existing service role(使用现有服务角色),然后将 ARN 名称粘贴到 IAM role for successful and failed deliveries(成功和失败传输的 IAM 角色)框中。

      您指定的服务角色必须允许对账户资源进行写入访问。有关创建 IAM 角色的更多信息,请参阅 IAM 用户指南中的为 Amazon 服务创建一个角色

  8. 选择 Save changes(保存更改)。

  9. 回到 Mobile text messaging (SMS)(移动文本消息 (SMS))页面上,转至 Delivery status logs(传输状态日志)部分查看任何可用的日志。

    注意

    根据目标电话号码的运营商,Amazon SNS 控制台中显示传输日志最长可能需要 72 小时。

成功 SMS 传输的示例日志

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

{ "notification": { "messageId": "34d9b400-c6dd-5444-820d-fbeb0f1f54cf", "timestamp": "2016-06-28 00:40:34.558" }, "delivery": { "phoneCarrier": "My Phone Carrier", "mnc": 270, "numberOfMessageParts": 1, "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, "numberOfMessageParts": 1, "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

  • 电话位于阻止列表中

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

  • 电话号码已退出

  • 此传输会超过最高价格

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