翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。
S3 Tables 統合によるログへのアクセス
S3 Tables Integration with CloudWatch を使用すると、Amazon Athena、Amazon Redshift、Apache Iceberg 互換ストアへの接続をサポートするサードパーティーツールなどの分析エンジンを使用して、CloudWatch に取り込まれたログデータにアクセスできます。この統合により、任意のツールを使用して包括的なログ分析を実行し、CloudWatch Logs のデータを CloudWatch 以外のデータと関連付けることができます。
S3 Tables の統合について
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 は 1 日後に CloudWatch Logs と S3 Table の両方からデータを削除します。ロググループまたはログストリームを削除すると、CloudWatch Logs は S3 テーブルバケットからデータも削除します。
S3 テーブル統合を使用するタイミング
S3 Tables 統合を使用して、ログデータを他の外部データまたは CloudWatch 以外のデータと関連付けたり、Amazon Athena などの他の分析ツールを使用して CloudWatch Logs データに対して分析を実行したりすることを検討してください。CloudWatch Logs で利用できる機能を超える機能が必要な場合は、この統合を使用します。この統合は、次の場合に特に役立ちます。
-
大量のログデータに対して複雑な SQL のようなクエリを実行する必要があります
-
ログ分析を既存の分析ワークフローやツールと統合したい
-
複数のデータソースにまたがる包括的なログ分析機能が必要です
この統合によって作成された S3 テーブルには、既存の CloudWatch の取り込みとストレージ料金以外に、追加のストレージやテーブルのメンテナンス料金はかかりません。
前提条件
統合を実装する前に、以下があることを確認してください。
-
既存の CloudWatch Logs データ
-
次のセクションで説明するように、CloudWatch Logs と S3 Tables 間のクロスサービスアクセスのための適切な IAM アクセス許可
IAM アクセス許可
CloudWatch Logs を S3 Tables と統合するには、統合を設定するユーザーまたはロールと、CloudWatch Logs が S3 Tables にデータを書き込むために引き受けるサービスロールの 2 つのエンティティに IAM アクセス許可を設定する必要があります。
統合を作成するロールまたはユーザーの場合
統合を設定するユーザーまたはロールには、次のアクセス許可が必要です。
-
observabilityadmin:CreateS3TableIntegration統合を作成しlogs:AssociateSourceToS3TableIntegration、ソースを追加するには -
s3tables:CreateTableBucket、s3tables:PutTableBucketEncryption、およびs3tables:PutTableBucketPolicyを使用して S3 テーブルバケットを設定する
サービスロールの場合
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 キーポリシー (暗号化されたデータ用)
カスタマーマネージドキーを使用してログデータを暗号化する場合は、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 統合を開始するには、CloudWatch Logs と S3 Tables の統合を設定する必要があります。このプロセスでは、データソースの関連付けを設定し、適切な IAM アクセス許可を設定します。
S3 テーブル統合を作成するには
-
https://console.aws.amazon.com/cloudwatch/
" で CloudWatch Logs コンソールを開きます。 -
設定、グローバル、S3 テーブル統合の作成を選択します。
-
S3 Tables でログを暗号化する方法と、CloudWatch Logs がログを S3 Tables に書き込むために使用するロールをカスタマイズします。
-
S3 テーブル統合の作成 を選択します。
ソースを S3 テーブル統合に関連付けるには
-
https://console.aws.amazon.com/cloudwatch/
" で CloudWatch Logs コンソールを開きます。 -
設定、グローバル、S3 テーブル統合の管理を選択します。
-
データソースの関連付けを選択します。
-
統合を有効にするデータソース名とデータソースタイプを選択します。
-
データソースの関連付けを選択します。
ログ管理ページからソースを S3 テーブル統合に関連付けるには
-
https://console.aws.amazon.com/cloudwatch/
" で CloudWatch Logs コンソールを開きます。 -
ナビゲーションペインでログ管理を選択します。
-
データソースタブを選択します。
-
統合するデータソース名とデータソースタイプを選択します。
-
データソースアクションを選択します。
-
S3 テーブル統合に関連付けるを選択します。
-
データソースを確認し、データソースの関連付けを選択します。
データを使用する前に、次の 3 つのステップを実行する必要があります。
-
Amazon S3 Tables と AWS 分析サービスの統合 - Amazon S3 コンソールの使用
-
Lake Formation アクセス許可を設定する
-
分析ツールで接続する
Amazon S3 Tables と AWS 分析サービスの統合 - Amazon S3 コンソールの使用 (リンク)
S3 コンソールを使用して S3 Tables 統合を有効にするには
-
Amazon S3 コンソール (https://console.aws.amazon.com/s3/
) を開きます。 -
左側のナビゲーションペインで、[テーブルバケット] を選択します。
-
上部の統合を有効にするをクリックします。
-
任意のリージョンでテーブルバケットを初めて統合すると、Amazon S3 はユーザーに代わって新しい IAM サービスロールを作成します。このロールにより、Lake Formation はアカウント内のすべてのテーブルバケットにアクセスし、 Glue Data Catalog AWS のテーブルへのフェデレーションアクセスが可能になります。
Lake Formation アクセス許可を設定する
CloudWatch Logs にはテーブルに書き込むアクセス許可がありますが (前のステップで設定)、ユーザーと分析ロールにはデータを読み取るアクセス許可が自動的にありません。 AWS Lake Formation を使用してアクセスを明示的に許可する必要があります。これは、テーブルへのアクセスを許可するすべての IAM プリンシパルに対して実行する必要があります。
ユーザーまたはロールにクエリアクセスを許可するには
Athena または Redshift でクエリを実行する IAM プリンシパル (ユーザーまたはロール) に SELECT および DESCRIBE アクセス許可を付与する必要があります。
-
AWS Lake Formation コンソールを開きます。
-
ナビゲーションペインの [Permissions] (許可) で [Data lake permissions] (データレイクの許可) を選択します。
-
[付与] を選択します。
-
プリンシパル: アクセスを必要とする IAM ユーザーまたはロール (データアナリストや現在使用している管理者ロールなど) を選択します。
-
LF タグまたはカタログリソース: 名前付きデータカタログリソースを選択します。
-
データベースとテーブル:
-
CloudWatch 統合 () によって作成された S3 Table バケットを選択します
aws-cloudwatch。 -
データソースに関連付けられている特定のテーブルを選択します (オプション)。
-
-
テーブルのアクセス許可: 選択と説明を選択します。
-
[付与] を選択します。
注記
Athena でログをクエリするときに「アクセス拒否」エラーが発生した場合は、クエリを実行しているユーザーに Athena の適切な IAM アクセス許可と上記で定義された Lake Formation アクセス許可の両方があることを確認してください。
Lake Formation のアクセス許可の詳細については、https://docs.aws.amazon.com/lake-formation/latest/dg/granting-catalog-permissions.html を参照してください。
分析ツールで接続する
アクセス許可が付与されたら、S3 テーブルをクエリするように任意の分析サービスを設定できます。S3 Tables は、Amazon Athena、Amazon Redshift、Amazon EMR でネイティブにサポートされている Apache Iceberg 形式を使用します。
Amazon Athena でログデータをクエリするには
Amazon Athena は、Amazon S3 Tables カタログを介して Amazon S3 Tables とやり取りします。
ログデータをクエリするように Athena を設定するには
-
https://console.aws.amazon.com/athena/
で Amazon Athena コンソールを開きます。 -
クエリエディタで、データソースドロップダウンから Amazon S3 Tables カタログを選択します。
-
カタログが表示されない場合は、特定のユーザーロールに対して上記の Lake Formation アクセス許可ステップを完了していることを確認してください。
-
カタログを選択すると、ログテーブルがデータベースリストに表示されます。ログデータに対して標準 SQL クエリを実行できるようになりました。
クエリの例: SELECT * FROM "amazon_vpc__flow" LIMIT 100;
Analytics サービスと S3 Tables の接続の詳細については、https://docs.aws.amazon.com/AmazonS3/latest/userguide/s3-tables-integrating-aws.html を参照してください。