如何为 Amazon Pinpoint 短信和语音 v2 API 设置 Amazon Pinpoint 语音消息的日志记录?

3 分钟阅读
0

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

解决方法

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

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

如需配置事件目的地,请使用 Amazon Pinpoint 短信和语音消息 v2 APIAWS SDK 之一。

**注意:**以下解决方法仅适用于 Amazon Pinpoint 短信和语音 v2 API。有关 Amazon Pinpoint 短信和语音 v1 API,请参阅如何为 Amazon Pinpoint 短信和语音 v1 API 设置 Amazon Pinpoint 语音消息的日志记录?

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

1.    如需创建配置集,请运行以下 create-configuration-set(pinpoint-sms-voice v2)AWS CLI 命令:

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

注意: 您可以将 VoiceSNS 替换为您的配置集的任何名称。

2.    为要记录语音消息的端点订阅 Amazon SNS 主题。SNS 主题可以是新主题,也可以是现有主题。有关说明,请参阅为端点订阅 Amazon SNS 主题

**注意:**如需使用 AWS CLI 创建新的 Amazon SNS 主题,请运行以下 create-topic 命令:

aws sns create-topic --name pinpointsmsvoice

3.    在 SNS 主题访问策略中,您必须具有以下权限。这使 Amazon Pinpoint 短信语音服务能够传送日志:

`{   "Sid": "pinpointsmsvoice",   "Effect": "Allow",   "Principal": {     "Service": "sms-voice.amazonaws.com"   },   "Action": "SNS:Publish",   "Resource": "arn:aws:sns:us-east-1:ACCOUNT_ID:`pinpointsmsvoice`" }`

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

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 替换为您的 AWS 账户 ID。请将 pinpointsmsvoice 替换为您的 SNS 主题的名称。

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

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

1.    如需创建配置集,请运行以下 create-configuration-set(pinpoint-sms-voice v2)AWS CLI 命令:

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

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

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

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

-或者-

使用现有 CloudWatch 日志组完成以下步骤。

3.    获取您的 CloudWatch 日志组的 Amazon 资源名称(ARN): 打开 CloudWatch 控制台。在左侧导航窗格中,选择日志。然后,选择日志组。在日志组列中,选择您的日志组的名称。在日志组详细信息窗格中,复制 ARN 值。这是您的日志组的 ARN。

4.    创建一个新的 AWS Identity and Access Management(IAM)角色以供 Amazon Pinpoint 服务代入。有关说明,请参阅为 AWS 服务创建角色(控制台)为服务创建角色(AWS CLI)。当您配置角色时,请修改角色的信任策略,使其在策略的主体部分包含以下权限语句:

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

注意: 此权限语句允许短信语音服务代入 IAM 角色。

5.    修改 IAM 角色的权限策略,使其包含以下权限语句:

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Sid": "VisualEditor0",
      "Effect": "Allow",
      "Action": [
        "logs:CreateLogStream",
        "logs:CreateLogGroup",
        "logs:DescribeLogStreams",
        "logs:PutLogEvents"
      ],
      "Resource": "arn:aws:logs:*:*:*"
    }
  ]
}

注意: 此权限语句授予调用特定 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:`pinpointsmsvoice`:" }`

**注意:**请将 IamRoleArn 的值替换为您的 IAM 角色 ARN。请将 LogGroupArn 的值替换为您的日志组 ARN 和 SNS 主题名称。

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

[
"ALL"
]

**重要事项:**务必将 VoiceCW 替换为您的配置集的名称。

8.    将事件目的地映射到 configuration-set-name。为此,请运行以下 create-event-destination 命令:

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 语音消息,以测试设置。几分钟后,该事件会出现在订阅 Amazon SNS 主题的端点中。

将 Kinesis Data Firehose 流配置为 Amazon Pinpoint 语音事件目的地

1.    如需创建配置集,请运行以下 create-configuration-set(pinpoint-sms-voice v2)AWS CLI 命令:

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

注意: 您可以将 VoiceKinesis 替换为您的配置集的任何名称。

2.    创建 Kinesis Data Firehose 交付流。对于目的地设置,选择 Amazon Simple Storage Service(Amazon S3)

重要事项: 接受默认 IAM 服务角色。然后,将 IAM 服务角色的名称复制到剪贴板。以下步骤需要角色名称。

3.    修改 IAM 角色的权限策略,使其在策略的主体部分包含以下权限语句:

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

此权限语句授予短信语音服务代入 IAM 角色的权限。

4.    修改 IAM 服务角色的权限策略,使其包含以下权限语句:

**重要事项:**请勿删除 IAM 服务角色的任何默认权限语句。

{
     "Sid": "VisualEditor0",
      "Effect": "Allow",
      "Action": "firehose:*",
      "Resource": "*"
}

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

{

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

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

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

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

[
"ALL"
]

然后,运行 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 替换为您的配置集的名称。

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

AWS 官方
AWS 官方已更新 1 年前