

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

# S3 Tables 統合によるログへのアクセス
<a name="s3-tables-integration"></a>

S3 Tables Integration with CloudWatch を使用すると、Amazon Athena、Amazon Redshift、Apache Iceberg 互換ストアへの接続をサポートするサードパーティーツールなどの分析エンジンを使用して、CloudWatch に取り込まれたログデータにアクセスできます。この統合により、任意のツールを使用して包括的なログ分析を実行し、CloudWatch Logs のデータを CloudWatch 以外のデータと関連付けることができます。

## S3 Tables の統合について
<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 は 1 日後に CloudWatch Logs と S3 Table の両方からデータを削除します。ロググループまたはログストリームを削除すると、CloudWatch Logs は S3 テーブルバケットからデータも削除します。

## S3 テーブル統合を使用するタイミング
<a name="3-tables-integration-when-to-use"></a>

S3 Tables 統合を使用して、ログデータを他の外部データまたは CloudWatch 以外のデータと関連付けたり、Amazon Athena などの他の分析ツールを使用して CloudWatch Logs データに対して分析を実行したりすることを検討してください。CloudWatch Logs で利用できる機能を超える機能が必要な場合は、この統合を使用します。この統合は、次の場合に特に役立ちます。
+ 大量のログデータに対して複雑な SQL のようなクエリを実行する必要があります
+ ログ分析を既存の分析ワークフローやツールと統合したい
+ 複数のデータソースにまたがる包括的なログ分析機能が必要です

この統合によって作成された S3 テーブルには、既存の CloudWatch の取り込みとストレージ料金以外に、追加のストレージやテーブルのメンテナンス料金はかかりません。

## 前提条件
<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 と統合するには、統合を設定するユーザーまたはロールと、CloudWatch Logs が S3 Tables にデータを書き込むために引き受けるサービスロールの 2 つのエンティティに IAM アクセス許可を設定する必要があります。

#### 統合を作成するロールまたはユーザーの場合
<a name="user-iam-permissions"></a>

統合を設定するユーザーまたはロールには、次のアクセス許可が必要です。
+ `observabilityadmin:CreateS3TableIntegration` 統合を作成し`logs:AssociateSourceToS3TableIntegration`、ソースを追加するには
+ `s3tables:CreateTableBucket`、`s3tables:PutTableBucketEncryption`、および `s3tables:PutTableBucketPolicy`を使用して S3 テーブルバケットを設定する

#### サービスロールの場合
<a name="service-role-iam-policies"></a>

CloudWatch Logs がテーブルバケットへのデータの書き込みに使用する IAM サービスロールに、次の 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 が S3 Tables にログデータを書き込むために引き受ける 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 Tables 統合を開始するには、CloudWatch Logs と S3 Tables の統合を設定する必要があります。このプロセスでは、データソースの関連付けを設定し、適切な IAM アクセス許可を設定します。<a name="create-s3-table-integration"></a>

**S3 テーブル統合を作成するには**

1. [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://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://console.aws.amazon.com/cloudwatch/](https://console.aws.amazon.com/cloudwatch)" で CloudWatch Logs コンソールを開きます。

1. ナビゲーションペインで**ログ管理**を選択します。

1. **データソース**タブを選択します。

1. 統合するデータソース名とデータソースタイプを選択します。

1. **データソースアクション**を選択します。

1. **S3 テーブル統合に関連付ける**を選択します。

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. Amazon S3 コンソール ([https://console.aws.amazon.com/s3/](https://console.aws.amazon.com/s3/)) を開きます。

1. 左側のナビゲーションペインで、**[テーブルバケット]** を選択します。

1. 上部**の統合を有効にする**をクリックします。

1. 任意のリージョンでテーブルバケットを初めて統合すると、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>

**ユーザーまたはロールにクエリアクセスを許可するには**

Athena または Redshift でクエリを実行する IAM プリンシパル (ユーザーまたはロール) に SELECT および DESCRIBE アクセス許可を付与する必要があります。

1.  AWS Lake Formation コンソールを開きます。

1. ナビゲーションペインの **[Permissions]** (許可) で **[Data lake permissions]** (データレイクの許可) を選択します。

1. **[付与]** を選択します。

1. **プリンシパル**: アクセスを必要とする IAM ユーザーまたはロール (データアナリストや現在使用している管理者ロールなど) を選択します。

1. **LF タグまたはカタログリソース**: **名前付きデータカタログリソース**を選択します。

1. **データベースとテーブル**: 
   + CloudWatch 統合 () によって作成された S3 Table バケットを選択します`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) を参照してください。

### 分析ツールで接続する
<a name="connect-with-analytics-tools"></a>

アクセス許可が付与されたら、S3 テーブルをクエリするように任意の分析サービスを設定できます。S3 Tables は、Amazon Athena、Amazon Redshift、Amazon EMR でネイティブにサポートされている Apache Iceberg 形式を使用します。

#### 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;`

Analytics サービスと S3 Tables の接続の詳細については、[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) を参照してください。