如何使用 Amazon Pinpoint 为 AWS 终端用户消息发送语音消息设置日志记录?

4 分钟阅读
0

我想监控我通过 Amazon Pinpoint 发送的语音消息的状态。

我想监控我通过 Amazon Pinpoint 发送的语音消息的状态。

解决方法

要记录 Amazon Pinpoint 语音消息的状态,请配置配置集事件目的地。然后,将事件目的地映射到配置集。此配置使您能够接收您通过 Amazon Pinpoint 发送的语音消息的响应信息。

您可以将以下任意 AWS 资源配置为 Amazon Pinpoint 语音事件目的地:

要配置事件目的地,请使用 AWS 终端用户消息发送 APIAWS SDK 之一。

**注意:**以下语音消息日志记录配置仅适用于 AWS 终端用户消息发送。有关短信和语音 v1,请参阅如何为 Amazon Pinpoint 短信和语音 v1 API 设置 Amazon Pinpoint 语音消息的日志记录?

将 Amazon SNS 主题配置为 Amazon Pinpoint 语音事件目的地

**注意:**如果您在运行 AWS 命令行界面 (AWS CLI) 命令时收到错误,请参阅 AWS CLI 错误故障排除。此外,确保您使用的是最新版本的 AWS CLI

要将 Amazon SNS 主题配置为 Amazon Pinpoint 语音事件目的地,请完成以下步骤:

  1. 要创建配置集,请运行 create-configuration-set 命令:

    aws pinpoint-sms-voice-v2 create-configuration-set --configuration-set-name VoiceSNS

    注意: 请将 VoiceSNS 替换为您的配置集名称。

  2. 为要记录语音消息的端点订阅 Amazon SNS 主题。SNS 主题可以是新主题,也可以是现有主题。要使用 AWS CLI 创建新的 Amazon SNS 主题,请运行 create-topic 命令:

    aws sns create-topic --name pinpointsmsvoice
  3. 将以下权限添加到 SNS 主题访问策略中。此策略允许 AWS 终端用户消息发送语音服务传送日志:

    {
      "Effect": "Allow",
      "Principal": {
        "Service": "sms-voice.amazonaws.com"
      },
      "Action": "sns:Publish",
      "Resource": "arn:aws:sns:us-east-1:ACCOUNT_ID:pinpointsmsvoice",
      "Condition": {
        "StringEquals": {
          "aws:SourceAccount": "ACCOUNT_ID"
        },
        "ArnLike": {
          "aws:SourceArn": "arn:aws:sms-voice:us-east-1:ACCOUNT_ID:configuration-set/VoiceSNS"
        }
      }
    }

    **注意:**请将 us-east-1 替换为您的 AWS 区域,将 pinpointsmsvoice 替换为您的 SNS 主题的名称,将 ACCOUNT_ID 替换为您的 AWS 账户 ID。

  4. 在文本编辑器中,为 MatchingEventTypes 创建名为 matching.json 的输入请求文件。指定要接收的事件,或者指定**“ALL”**以接收所有事件:

    [
    "ALL"
    ]
  5. 要将事件目的地映射到 configuration-set-name,请运行 create-event-destination 命令:

    aws pinpoint-sms-voice-v2 create-event-destination --configuration-set-name VoiceSNS --event-destination-name VoiceSNS --matching-event-types file://matching.json --sns-destination TopicArn=arn:aws:sns:us-east-1:ACCOUNT_ID:pinpointsmsvoice

    **注意:**请将 us-east-1 替换为您的区域,将 ACCOUNT_ID 替换为您的账户 ID,将 pinpointsmsvoice 替换为您的 SNS 主题的名称。

  6. 要测试设置,请使用 SendVoiceMessage v2 API 操作发送 Amazon Pinpoint 语音消息。几分钟后,该事件会出现在订阅了 SNS 主题的端点中。

将 CloudWatch Logs 配置为 Amazon Pinpoint 语音事件目的地

