

# 配置自定义 S3 存储桶来源
<a name="configuring-custom-s3-bucket-sources"></a>

借助 CloudWatch 管道，您可以处理存储在 S3 存储桶中的任意日志。

## 先决条件
<a name="s3-prerequisites"></a>

要将 Amazon S3 用作管道来源，请先创建 S3 存储桶。有关说明，请参阅《Amazon S3 用户指南》**中的[创建通用存储桶](https://docs.amazonaws.cn/AmazonS3/latest/userguide/create-bucket-overview.html)。

**注意**  
如果管道中用作来源的 S3 存储桶位于其他 Amazon 账户中，则还需要对存储桶启用跨账户读取权限。这样管道将可读取和处理数据。要启用跨账户权限，请参阅 *Amazon S3 用户指南*中的[存储桶拥有者授予跨账户存储桶权限](https://docs.amazonaws.cn/AmazonS3/latest/userguide/create-bucket-overview.html)。  
如果您的 S3 存储桶位于多个账户中，请使用 `bucket_owners` 映射。有关示例，请参阅 *OpenSearch* 文档中的[跨账户 S3 访问](https://docs.opensearch.org/latest/data-prepper/pipelines/configuration/sources/s3/#cross-account-s3-access)。

要设置 S3-SQS 处理，还需要执行以下步骤：
+ [创建 Amazon SQS 队列](https://docs.amazonaws.cn/AWSSimpleQueueService/latest/SQSDeveloperGuide/creating-sqs-standard-queues.html)。
+ [在以 SQS 队列为目标的 S3 存储桶上启用事件通知](https://docs.amazonaws.cn/AmazonS3/latest/userguide/enable-event-notifications.html)。

## 配置管道角色
<a name="configure-pipeline-role"></a>

与其他将数据推送到管道的源插件不同，S3 源插件采用基于读取的架构，管道从源中拉取数据。因此，为使管道能够从 S3 读取，必须在管道的 S3 源配置中指定一个可以同时访问 S3 存储桶和 Amazon SQS 队列的角色。管道将担任此角色，以便从队列中读取数据。

您可以在[特定于来源的 IAM 策略](pipeline-iam-reference.md#source-specific-iam-policies)中找到示例角色权限。请注意，此角色必须与 CloudWatch 管道服务原则具有信任关系。您可以在[信任关系](pipeline-iam-reference.md#trust-relationships)中找到管道角色的示例信任策略配置。

## 创建管道
<a name="create-s3-pipeline"></a>

设置权限后，您可以根据 Amazon S3 使用案例配置管道。

在 CloudWatch 控制台的**摄取**下的**管道**选项卡中选择**创建管道**。按照管道向导步骤进行操作，并在出现提示时提供 SQS 队列 ARN 和所需的管道 IAM 角色。（可选）在 CloudWatch Logs 中提供要附加到日志组目标的数据来源名称和类型。

如果目标日志组尚未配置 [CloudWatch Logs 资源策略](https://docs.amazonaws.cn/resource-policies.html)，请务必配置该策略，然后在**审核并创建**步骤中选择**创建管道**。如果成功，将创建管道，然后数据将在 5 分钟内开始流动。

## 将 Amazon S3 跨账户作为源
<a name="cross-account-s3-access"></a>

您可以向 Amazon S3 授予跨账户访问权限，让 CloudWatch 管道能够访问作为来源的其他账户中的 S3 存储桶。要启用跨账户访问，请参阅《Amazon S3 用户指南》中的 [Bucket owner granting cross-account bucket permissions](https://docs.amazonaws.cn/AmazonS3/latest/userguide/create-bucket-overview.html)**。授予访问权限后，请确保您的管道角色具有所需的权限。

然后可以使用 `bucket_owners` 创建管道，从而对作为来源的 Amazon S3 存储桶启用跨账户访问。

**自定义来源配置**

为自定义来源创建管道时：
+ 解析器必须是管道中的第一个处理器
+ 您可以为自定义日志管道指定任何支持的处理器