设置事件流式传输 - Amazon Pinpoint

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

设置事件流式传输

您可以将 Amazon Pinpoint 设置为将事件数据发送到亚马逊 Kinesis 直播或亚马逊 Data Firehose 传输流。Amazon Pinpoint 可以发送活动、旅程以及事务性电子邮件和短信的事件数据。

此部分包含有关以编程方式设置事件流式传输的信息。您也可以使用 Amazon Pinpoint 控制台来设置事件流式传输。有关使用 Amazon Pinpoint 控制台设置事件流的信息,请参阅《Amazon Pinpoint 用户指南》中的事件流设置

先决条件

本节中的示例需要以下输入:

AWS CLI

以下 AWS CLI 示例使用该put-event-stream命令。此命令配置 Amazon Pinpoint 将事件发送到 Kinesis 流:

aws pinpoint put-event-stream \ --application-id projectId \ --write-event-stream DestinationStreamArn=streamArn,RoleArn=roleArn

AWS SDK for Java

以下 Java 示例配置 Amazon Pinpoint 向 Kinesis 流发送事件:

public PutEventStreamResult createEventStream(AmazonPinpoint pinClient, String appId, String streamArn, String roleArn) { WriteEventStream stream = new WriteEventStream() .withDestinationStreamArn(streamArn) .withRoleArn(roleArn); PutEventStreamRequest request = new PutEventStreamRequest() .withApplicationId(appId) .withWriteEventStream(stream); return pinClient.putEventStream(request); }

此示例构建了一个 WriteEventStream 对象,它存储 Kinesis 流和 IAM 角色的 ARN。WriteEventStream 对象会传递给 PutEventStreamRequest 对象,用于将 Amazon Pinpoint 配置为流式传输特定应用程序的事件。PutEventStreamRequest 对象会传递给 Amazon Pinpoint 客户端的 putEventStream 方法。

您可以将 Kinesis 流分配给多个应用程序。如果您执行此操作,Amazon Pinpoint 从每个应用程序将使用 base64 编码的事件数据发送到流中,这使您能够将数据作为集合进行分析。以下示例方法接受应用程序 ID 的列表,它使用上一个示例方法 createEventStream 将流分配给每个应用程序:

public List<PutEventStreamResult> createEventStreamFromAppList( AmazonPinpoint pinClient, List<String> appIDs, String streamArn, String roleArn) { return appIDs.stream() .map(appId -> createEventStream(pinClient, appId, streamArn, roleArn)) .collect(Collectors.toList()); }

虽然您可以将一个流分配给多个应用程序,但不能将多个流分配给一个应用程序。

禁用事件流式传输

如果将 Kinesis 流分配给了一个应用程序,则可以对该应用程序禁用事件流式传输。Amazon Pinpoint 停止将事件流式传输到 Kinesis,但您可以使用 Amazon Pinpoint 控制台查看事件分析。

AWS CLI

使用 delete-event-stream 命令:

aws pinpoint delete-event-stream --application-id application-id

AWS SDK for Java

使用 Amazon Pinpoint 客户端 deleteEventStream 的方法:

pinClient.deleteEventStream(new DeleteEventStreamRequest().withApplicationId(appId));