こんにちは、インフラエンジニアの小野島です!
AWS S3 Bucket は単なるオリジンとしてだけでなく、ELB ログ出力先、Athena 結果出力先など用途は多岐に渡りますよね。
Athena の出力先として使っているバケットで、突然 prefix の root に下記ファイル名のオブジェクトが配置されていました。
f570f820-f4ea-4860-b865-8fd6fc4b161d.txt
▼再現イメージ
Athena の結果ファイルのような予感はしますが、そもそも Athena をクエリした記憶はありません。
またコンソールで特に意図的な設定をせず Athena クエリを実行した時に、結果ファイルは root prefix に生成されません。
まあ消して大丈夫そうですが、もし本番稼働しているバケットでの話であれば正体が気になるところです。
結論
Terraform で Workgroup 指定ではなくバケット指定をした athena_database リソースを作成/削除した際の DDL 結果ファイルでした。
タイトルだけでピンと来たあなたは、凄腕インフラエンジニアです!
事象
コンソールからやった場合
S3 バケットを出力先とした primary Workgroup を用意したとします。
この Workgroup を使って実行した CREATE DATABASE クエリの結果は Unsaved/{YYYY}/{MM}/{DD}/{UUID}.txt に出力されます。
Terraform でやった場合
Terraform では CLI を使用して Database 作成クエリを実行します。
その際にデフォルトでバケットの root prefix を指定します。
Workgroup を指定した場合は prefix が上書きされますが、そうでなければこの記事の冒頭のような結果になります。
Athena 保存 prefix の仕様整理
コンソールで実施したデフォルトと Terraform のデフォルトが違っているのは違和感が残るので、整理してしまいます。
DDL 実行時に txt ファイルが生成される S3 Prefix の種類として以下の4通りを確認することができました。
| Prefix | 実行手段 | 出力先指定 |
|---|---|---|
Unsaved/{YYYY}/{MM}/{DD}/{UUID}.txt |
Console | WorkGroup 指定で未保存クエリを実行 |
{SavedQueryName}/{YYYY}/{MM}/{DD}/{UUID}.txt |
Console | WorkGroup 指定で保存済みクエリを実行 |
{OutputLocation}/{UUID}.txt |
CLI / Terraform | WorkGroup または OutputLocation 指定 |
{UUID}.txt |
Terraform | バケット指定 |
記事作成の過程で気づいたこと
Terraform の athena_database リソースの bucket (Required) は誤り
workgroup を指定すれば apply できました
ChatGPT は上と同じ情報の表を作成できなかった
プロンプトにもよるかもしれませんが、適切に情報を仕分けできていませんでした
免責事項
- この記事の内容は個人の見解であり、所属する組織の意見を代表するものではありません。


