View a markdown version of this page

使用 S3 表格集成访问日志 - 亚马逊 CloudWatch 日志

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

使用 S3 表格集成访问日志

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

了解 S3 表集成

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

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

核心组件

Apache Iceberg 表

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

数据源关联

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

数据流向 S3 表

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

创建关联时,Lo CloudWatch gs 会自动将与关联数据源名称和类型匹配的新日志事件传送 CloudWatch-managed 到 S3 表存储桶。这些事件出现在该数据源的相应表下方的日志命名空间中。集成过程仅记录创建关联后收到的事件。现有日志数据不会回填。创建 S3 表集成时,如果您将 “启用所有日志源和类型在 S3 表中可用” 复选框保留为选中状态,则默认情况下,您的账户中的所有数据源都将自动关联并传输到 S3 表,包括将来添加的任何数据源。要仅向 S3 表提供特定的数据源,请在创建集成时清除此复选框,然后单独关联要包含的数据源。

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

何时使用 S3 表格集成

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

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

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

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

除了现有的 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,替换为您的 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-region123456789012、和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 密钥策略(适用于加密数据)

如果您使用客户托管密钥加密日志数据,则必须向 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>/*" } } } ] }

开始使用

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

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

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

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

  4. 如果您希望所有数据源自动与集成关联,请将 “启用所有日志源和类型在 S3 表中可用” 复选框保留为选中状态(默认情况下处于选中状态)。如果您只想关联特定的数据源,请清除此复选框。

  5. 选择创建 S3 表集成

注意

如果您选择了在创建期间允许所有日志源和类型在 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. 查看数据源,然后选择 “关联数据源”。

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

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

  2. 配置 Lake Formation 权限

  3. Connect 使用分析工具

将亚马逊 Amazon S3 表格与 AWS 分析服务-使用 Amazon S3 控制台 (Link)

使用 S3 控制台启用 S3 表集成
  1. 打开 Amazon S3 控制台,网址为 https://console.aws.amazon.com/s3/

  2. 在左侧导航窗格中,选择表存储桶

  3. 选择顶部的 “启用集成”。

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

配置 Lake Formation 权限

虽然 CloudWatch 日志有权写入表(在前面的步骤中配置),但用户和分析角色不会自动拥有读取数据的权限。您必须使用 AWS Lake Formation 明确授予访问权限。您必须为每位想要提供表访问权限的 IAM 委托人执行此操作。

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

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

  1. 打开 AWS Lake Formation 控制台。

  2. 在导航窗格的权限下,选择数据湖权限

  3. 选择授权

  4. 委托人:选择需要访问权限的 IAM 用户或角色(例如,您的数据分析师或您当前正在使用的管理员角色)。

  5. LF-Tags 或目录资源:选择命名数据目录资源

  6. 数据库和表

    • 选择 CloudWatch 集成创建的 S3 表存储桶(aws-cloudwatch)。

    • 选择与您的数据源关联的特定表(可选)。

  7. 表权限:选择 “选择描述”。

  8. 选择授权

注意

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

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

Connect 使用分析工具

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

在 Amazon Athena 中查询日志数据

Amazon Athena 通过 Amazon S3 表格目录与 S3 表进行交互。

设置 Athena 以查询您的日志数据
  1. 打开亚马逊 Athena 主机,网址为。https://console.aws.amazon.com/athena/

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

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

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

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

要详细了解如何将 Analytics 服务与 S3 表连接起来,请https://docs.aws.amazon.com/AmazonS3/latest/userguide/s3-tables-integrating-aws.html访问。