はじめに
Amazon Athena の実行結果は S3 に保存されます。
Settings から、クエリ結果が保存される S3 バケットを確認することができます。
バケットの中を見てみましょう。
csv ファイルが大量に保存されていますね...
このように、何年も AWS を使っている企業などの場合、これまで様々な用途で使用されてきた Athena の実行結果が積み重なり、バケットの実行結果が溜まっていることがあります。
この記事は、このような状態でコンソールからクエリを実行したときに、実行結果を探すのに苦戦した話です。
実行結果を探した話 ~出題編~
先日、 AWS のコンソールから Athena でクエリを実行したときの話です。クエリの結果が S3 のどこに保存されているか気になったので探してみることにしました。
先述の通り、保存先の S3 バケットはこれまでの実行結果が大量に保存されているので、絞り込む必要があります。また、それぞれの実行結果のファイル名はクエリのIDになっていそうなので、クエリの ID が必要です。
クエリを実行すると結果が表示され、URL が以下のようになりました。
https://ap-northeast-1.console.aws.amazon.com/athena/home?region=ap-northeast-1#/query-editor/history/4042xxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx
このURLの末尾の 4042xxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx
の部分がクエリのID になります。
クエリのIDがわかったので、検索してみます。
No matches... というわけで見つかりませんでした。
S3 バケットの直下にたくさんファイルがあったので、今回実行したファイルもそこにあるのかとおもっていたので、めちゃめちゃ焦りました。
実行結果を探した話 ~解答編~
ドキュメントをちゃんと読んだら、保存場所について記載がありました。
Amazon S3 でクエリ出力ファイルを検索する - Amazon Athena
QueryResultsLocationInS3/[QueryName|Unsaved/yyyy/mm/dd/]
(略) クエリが実行されたものの、保存されなかった場合は、Unsaved が使用されます。
どうやら Unsaved フォルダがあるらしいです。
探したら見つかりました。ファイルが多すぎて、 Unsaved
フォルダが見えなかっただけでした。
Unsaved の中はこんな感じになっています。
Unsaved
+ 実行した日付 (今回だと 2024/11/28
) で検索したら、クエリIDが一致するファイルが見つかりました。
めでたしめでたし。
おわりに
というわけで、ドキュメントをちゃんと読みましょう。
Amazon のドキュメントは多く、内容も初心者にとって難しいことが多いので読むのが大変ですが、慣れてきたら意外と便利だと思います。
Athena は AWS 関連のログ解析など様々な場面で活躍するので、AWSを扱っていく人は使い方を抑えておくとかなり便利だとおもいました。
この記事が、僕と同様にクエリの実行結果をうまく見つけられずに困った人に届いたら幸いです。