使用 S3 表格集成访问日志 - Amazon CloudWatch 日志
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

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

使用 S3 表格集成访问日志

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

了解 S3 表集成

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

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

核心组件

数据源关联

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

Apache Iceberg 表

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

数据流向 S3 表

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

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

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

何时使用 S3 表格集成

考虑使用 S3 表集成将日志数据与其他外部或非数据关联起来,或者当您更喜欢使用 Amazon Athena 等其他分析工具对日志CloudWatch 数据进行 CloudWatch 分析时。当您需要的功能超出 CloudWatch 日志中可用范围的功能时,请使用此集成。在以下情况下,这种集成特别有价值:

  • 您需要对大量日志数据运行类似 SQL 的复杂查询

  • 您想将日志分析与现有分析工作流程和工具集成

  • 您需要跨多个数据源的全面日志分析功能

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

先决条件

在实施集成之前,请确保您具备以下条件:

  • 现有 CloudWatch 日志数据

  • 在 CloudWatch 日志和 S3 表之间进行跨服务访问的相应的 IAM 权限,如以下部分所述

IAM 权限

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

适用于创建集成的角色或用户

设置集成的用户或角色需要以下权限:

  • observabilityadmin:CreateS3TableIntegration创建集成并logs:AssociateSourceToS3TableIntegration添加源代码

  • s3tables:CreateTableBuckets3tables:PutTableBucketEncryption,以及s3tables:PutTableBucketPolicy配置 S3 表存储桶

对于服务角色

将以下 IAM 策略附加到 CloudWatch Logs 用来向表存储桶写入数据的 IAM 服务角色。此策略授予写入表的权限。将aws-region123456789012、和log-group-name,替换为您的 Amazon 区域、账户 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-region123456789012、和log-group-name,替换为您的 Amazon 区域、账户 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 密钥策略(适用于加密数据)

如果您使用客户托管密钥加密日志数据,则必须向 CloudWatch 服务主体和 S3 Tables 维护服务主体授予对该密钥的访问权限。将以下语句添加到您的 KMS 密钥策略中。将占位符值替换为您的 Amazon Web Services 账户 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>/*" } } } ] }

开始使用

要开始使用 S3 表集成,您需要在 CloudWatch 日志和 S3 表之间设置集成。此过程包括配置数据源关联和设置适当的 IAM 权限。

创建 S3 表格集成
  1. 打开 CloudWatch 日志控制台,网址https://console.aws.amazon.com/cloudwatch/为”。

  2. 选择设置全局创建 S3 表集成

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

  4. 选择创建 S3 表集成

将源关联到 S3 表集成
  1. 打开 CloudWatch 日志控制台,网址https://console.aws.amazon.com/cloudwatch/为”。

  2. 选择设置全局管理 S3 表集成

  3. 选择 “关联数据源”。

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

  5. 选择 “关联数据源”。

从日志管理页面将源关联到 S3 表集成
  1. 打开 CloudWatch 日志控制台,网址https://console.aws.amazon.com/cloudwatch/为”。

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

  3. 选择 “数据源” 选项卡。

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

  5. 选择 “数据源操作”

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

  7. 查看数据源,然后选择 “关联数据源”。