要将 CloudWatch Logs 配置为 Amazon Pinpoint 语音事件目的地,请完成以下步骤:

  1. 要创建配置集,请运行 create-configuration-set 命令:

    aws pinpoint-sms-voice-v2 create-configuration-set --configuration-set-name VoiceCW

    注意: 请将 VoiceCW 替换为您的配置集的任何名称。

  2. 运行 create-log-group 命令以创建接收语音消息日志的新 CloudWatch 日志组

    aws logs create-log-group --log-group-name /aws/pinpoint/voice

    -or-

    使用现有的 CloudWatch 日志组并通过以下步骤获取 ARN:
    打开 CloudWatch 控制台
    在导航窗格中,选择 Logs(日志)。然后,选择 Log groups(日志组)。
    Log group(日志组)列中,选择您的日志组的名称。
    Log group details(日志组详细信息)窗格中,复制 ARN 值。这是您的日志组的 ARN。

  3. 创建一个新的 IAM 角色以供 Amazon Pinpoint 服务代入。

  4. 使用以下权限语句更新 IAM 角色信任策略

    {
      "Version": "2012-10-17",
      "Statement": [
        {
          "Effect": "Allow",
          "Principal": {
            "Service": "sms-voice.amazonaws.com"
          },
          "Action": "sts:AssumeRole",
          "Condition": {
            "StringEquals": {
              "aws:SourceAccount": "ACCOUNT_ID"
            },
            "ArnLike": {
              "aws:SourceArn": "arn:aws:sms-voice:us-east-1:ACCOUNT_ID:configuration-set/VoiceKinesis"
            }
          }
        }
      ]
    }

    **注意:**此策略允许 SMS 语音服务代入 IAM 角色。

  5. 使用以下语句更新 IAM 角色权限策略

    {
        "Version": "2012-10-17",
        "Statement": [
            {
                "Effect": "Allow",
                "Action": [
                    "logs:CreateLogStream",
                    "logs:DescribeLogStreams",
                    "logs:PutLogEvents"
                ],
                "Resource": [
                    "arn:aws:logs:us-east-1:ACCOUNT_ID:log-group:/aws/pinpoint/voice:*"
                ]
            }
        ]
    }

    **注意:**此权限策略可授予调用特定 CloudWatch Logs API 操作的权限。有关详细信息,请参阅 CloudWatch Logs 权限参考

  6. 在文本编辑器中,创建名为 CloudWatchDestination.json 的输入请求文件。然后,在文件中输入以下目的地参数:

    `{   "IamRoleArn": "arn:aws:iam::ACCOUNT_ID:role/IAM_ROLE",   "LogGroupArn": "arn:aws:logs:us-east-1:ACCOUNT_ID:log-group:/aws/pinpoint/voice" }`

    **注意:**请将 IamRoleArn 的值替换为您的 IAM 角色 ARN。将 LogGroupArn 的值替换为要向其发送事件的 CloudWatch 日志组的 ARN。

  7. 在文本编辑器中,为 MatchingEventTypes 创建名为 matching.json 的输入请求文件。指定要接收的事件,或者指定**“ALL”**以接收所有事件:

    [
    "ALL"
    ]

    **注意:**请将 VoiceCW 替换为您的配置集的名称。

  8. 运行 create-event-destination 命令,将事件目的地映射到 configuration-set-name

    aws pinpoint-sms-voice-v2 create-event-destination --configuration-set-name VoiceCW --event-destination-name CloudWatch_Destination --matching-event-types file://matching.json --cloud-watch-logs-destination file://CloudWatchDestination.json
  9. 要测试设置,请使用 SendVoiceMessage v2 API 操作发送 Amazon Pinpoint 语音消息。几分钟后,该事件将出现在 CloudWatch 日志组中。

将 Firehose 传输流配置为 Amazon Pinpoint 语音事件目的地

要将 Firehose 传输流配置为 Amazon Pinpoint 语音事件目的地,请完成以下步骤:

  1. 要创建配置集,请运行 create-configuration-set 命令:

    aws pinpoint-sms-voice-v2 create-configuration-set --configuration-set-name VoiceKinesis

    注意: 请将 VoiceKinesis 替换为您的配置集的名称。

  2. 创建 Firehose 传输流。对于 Destination setting(目的地设置),选择 Amazon Simple Storage Service (Amazon S3)

  3. 创建一个新的 IAM 角色以供 Amazon Pinpoint 服务代入。

  4. 使用策略的主体部分中的以下权限语句更新 IAM 角色信任策略

    {
      "Version": "2012-10-17",
      "Statement": [
        {
          "Effect": "Allow",
          "Principal": {
            "Service": "sms-voice.amazonaws.com"
          },
          "Action": "sts:AssumeRole",
          "Condition": {
            "StringEquals": {
              "aws:SourceAccount": "ACCOUNT_ID"
            },
            "ArnLike": {
              "aws:SourceArn": "arn:aws:sms-voice:us-east-1:ACCOUNT_ID:configuration-set/VoiceKinesis"
            }
          }
        }
      ]
    }

    注意: 此策略允许 SMS 语音服务代入 IAM 角色。

  5. 更新 IAM 角色权限策略以包含 Firehose 传输流 ARN:

    {
        "Version": "2012-10-17",
        "Statement": [
            {
                "Effect": "Allow",
                "Action": "firehose:PutRecord",
                "Resource": "arn:aws:firehose:us-east-1:ACCOUNT_ID:deliverystream/KINESIS_FIREHOSE_NAME"
            }
        ]
    }

    注意: 请将 ACCOUNT_ID 替换为您的账户 ID,将 KINESIS_FIREHOSE_NAME 替换为您的 Firehose 传输流 ARN 的名称。

  6. 在文本编辑器中,创建名为 KinesisFirehoseDestination.json 的输入请求文件。然后,复制以下目的地参数并粘贴到文件中:

    {
        "IamRoleArn": "arn:aws:iam::ACCOUNT_ID:role/IAM_ROLE",
        "DeliveryStreamArn": "arn:aws:firehose:us-east-1:ACCOUNT_ID:deliverystream/KINESIS_FIREHOSE_NAME"
    }

    **注意:**请将 us-east-1 替换为您的 AWS 区域,将 ACCOUNT_ID 替换为您的账户 ID,将 KINESIS_FIREHOSE_NAME 替换为您的 Firehose 传输流的名称,将 IAM_ROLE 替换为您的 IAM 角色名称。

  7. 要将事件目的地映射到 configuration-set-name,请使用输入请求文件运行 create-event-destination 命令:

  8. 在文本编辑器中,为 MatchingEventTypes 创建名为 matching.json 的输入请求文件。指定要接收的事件,或者指定**“ALL”**以接收所有事件:

    [
    "ALL"
    ]
  9. 运行 create-event-destination 命令:

    aws pinpoint-sms-voice-v2 create-event-destination --configuration-set-name VoiceKinesis --event-destination-name KinesisFirehose_Destination --matching-event-types file://matching.json --kinesis-firehose-destination file://KinesisFirehoseDestination.json

    **注意:**请将 VoiceKinesis 替换为您的配置集名称。

  10. 要测试设置,请使用 SendVoiceMessage v2 API 操作发送 Amazon Pinpoint 语音消息。几分钟后,该事件会出现在您创建 Firehose 传输流时配置的 Amazon S3 存储桶中。

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