如何为 Amazon Pinpoint 短信和语音 v2 API 设置 Amazon Pinpoint 语音消息的日志记录?
我想监控我通过 Amazon Pinpoint 发送的语音消息的状态。
解决方法
要记录 Amazon Pinpoint 语音消息的状态,您必须配置配置集和事件目的地。设置事件目的地后,请将其映射到您的配置集。这样使您能够接收有关您通过 Amazon Pinpoint 发送的语音消息的响应信息。
您可以将下列任意 AWS 资源配置为 Amazon Pinpoint 语音事件目的地:
- Amazon Simple Notification Service(Amazon SNS)主题
- Amazon CloudWatch Logs
- Amazon Kinesis Data Firehose 流
如需配置事件目的地,请使用 Amazon Pinpoint 短信和语音消息 v2 API 或 AWS 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 官方已更新 3 年前
- AWS 官方已更新 3 年前