← All Articles

Amazon AthenaからFederated QueryでCloudWatch Logsに接続する

Posted on

はじめに

Amazon AthenaからFederated Queryを使って色々なデータソースにアクセスできるようになりました。

今まではAthenaでCloudWatch Logsのログを見るためには、

一旦ログをS3に退避するという手順が必要でしたが

Federated Queryを使えばS3に退避せずにログを参照することができるようになりました。

やること

Athenaと各データソースをつなぐためには、

Lambdaのデータソースコネクタの登録と,Lambdaが使用するS3バケットが必要となります。

(S3バケットは取得したデータがLambdaの上限を超えている場合の退避場所として使用するようです。)

ここでは、 CloudWatch Logs用のデータソースコネクタ設定して ログを参照してみます。

20210430-1

やってみた。

1) ログを準備する。

まず参照先のログを準備しておきます。

コンソールからロググループ、ストリーム,イベントメッセージを登録します。

  • ロググループ : /Athena/test
  • ストリーム : test
  • イベントメッセージ : これはテストです

2) S3バケットを準備する

コンソールからデータソースコネクタ用S3バケットを登録します。

  • バケット名: athena-cloudwatch-20210430

3) Athenaのコンソールにアクセスして画面上部の [データソース] をクリックする

20210430-2

4) [データソースを接続する] をクリックする

20210430-3

5) データソースに [Amazon CloudWatch Logs] を選んで [次へ] をクリックする

[データソースのクエリを実行する]を選択したあと、各データソースが選べるようになります。

そこで[Amazon CloudWatch Logs]を選択して[次へ]をクリックしてください。

20210430-4

6) [新しいAWS Lambda関数を設定]をクリックする

コネクタ用のLambda関数を選択する画面ですが、まだ作成されていません。 新規で作成するため[新しいAWS Lambda関数を設定]をクリックします。

20210430-5

7) コネクタのパラメータを設定して[デプロイ]をクリックする。

Lambdaのデプロイ画面に遷移するので、

事前に作成したS3バケット[athena-cloudwatch-20210430] とコネクタのLambdaの名前を入力します。

(Lambdaの名前はここでは athena-cloudwatch とします。)

次に[このアプリがカスタム IAM ロールを作成することを承認します。]にチェックを入れてください。

最後に[デプロイ]をクリックします。

20210430-6

8) Athenaの画面でLambda関数とカタログ名を入力して[接続]をクリックする

Lambda関数には先ほど作成した関数を選択します。

カタログ名はここでは 関数と同じ athena-cloudwatch とします。

20210430-7

9) カタログに新しく[athena-cloudwatch]ができていることを確認する。

新しいカタログができています。

20210430-8

10) クエリエディタに移動して,ログを参照できることを確認する。

実際に接続できることも確認します。

データソースに先ほど作成したカタログ athena-cloudwatch を設定します。

次にデータベースに参照するロググループ /Athena/test を選択します。

その上で以下のSELECTのクエリを実行すると、ログのメッセージが表示されます。

(messageに最初に設定した「これはテストです」と表示されます。)

SELECT * FROM "athena-cloudwatch"."/athena/test"."test" ;

20210430-9

まとめ

AthenaでCloudWatch Logsのログに接続することができました。

一旦設定すれば、色々なロググループに対してSELECTできますので

アクセス数の集計などに使っていきたいです。

参考サイト

Amazon Athena Federated Query経由でAmazon DynamoDBのデータをAmazon QuickSightで可視化するハンズオンの公開

Amazon AthenaからFederated QueryでDynamoDBに接続してみた

Amazon Athenaの新しいフェデレーテッド・クエリによる複数データソースの検索

技術AWSAthenaCloudWatch