

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

# 使用 S3 Tables 整合存取日誌
<a name="s3-tables-integration"></a>

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

## 了解 S3 資料表整合
<a name="understanding-s3-tables-integration"></a>

 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 存取。此格式為各種分析引擎提供標準化的方式來有效率地查詢資料。

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

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

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

### S3 資料表的資料流程
<a name="data-flow"></a>

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

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

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

## 何時使用 S3 資料表整合
<a name="3-tables-integration-when-to-use"></a>

考慮使用 S3 Tables 整合將日誌資料與其他外部或非 CloudWatch 資料建立關聯，或當您偏好使用 Amazon Athena 等其他分析工具對 CloudWatch Logs 資料執行分析時。當您需要的功能超出 CloudWatch Logs 中可用的功能時，請使用此整合。此整合在以下情況下特別有用：
+ 您需要跨大量日誌資料執行複雜的類似 SQL 的查詢
+ 您想要將日誌分析與現有的分析工作流程和工具整合
+ 您需要涵蓋多個資料來源的全方位日誌分析功能

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

## 先決條件
<a name="s3-tables-integration-prerequisites"></a>

在實作整合之前，請確定您有下列項目：
+ 現有的 CloudWatch Logs 資料
+ CloudWatch Logs 和 S3 Tables 之間跨服務存取的適當 IAM 許可，如下節所述

### IAM 許可
<a name="s3-tables-integration-iam-permissions"></a>

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

#### 針對建立整合的角色或使用者
<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"
                }
            }
        }
    ]
}
```

將下列信任政策連接至 CloudWatch Logs 將擔任的 IAM 服務角色，以將日誌資料寫入 S3 Tables。您可以在整合設定期間建立或選取此角色。這些條件會限制角色，以便 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 Tables Integration，您需要設定 CloudWatch Logs 和 S3 Tables 之間的整合。此程序涉及設定資料來源關聯和設定適當的 IAM 許可。<a name="create-s3-table-integration"></a>

**建立 S3 資料表整合**

1. 開啟位於 https：//[https://console.aws.amazon.com/cloudwatch/](https://console.aws.amazon.com/cloudwatch) 的 CloudWatch Logs 主控台。

1. 選擇**設定**、**全域**、**建立 S3 資料表整合**。

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

1. 選擇**建立 S3 資料表整合**。<a name="associate-sources-s3-table-integration"></a>

**將來源與 S3 資料表整合建立關聯**

1. 在 https：//[https://console.aws.amazon.com/cloudwatch/](https://console.aws.amazon.com/cloudwatch) 開啟 CloudWatch Logs 主控台。

1. 選擇**設定**、**全域**、**管理 S3 資料表整合**。

1. 選擇**關聯資料來源**。

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

1. 選擇**關聯資料來源**。<a name="associate-sources-to-s3-tables-integration-via-log-mgmt"></a>

**從日誌管理頁面將來源與 S3 資料表整合建立關聯**

1. 在 https：//[https://console.aws.amazon.com/cloudwatch/](https://console.aws.amazon.com/cloudwatch) 開啟 CloudWatch Logs 主控台。

1. 在導覽窗格中選擇**日誌管理**。

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

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

1. 選擇**資料來源動作**。

1. 選取**與 S3 Tables Integration 建立關聯**。

1. 檢閱資料來源，然後選擇**關聯資料來源**。

您必須先執行下列 3 個步驟，才能使用資料：

1. 將 Amazon S3 Tables 與 AWS 分析服務整合 - 使用 Amazon S3 主控台

1. 設定 Lake Formation 許可

1. 使用分析工具連線

### 將 Amazon S3 Tables 與 AWS 分析服務整合 - 使用 Amazon 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 Tables 整合**

1. 開啟位於 [https://console.aws.amazon.com/s3/](https://console.aws.amazon.com/s3/) 的 Amazon S3 主控台。

1. 在左側導覽窗格中，選擇**資料表儲存貯體**。

1. 按一下頂端的**啟用整合**。

1. 您第一次在任何區域中整合資料表儲存貯體時，Amazon Amazon S3 會代表您建立新的 IAM 服務角色。此角色允許 Lake Formation 存取您帳戶中的所有資料表儲存貯體，並聯合存取 Glue Data Catalog AWS 中的資料表。

### 設定 Lake Formation 許可
<a name="configure-lake-formation-permissions"></a>

雖然 CloudWatch Logs 具有寫入資料表的許可 （在先前的步驟中設定），但使用者和分析角色不會自動擁有讀取資料的許可。您必須使用 AWS Lake Formation 明確授予存取權。您必須為每個要提供資料表存取權的 IAM 主體執行此操作。<a name="grant-query-access"></a>

**將查詢存取權授予使用者或角色**

您必須將 SELECT 和 DESCRIBE 許可授予將在 Athena 或 Redshift 中執行查詢的 IAM 主體 （使用者或角色）。

1. 開啟 AWS Lake Formation 主控台。

1. 在導覽窗格中的**許可**下，選擇**資料湖許可**。

1. 選擇 **Grant** (授予)。

1. **委託人**：選取需要存取的 IAM 使用者或角色 （例如，您的資料分析師或您目前正在使用的管理員角色）。

1. **LF 標籤或目錄資源**：選取**具名資料目錄資源**。

1. **資料庫和資料表**：
   + 選取 CloudWatch 整合所建立的 S3 Table 儲存貯體 (`aws-cloudwatch`)。
   + 選取與您的資料來源相關聯的特定資料表 （選用）。

1. **資料表許可**：選取**選取**和**描述**。

1. 選擇 **Grant** (授予)。

**注意**  
如果您在 Athena 中查詢日誌時遇到「存取遭拒」錯誤，請確定執行查詢的使用者具有上述定義之 Athena 和 Lake Formation 許可的適當 IAM 許可。

如需 Lake Formation 許可的詳細資訊，請參閱 https：//[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)。

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

授予許可後，您可以設定偏好的分析服務來查詢 S3 資料表。S3 Tables 使用 Apache Iceberg 格式，Amazon Athena、Amazon Redshift 和 Amazon EMR 原生支援此格式。

#### 在 Amazon Athena 中查詢日誌資料
<a name="query-data-in-athena"></a>

Amazon Athena 透過 Amazon S3 Tables 目錄與 Amazon S3 Tables 互動。<a name="setup-athena-query"></a>

**設定 Athena 以查詢您的日誌資料**

1. 前往 [https://console.aws.amazon.com/athena/](https://console.aws.amazon.com/athena/) 開啟 Amazon Athena 主控台。

1. 在查詢編輯器中，從資料來源下拉式清單中選取 **Amazon S3 Tables** 目錄。

1. 如果您沒有看到目錄，請確定您已完成上述特定使用者角色的 Lake Formation 許可步驟。

1. 選取目錄後，您的日誌資料表將顯示在資料庫清單中。您現在可以針對日誌資料執行標準 SQL 查詢。

**查詢範例：** `SELECT * FROM "amazon_vpc__flow" LIMIT 100;`

請前往 https：//[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) 進一步了解如何將 Analytics 服務與 S3 Tables 連線。