如何访问 SMS 消息的 Amazon SNS 主题传输日志?

2 分钟阅读
0

我想访问 SMS 消息的 Amazon Simple Notification Service(Amazon SNS)主题传输日志。

解决方法

为 Amazon CloudWatch Logs 配置 SMS 传输状态属性

**注意:**作为以下控制台操作步骤的替代方案,您可以使用 AWS SDKAWS 命令行界面(AWS CLI)配置消息发送状态。如果您在运行 AWS CLI 命令时收到错误,请参阅排查 AWS CLI 错误。此外,请确保您使用的是最新版本的 AWS CLI

  1. 打开 Amazon SNS 控制台

  2. 在导航窗格上,展开移动,然后选择文本消息(SMS)

  3. 文本消息发送首选项部分,选择编辑

  4. 展开传输状态日志记录 - 可选

  5. 对于成功采样率,在 % 文本框中输入 100

    **注意:**成功采样率是成功传输到日志的消息的百分比。

  6. IAM 角色部分中,对于服务角色,选择创建新的服务角色,然后选择创建新角色。系统会打开 AWS Identity and Access Management(IAM)控制台。

    注意:如果您已经拥有具有正确权限的 IAM 角色,则改为选择使用现有服务角色来使用该服务角色。

  7. 在 IAM 控制台权限请求页面上,选择允许

  8. 返回 Amazon SNS 控制台后,选择保存更改

这为成功和失败的传输创建了一个 IAM 角色,并为 Amazon SNS 创建了以下策略和信任关系。

IAM 角色:

arn:aws:iam::1111111111:role/SNSSuccessFeedback

策略:

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Effect": "Allow",
      "Action": [
        "logs:CreateLogGroup",
        "logs:CreateLogStream",
        "logs:PutLogEvents",
        "logs:PutMetricFilter",
        "logs:PutRetentionPolicy"
      ],
      "Resource": [
        "*"
      ]
    }
  ]
}

信任关系:

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Effect": "Allow",
      "Principal": {
        "Service": "sns.amazonaws.com"
      },
      "Action": "sts:AssumeRole"
    }
  ]
}

查看传输状态日志

  1. 打开 Amazon CloudWatch 控制台

  2. 在导航窗格中,选择日志,然后选择日志组

  3. 在筛选搜索框中,输入 DirectPublishToPhoneNumber 以仅查找 Amazon SNS 的 SMS 日志组。

    注意: 根据目标电话号码运营商的不同,传输日志最多可能需要 72 小时才会显示在 Amazon SNS 控制台中。

    例如:

    sns/your-AWS-region/your-AWS-account-ID/DirectPublishToPhoneNumber 日志组包含成功传输日志:

    sns/us-east-1/1111111111/DirectPublishToPhoneNumber

    成功传输日志示例:

    {
      "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"
    }

    sns/your-AWS-region/your-AWS-account-ID/DirectPublishToPhoneNumber/Failure 日志组包含失败传输日志:

    sns/us-east-1/1111111111/DirectPublishToPhoneNumber/Failure

    失败传输日志示例:

    {
      "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"
    }
  4. 选择要查看的 SNS 日志组。

  5. 日志流选项卡上,选择特定的日志流以查看 SMS 传输日志。

  6. 要查看您的 SMS 的传输状态,请展开日志事件并检查 providerResponse

查看已退出的电话号码

接收者可以选择不在手机上接收其 AWS 账户的 SMS 消息。有关更多信息,请参阅 Opting out of receiving SMS messages

  1. 打开 Amazon SNS 控制台
  2. 在导航窗格上,展开移动部分,然后选择文本消息(SMS)
  3. 要查看已选择退出的电话号码,请转到已退出的电话号码部分。

相关信息

Monitoring Amazon SNS topics using CloudWatch

Setting SMS messaging preferences

Viewing Amazon CloudWatch metrics and logs for SMS deliveries

AWS 官方
AWS 官方已更新 6 个月前