🔥
Athena Federated Queryを使ってCloudWatch Logsからクエリを実行する方法と制限事項
書くこと
- Athena Federated Queryを使用して、CloudWatch Logsを接続先データソースとしてクエリを実行する方法
- 制限事項: クエリの実行時間
データの流れ
データは次のような流れで取得されます:
CloudWatch Logs => Lambda => Athena
Athena Federated Queryを使用して、CloudWatch Logsを接続先データソースとしてクエリを実行する方法
- S3バケットの追加
- Athenaデータソースの追加
- サンプルクエリの実行
S3バケットの追加
LambdaアプリケーションがCloudWatch LogsとAthenaの接続を行うために使用するS3バケットを追加します。
今回は、「athena-cloudwatch-connector-spill-bucket-sample」という名前のバケットを作成しました。
Athenaデータソースの追加
- AWSマネジメントコンソールにログインし、Athenaを選択します。
- 左のサイドバーで「データソース」を選択し、「データソースの作成」をクリックします。
- データソースで「Amazon CloudWatch Logs」を選択します。
- データソースの詳細を入力します。
- データソース名: 例「AwsCloudWatchLogCatalog」
- 接続の詳細で「Lambda関数の作成」を選択します。
- アプリケーションの設定を行います。
2. アプリケーション名: 例「AthenaCloudwatchConnector」
3. SpillBucket: 「athena-cloudwatch-connector-spill-bucket-sample」
4. AthenaCatalogName: 「cloudwatch_logs_catalog」
5. 「このアプリがカスタム IAM ロールとリソースポリシーを作成することを承認します。」にチェックを入れます。 - 作成後、Athenaデータソース作成画面に戻ります。
- 接続の詳細を入力します。
6. 先ほど作成したLambda関数を選択します。
Athenaデータソースの作成画面
Lambda関数の作成画面
クエリの実行
以下のようなデータソースの選択方法で参照できるようになります。
select *
from "AwsCloudWatchLogCataLog"."YourCloudWatchLogGroup"."all_log_streams"
制限事項: クエリの実行時間
クエリの実行時間は、900秒を超えることができません。
以下は、実行時に発生したエラーです。
GENERIC_USER_ERROR: Encountered an exception[null] from your LambdaFunction
(...中略...)
Task timed out after 900.06 seconds]
Discussion