

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

# 使用 S3 表格集成访问日志
<a name="s3-tables-integration"></a>

S3 表格与集成 CloudWatch 允许您访问 CloudWatch 使用分析引擎（例如亚马逊 Athena、Amazon Redshift）和支持连接到 Apache Iceberg 兼容商店的第三方工具获取的日志数据。这种集成使您能够使用自己喜欢的工具执行全面的日志分析，并将 CloudWatch 日志中的数据与非CloudWatch数据相关联。

## 了解 S3 表集成
<a name="understanding-s3-tables-integration"></a>

 Amazon S3 表格集成是一种完全托管的解决方案，它使您在日志中的 CloudWatch 日志可以作为托管 Amazon S3 表使用。通过这种集成，除了日志功能外，您还可以更灵活地分析 CloudWatch 日志。

该集成的工作原理是创建托管 Amazon S3 表存储桶 (`aws-cloudwatch`)，并根据数据源名称和类型将特定的日志源与 Amazon S3 表关联起来（可通过日志控制台的 “**日志管理” > “数据源**” 选项卡进行管理）。 CloudWatch 关联后，即可通过 Apache Iceberg 格式的 Amazon S3 表访问 CloudWatch 日志数据。这种格式为各种分析引擎提供了一种高效查询数据的标准化方法。

### 核心组件
<a name="s3-tables-integration-core-components"></a>

数据源关联  
根据数据源和类型标准将特定 CloudWatch 日志源链接到 S3 Tables 集成的过程。

Apache Iceberg 表  
S3 Tables 使用的基础表格式，可提供结构化数据存储并支持与多个分析引擎兼容。

### 数据流向 S3 表
<a name="data-flow"></a>

了解 CloudWatch 日志和 S3 表之间的数据流动方式有助于您规划集成并有效地管理日志数据。

创建关联时，Lo CloudWatch gs 会自动将与关联数据源名称和类型匹配的新日志事件发送到 CloudWatch托管的 S3 表存储桶。您可以在该数据源的相应表下的 logs 命名空间中找到这些事件。集成过程仅记录创建关联后添加的事件，不会回填创建关联之前的日志。

S3 表存储桶中的数据保留与为日志组设置的保留策略相匹配。例如，如果您将日志组设置为 1 天的保留期，则 CloudWatch 日志将在一天后从 CloudWatch 日志和 S3 表中删除数据。当您删除日志组或日志流时，Lo CloudWatch gs 还会从 S3 表存储桶中删除数据。

## 何时使用 S3 表格集成
<a name="3-tables-integration-when-to-use"></a>

考虑使用 S3 表集成将日志数据与其他外部或非数据关联起来，或者当您更喜欢使用 Amazon Athena 等其他分析工具对日志CloudWatch 数据进行 CloudWatch 分析时。当您需要超出 CloudWatch 日志中可用范围的功能时，请使用此集成。在以下情况下，这种集成特别有价值：
+ 您需要对大量日志数据运行类似 SQL 的复杂查询
+ 您想将日志分析与现有分析工作流程和工具集成
+ 您需要跨多个数据源的全面日志分析功能

除了现有的 CloudWatch 摄取和存储定价外，通过此集成创建的 S3 表无需支付额外的存储费用或表维护费用。

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

在实施集成之前，请确保您具备以下条件：
+ 现有 CloudWatch 日志数据
+ 在 CloudWatch 日志和 S3 表之间进行跨服务访问的相应的 IAM 权限，如以下部分所述

### IAM 权限
<a name="s3-tables-integration-iam-permissions"></a>

要将 CloudWatch 日志与 S3 表集成，您需要为两个不同的实体配置 IAM 权限：设置集成的用户或角色，以及 CloudWatch 日志承担的向 S3 表写入数据的服务角色。

#### 适用于创建集成的角色或用户
<a name="user-iam-permissions"></a>

设置集成的用户或角色需要以下权限：
+ `observabilityadmin:CreateS3TableIntegration`创建集成并`logs:AssociateSourceToS3TableIntegration`添加源代码
+ `s3tables:CreateTableBucket`、`s3tables:PutTableBucketEncryption`，以及`s3tables:PutTableBucketPolicy`配置 S3 表存储桶

#### 对于服务角色
<a name="service-role-iam-policies"></a>

将以下 IAM 策略附加到 CloudWatch Logs 用来向表存储桶写入数据的 IAM 服务角色。此策略授予写入表的权限。将*aws-region**123456789012*、和*log-group-name*，替换为您的 AWS 区域、账户 ID 和日志组名称。

