使用 S3 Tables 整合存取日誌 - Amazon CloudWatch Logs

本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。

使用 S3 Tables 整合存取日誌

S3 Tables 與 CloudWatch 整合可讓您使用分析引擎存取擷取至 CloudWatch 的日誌資料,例如 Amazon Athena、Amazon Redshift,以及支援連線至 Apache Iceberg 相容存放區的第三方工具。此整合可讓您使用偏好的工具執行全面的日誌分析,並將 CloudWatch Logs 中的資料與非 CloudWatch 資料建立關聯。

了解 S3 資料表整合

Amazon S3 Tables Integration 是一種全受管解決方案,可讓您在 CloudWatch Logs 中的日誌做為受管 Amazon S3 資料表使用。透過此整合,除了 CloudWatch Logs 功能之外,您還可以獲得更靈活的分析日誌方式。

整合的運作方式是建立受管 Amazon S3 資料表儲存貯體 (aws-cloudwatch),並根據資料來源名稱和類型將特定日誌來源與 Amazon S3 資料表建立關聯 (可從 CloudWatch Logs 主控台中的日誌管理 > 資料來源索引標籤進行管理)。建立關聯後,CloudWatch Logs 資料即可使用 Apache Iceberg 格式透過 Amazon S3 Tables 存取。此格式為各種分析引擎提供標準化的方式來有效率地查詢資料。

核心元件

資料來源關聯

根據資料來源和類型條件,將特定 CloudWatch Logs 來源連結至 S3 Tables 整合的程序。

Apache Iceberg 資料表

S3 Tables 所使用的基礎資料表格式,可提供結構化資料儲存,並與多個分析引擎相容。

資料流到 S3 資料表

了解 CloudWatch Logs 和 S3 Tables 之間的資料流程如何協助您規劃整合並有效管理日誌資料。

當您建立關聯時,CloudWatch Logs 會自動將符合相關聯資料來源名稱和類型的新日誌事件傳送至 CloudWatch 受管 S3 資料表儲存貯體。您可以在該資料來源的對應資料表下的日誌命名空間中找到這些事件。整合只會處理在您建立關聯之後新增的日誌事件,而且不會在建立關聯之前從 回填日誌。

S3 資料表儲存貯體中的資料保留符合為日誌群組設定的保留政策。例如,如果您將日誌群組設定為 1 天保留,CloudWatch Logs 會在一天後從 CloudWatch Logs 和 S3 資料表中移除資料。當您刪除日誌群組或日誌串流時,CloudWatch Logs 也會從 S3 資料表儲存貯體中移除資料。

何時使用 S3 資料表整合

考慮使用 S3 Tables 整合將日誌資料與其他外部或非 CloudWatch 資料建立關聯,或當您偏好使用 Amazon Athena 等其他分析工具對 CloudWatch Logs 資料執行分析時。當您需要的功能超出 CloudWatch Logs 中可用的功能時,請使用此整合。此整合在下列情況下特別有價值:

  • 您需要跨大量日誌資料執行複雜的類似 SQL 的查詢

  • 您想要將日誌分析與現有的分析工作流程和工具整合

  • 您需要涵蓋多個資料來源的全方位日誌分析功能

除了現有的 CloudWatch 擷取和儲存定價之外,透過此整合建立的 S3 資料表無需支付額外的儲存或資料表維護費用。

先決條件

在實作整合之前,請確定您有下列項目:

  • 現有的 CloudWatch Logs 資料

  • CloudWatch Logs 和 S3 Tables 之間跨服務存取的適當 IAM 許可,如下節所述

IAM 許可

若要將 CloudWatch Logs 與 S3 Tables 整合,您需要為兩個不同的實體設定 IAM 許可:設定整合的使用者或角色,以及 CloudWatch Logs 擔任以將資料寫入 S3 Tables 的服務角色。

針對建立整合的角色或使用者

設定整合的使用者或角色需要下列許可:

  • observabilityadmin:CreateS3TableIntegration 建立整合並logs:AssociateSourceToS3TableIntegration新增來源

  • s3tables:CreateTableBuckets3tables:PutTableBucketEncryptions3tables:PutTableBucketPolicy 來設定 S3 資料表儲存貯體

對於 服務角色

將下列 IAM 政策連接至 CloudWatch Logs 用來將資料寫入資料表儲存貯體的 IAM 服務角色。此政策授予寫入資料表的許可。將 aws-region123456789012log-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" } } } ] }

將下列信任政策連接至 CloudWatch Logs 將擔任的 IAM 服務角色,以將日誌資料寫入 S3 Tables。您可以在整合設定期間建立或選取此角色。條件會限制角色,以便 CloudWatch Logs 只能為指定的帳戶和日誌群組擔任該角色。將 aws-region123456789012log-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 Tables Integration,您需要設定 CloudWatch Logs 和 S3 Tables 之間的整合。此程序涉及設定資料來源關聯和設定適當的 IAM 許可。

建立 S3 資料表整合
  1. 開啟位於 https://https://console.aws.amazon.com/cloudwatch/ 的 CloudWatch Logs 主控台。

  2. 選擇設定全域建立 S3 資料表整合

  3. 自訂如何在 S3 Tables 中加密日誌,以及 CloudWatch Logs 將用來將日誌寫入 S3 Tables 的角色。

  4. 選擇建立 S3 資料表整合

將來源與 S3 資料表整合建立關聯
  1. 在 https://https://console.aws.amazon.com/cloudwatch/ 開啟 CloudWatch Logs 主控台。

  2. 選擇設定全域管理 S3 資料表整合

  3. 選擇關聯資料來源

  4. 選取您要啟用整合的資料來源名稱和資料來源類型。

  5. 選擇關聯資料來源

從日誌管理頁面將來源與 S3 資料表整合建立關聯
  1. 在 https://https://console.aws.amazon.com/cloudwatch/ 開啟 CloudWatch Logs 主控台。

  2. 在導覽窗格中選擇日誌管理

  3. 選取資料來源索引標籤。

  4. 選擇您要整合的資料來源名稱和資料來源類型。

  5. 選擇資料來源動作

  6. 選取與 S3 Tables Integration 建立關聯

  7. 檢閱資料來源,然後選擇關聯資料來源