

**终止支持通知：** AWS 将于 2026 年 10 月 30 日终止对亚马逊 Pinpoint 的支持。2026 年 10 月 30 日之后，您将不再能够访问 Amazon Pinpoint 控制台或 Amazon Pinpoint 资源（端点、分段、活动、旅程和分析）。有关更多信息，请参阅 [Amazon Pinpoint 终止支持](https://docs.aws.amazon.com/console/pinpoint/migration-guide)。**注意：** APIs 与短信相关、语音、移动推送、OTP 和电话号码验证不受此更改的影响，并受 AWS 最终用户消息的支持。

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

# 设置 Amazon Pinpoint 以通过 Amazon Kinesis 或 Amazon Data Firehose 流式传输应用程序事件数据
<a name="event-streams-setup"></a>

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

此部分包含有关以编程方式设置事件流式传输的信息。您也可以使用 Amazon Pinpoint 控制台来设置事件流式传输。有关使用 Amazon Pinpoint 控制台设置事件流的信息，请参阅《Amazon Pinpoint 用户指南》中的**[事件流设置](https://docs.aws.amazon.com/pinpoint/latest/userguide/settings-event-streams.html)。

## 先决条件
<a name="event-streams-setup-prerequisites"></a>

本节中的示例需要以下输入：
+ 与 Amazon Pinpoint 集成并报告事件的应用程序的应用程序 ID。有关如何集成的信息，请参阅[将 Amazon Pinpoint 与您的应用程序集成](integrate.md)。
+ 您账户中 Kinesis 直播或 Firehose 直播流的亚马逊资源名称 (ARN)。 AWS 有关创建这些资源的信息，请参阅《Amazon Kinesis Data Streams 开发人员指南》**中的[创建和管理数据流](https://docs.aws.amazon.com/streams/latest/dev/working-with-streams.html)，或者《Amazon Data Firehose 开发人员指南》**中的[创建 Amazon Data Firehose 传输流](https://docs.aws.amazon.com/firehose/latest/dev/basic-create.html)。
+ 授权 Amazon Pinpoint 向直播发送数据的 AWS Identity and Access Management (IAM) 角色的 ARN。有关创建角色的信息，请参阅[用于将事件流式传输到 Kinesis 的 IAM 角色](permissions-streams.md)。

## AWS CLI
<a name="event-streams-setup-cli"></a>

以下 AWS CLI 示例使用[put-event-stream](https://docs.aws.amazon.com/cli/latest/reference/pinpoint/put-event-stream.html)命令。此命令配置 Amazon Pinpoint 将事件发送到 Kinesis 流：

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

## 适用于 Java 的 AWS SDK
<a name="event-streams-setup-java"></a>

以下 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);
}
```

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

您可以将 Kinesis 流分配给多个应用程序。如果您执行此操作，Amazon Pinpoint 从每个应用程序将使用 base64 编码的事件数据发送到流中，这使您能够将数据作为集合进行分析。以下示例方法接受应用程序（app）列表 IDs，并使用前面的示例方法为每个应用程序分配一个流：`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());
}
```

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