设置 Amazon Pinpoint 以通过 Amazon Kinesis 或 Amazon Data Firehose 流式传输应用程序事件数据 - Amazon Pinpoint

设置 Amazon Pinpoint 以通过 Amazon Kinesis 或 Amazon Data Firehose 流式传输应用程序事件数据

您可以配置 Amazon Pinpoint 以将事件数据发送到 Amazon Kinesis 流或 Amazon 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()); }

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