```
{
    "Version": "2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "logs:integrateWithS3Table"
            ],
            "Resource": ["arn:aws:logs:aws-region:123456789012:log-group:log-group-name"],
            "Condition": {
                "StringEquals": {
                    "aws:ResourceAccount": "123456789012"
                }
            }
        }
    ]
}
```

将以下信任策略附加到 Lo CloudWatch gs 将代入向 S3 表写入日志数据的 IAM 服务角色。您可以在集成设置期间创建或选择此角色。这些条件限制了该角色，因此 CloudWatch Logs 只能为指定的账户和日志组代入该角色。将*aws-region**123456789012*、和*log-group-name*，替换为您的 AWS 区域、账户 ID 和日志组名称。

```
{
    "Version": "2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Principal": {
                "Service": "logs.amazonaws.com"
            },
            "Action": "sts:AssumeRole",
            "Condition": {
                "StringEquals": {
                    "aws:SourceAccount": "123456789012"
                },
                "ArnLike": {
                    "aws:SourceArn": ["arn:aws:logs:aws-region:123456789012:log-group:log-group-name"]
                }
            }
        } 
    ]
}
```

### KMS 密钥策略（适用于加密数据）
<a name="s3-tables-integration-kms-permissions"></a>

如果您使用客户托管密钥加密日志数据，则必须向 CloudWatch 服务主体和 S3 Tables 维护服务主体授予对该密钥的访问权限。将以下语句添加到您的 KMS 密钥策略中。将占位符值替换为您的 AWS 账户 ID、区域、KMS 密钥 ID 以及 S3 表或表存储桶 ARN。

```
{
    "Version": "2012-10-17",		 	 	 
    "Statement": [
        {
            "Sid": "EnableSystemTablesKeyUsage",
            "Effect": "Allow",
            "Principal": {
                "Service": "systemtables.cloudwatch.amazonaws.com"
            },
            "Action": [
                "kms:DescribeKey",
                "kms:GenerateDataKey",
                "kms:Decrypt"
            ],
            "Resource": "arn:aws:kms:aws-region:123456789012:key/key-id",
            "Condition": {
                "StringEquals": {
                    "aws:SourceAccount": "123456789012"
                }
            }
        },
        {
            "Sid": "EnableKeyUsage",
            "Effect": "Allow",
            "Principal": {
                "Service": "maintenance.s3tables.amazonaws.com"
            },
            "Action": [
                "kms:GenerateDataKey",
                "kms:Decrypt"
            ],
            "Resource": "arn:aws:kms:aws-region:123456789012:key/key-id",
            "Condition": {
                "StringLike": {
                    "kms:EncryptionContext:aws:s3:arn": "<table-or-table-bucket-arn>/*"
                }
            }
        }
    ]
}
```

## 开始使用
<a name="s3-tables-integration-getting-started"></a>

要开始使用 S3 表集成，您需要在 CloudWatch 日志和 S3 表之间设置集成。此过程包括配置数据源关联和设置适当的 IAM 权限。<a name="create-s3-table-integration"></a>

**创建 S3 表格集成**

