Amazon AthenaからFederated QueryでCloudWatch Logsに接続する
Posted on
- はじめに
- やること
-
- 1) ログを準備する。
- 2) S3バケットを準備する
- 3) Athenaのコンソールにアクセスして画面上部の データソース をクリックする
- 4) データソースを接続する をクリックする
- 5) データソースに Amazon CloudWatch Logs を選んで 次へ をクリックする
- 6) 新しいAWS Lambda関数を設定をクリックする
- 7) コネクタのパラメータを設定してデプロイをクリックする。
- 8) Athenaの画面でLambda関数とカタログ名を入力して接続をクリックする
- 9) カタログに新しくathena-cloudwatchができていることを確認する。
- 10) クエリエディタに移動して,ログを参照できることを確認する。
- まとめ
- 参考サイト
はじめに
Amazon AthenaからFederated Queryを使って色々なデータソースにアクセスできるようになりました。
今まではAthenaでCloudWatch Logsのログを見るためには、
一旦ログをS3に退避するという手順が必要でしたが
Federated Queryを使えばS3に退避せずにログを参照することができるようになりました。
やること
Athenaと各データソースをつなぐためには、
Lambdaのデータソースコネクタの登録と,Lambdaが使用するS3バケットが必要となります。
(S3バケットは取得したデータがLambdaの上限を超えている場合の退避場所として使用するようです。)
ここでは、 CloudWatch Logs用のデータソースコネクタ設定して ログを参照してみます。
やってみた。
1) ログを準備する。
まず参照先のログを準備しておきます。
コンソールからロググループ、ストリーム,イベントメッセージを登録します。
- ロググループ : /Athena/test
- ストリーム : test
- イベントメッセージ : これはテストです
2) S3バケットを準備する
コンソールからデータソースコネクタ用S3バケットを登録します。
- バケット名: athena-cloudwatch-20210430
3) Athenaのコンソールにアクセスして画面上部の [データソース] をクリックする
4) [データソースを接続する] をクリックする
5) データソースに [Amazon CloudWatch Logs] を選んで [次へ] をクリックする
[データソースのクエリを実行する]を選択したあと、各データソースが選べるようになります。
そこで[Amazon CloudWatch Logs]を選択して[次へ]をクリックしてください。
6) [新しいAWS Lambda関数を設定]をクリックする
コネクタ用のLambda関数を選択する画面ですが、まだ作成されていません。 新規で作成するため[新しいAWS Lambda関数を設定]をクリックします。
7) コネクタのパラメータを設定して[デプロイ]をクリックする。
Lambdaのデプロイ画面に遷移するので、
事前に作成したS3バケット[athena-cloudwatch-20210430] とコネクタのLambdaの名前を入力します。
(Lambdaの名前はここでは athena-cloudwatch とします。)
次に[このアプリがカスタム IAM ロールを作成することを承認します。]にチェックを入れてください。
最後に[デプロイ]をクリックします。
8) Athenaの画面でLambda関数とカタログ名を入力して[接続]をクリックする
Lambda関数には先ほど作成した関数を選択します。
カタログ名はここでは 関数と同じ athena-cloudwatch とします。
9) カタログに新しく[athena-cloudwatch]ができていることを確認する。
新しいカタログができています。
10) クエリエディタに移動して,ログを参照できることを確認する。
実際に接続できることも確認します。
データソースに先ほど作成したカタログ athena-cloudwatch を設定します。
次にデータベースに参照するロググループ /Athena/test を選択します。
その上で以下のSELECTのクエリを実行すると、ログのメッセージが表示されます。
(messageに最初に設定した「これはテストです」と表示されます。)
SELECT * FROM "athena-cloudwatch"."/athena/test"."test" ;
まとめ
AthenaでCloudWatch Logsのログに接続することができました。
一旦設定すれば、色々なロググループに対してSELECTできますので
アクセス数の集計などに使っていきたいです。
参考サイト
Amazon Athena Federated Query経由でAmazon DynamoDBのデータをAmazon QuickSightで可視化するハンズオンの公開