1. 打开 CloudWatch 日志控制台，网址[https://console.aws.amazon.com/cloudwatch/](https://console.aws.amazon.com/cloudwatch)为”。

1. 选择**设置**、**全局**、**创建 S3 表集成**。

1. 自定义 S3 表中日志的加密方式，以及 CloudWatch 日志将用于将日志写入 S3 表的角色。

1. 选择**创建 S3 表集成**。<a name="associate-sources-s3-table-integration"></a>

**将源关联到 S3 表集成**

1. 打开 CloudWatch 日志控制台，网址[https://console.aws.amazon.com/cloudwatch/](https://console.aws.amazon.com/cloudwatch)为”。

1. 选择**设置**、**全局**、**管理 S3 表集成**。

1. 选择 “**关联数据源**”。

1. 选择要为其启用集成的数据源名称和数据源类型。

1. 选择 “**关联数据源**”。<a name="associate-sources-to-s3-tables-integration-via-log-mgmt"></a>

**从日志管理页面将源关联到 S3 表集成**

1. 打开 CloudWatch 日志控制台，网址[https://console.aws.amazon.com/cloudwatch/](https://console.aws.amazon.com/cloudwatch)为”。

1. 在导航窗格中选择 “**日志管理**”。

1. 选择 “**数据源**” 选项卡。

1. 选择要集成的数据源名称和数据源类型。

1. 选择 “**数据源操作”**。

1. 选择**与 S3 表集成 “关联**”。

1. 查看数据源，然后选择 “**关联数据源**”。

在使用数据之前，您必须执行以下 3 个步骤：

1. 将亚马逊 S3 表格与 AWS 分析服务集成-使用亚马逊 S3 控制台

1. 配置 Lake Formation 权限

1. Connect 使用分析工具

### 将亚马逊 S3 表格与 AWS 分析服务集成-使用亚马逊 S3 控制台（[链接](https://docs.aws.amazon.com/AmazonS3/latest/userguide/s3-tables-integrating-aws.html)）
<a name="using-s3-console"></a><a name="enable-s3-tables-integration"></a>

**使用 S3 控制台启用 S3 表集成**

1. 打开 Amazon S3 控制台，网址为 [https://console.aws.amazon.com/s3/](https://console.aws.amazon.com/s3/)。

1. 在左侧导航窗格中，选择**表存储桶**。

1. 点击顶部的 “**启用集成**”。

1. 首次在任何区域集成表存储桶时，Amazon S3 会代表您创建一个新的 IAM 服务角色。此角色允许 Lake Formation 访问您账户中的所有表存储桶，并在 G AWS lue 数据目录中联合访问您的表。

### 配置 Lake Formation 权限
<a name="configure-lake-formation-permissions"></a>

虽然 CloudWatch 日志有权写入表（在前面的步骤中配置），但用户和分析角色不会自动拥有读取数据的权限。您必须使用 AWS Lake Formation 明确授予访问权限。您必须为每位想要提供表访问权限的 IAM 委托人执行此操作。<a name="grant-query-access"></a>

**向用户或角色授予查询权限**

您必须向将在 Athena 或 Redshift 中运行查询的 IAM 委托人（用户或角色）授予选择和描述权限。

1. 打开 AWS Lake Formation 控制台。

1. 在导航窗格的**权限**下，选择**数据湖权限**。

1. 选择**授权**。

1. **委托人**：选择需要访问权限的 IAM 用户或角色（例如，您的数据分析师或您当前正在使用的管理员角色）。

1. **LF-Tags 或目录资源**：选择**命名数据目录**资源。

1. **数据库和表**：
   + 选择 CloudWatch 集成创建的 S3 表存储桶（`aws-cloudwatch`）。
   + 选择与您的数据源关联的特定表（可选）。

1. **表权限**：选择 “**选择**并**描述**”。

1. 选择**授权**。

**注意**  
如果您在 Athena 中查询日志时遇到 “访问被拒绝” 错误，请确保运行查询的用户同时拥有适用于 Athena 的相应的 IAM 权限和上面定义的 Lake Formation 权限。

要详细了解 Lake Formation 权限，请[https://docs.aws.amazon.com/lake-formation/latest/dg/granting访问-catalog-permissions.html](https://docs.aws.amazon.com/lake-formation/latest/dg/granting-catalog-permissions.html)。

### Connect 使用分析工具
<a name="connect-with-analytics-tools"></a>

授予权限后，您可以将首选分析服务配置为查询 S3 表。S3 表格使用 Apache Iceberg 格式，亚马逊 Athena、Amazon Redshift 和 Amazon EMR 原生支持该格式。

#### 在 Amazon Athena 中查询日志数据
<a name="query-data-in-athena"></a>

Amazon Athena 通过 Amazon S3 表格目录与 S3 表进行交互。<a name="setup-athena-query"></a>

**设置 Athena 以查询您的日志数据**

1. 打开亚马逊 Athena 主机，网址为。[https://console.aws.amazon.com/athena/](https://console.aws.amazon.com/athena/)

1. 在查询编辑器中，从数据源下拉列表中选择 **Amazon S3 表**目录。

1. 如果您看不到目录，请确保您已完成上述针对特定用户角色的 Lake Formation 权限步骤。

1. 选择目录后，您的日志表将出现在数据库列表中。现在，您可以对日志数据运行标准 SQL 查询。

**查询示例：**`SELECT * FROM "amazon_vpc__flow" LIMIT 100;`

要详细了解如何将分析服务与 S3 表格连接起来，请访问 [https://docs.aws.amazon.com/AmazonS3/latest/userguide/s3-tables-integrating-aws .html。](https://docs.aws.amazon.com/AmazonS3/latest/userguide/s3-tables-integrating-aws.html)