[アップデート] Amazon Athenaのクエリ実行結果の保存先にAWSマネージドストレージを指定できるようになりました
あしざわです。
Amazon Athenaの新機能「マネージドクエリ結果」が登場しました。
これまでのAthenaは、クエリを実行する前提としてクエリ結果の保存先となるS3バケットを準備する必要がありました。このアップデートによって、クエリ結果の保存先をユーザー管理のS3ではなくAWS管理のストレージを選択できるようになります。
それではアップデートの詳細をみていきましょう。
アップデート概要
Athenaのユーザーガイドの英語版ドキュメントで仕様を確認しました。
Athenaのクエリ結果の保存先は以下の2つから選択できる仕様に変わっています:
- AWSマネージドストレージ(Athenaマネージド)
- カスタマー所有のS3(カスタマーマネージド)
前者の AWSマネージドストレージ が今回のアップデートで登場した「マネージドクエリ結果」機能の保存先のストレージです。後者の カスタマー所有のS3 は従来のAthenaの標準仕様だったS3バケットへのクエリ結果保存のことを指します。
また、この機能の利用に追加コストはかかりません。嬉しいですね!
クエリ結果はAWS所有のキーもしくは顧客所有キーを選択して自動で暗号化されます。セキュリティ的にも安心です。
やってみた
全体の流れはこちらのブログ記事を見て理解しました。
クエリ結果の設定はAthenaのワークグループから行います。
Athenaのワークグループを使用すると、グループ単位で以下のことができます。Athenaの運用を便利にする機能です。
- アクセス制御:IAMでクエリへアクセスできるユーザーを制御する
- 設定:実行されるクエリに対してクエリ結果の保存、暗号化などの設定を共通化
- クエリメトリクス等:CloudWatch、EventBridgeイベントなどの監視・通知で使うメトリクスを識別する
- コスト管理:クエリ毎のデータ使用量の制御、コスト配分タグの利用
以降、AWSマネジメントコンソールから、マネージドクエリ結果のAthenaを触ってみた様子を紹介します。
はじめに、Athenaコンソールでワークグループを新規作成します。
設定の下の方を確認するとクエリ結果の設定に クエリ結果の管理 欄がありました。Athena マネージド - 新規 という項目がありますね。これがマネージドクエリ結果のようです。
暗号化の設定は必須です。従来のクエリ結果の保存だと暗号化しない選択肢もあったのですが、保存先がAWSマネージドになったためかユーザーに選ばせない形にしたんでしょうか。
暗号化キーのこだわりは特にないので、デフォルトのAWS所有キーのままとしました。KMSキーも利用できるようです。
他の設定はデフォルトのままで、ワークグループを作成しました。
ワークグループの詳細画面のクエリ結果の場所に AWSマネージドストレージ と表示されていました。
デフォルトで作成されているprimaryワークグループを確認したところ、このように空の表示でした。
私のアカウントのprimaryワークグループはクエリ結果の保存先、暗号化設定のどちらも行なっていません。
これらのワークグループの設定をAWS CLIから確認してみたところ、以下のことがわかりました:
- Athenaマネージドの場合:
$.WorkGroup.Configuration.ManagedQueryResultsConfiguration.Enabled
のパラメータがtrue
になる - カスタマーマネージドの場合:
$.WorkGroup.Configuration.ResultConfiguration
のパラメータが空になる
~ $ aws athena get-work-group --work-group "test-workgroup"
{
"WorkGroup": {
"Name": "test-workgroup",
"State": "ENABLED",
"Configuration": {
"ManagedQueryResultsConfiguration": {
"Enabled": true
},
"EnforceWorkGroupConfiguration": false,
"PublishCloudWatchMetricsEnabled": true,
"BytesScannedCutoffPerQuery": 1099511627776000,
"RequesterPaysEnabled": false,
"EngineVersion": {
"SelectedEngineVersion": "AUTO",
"EffectiveEngineVersion": "Athena engine version 3"
},
"EnableMinimumEncryptionConfiguration": false
},
"CreationTime": "2025-06-04T16:37:09.662000+00:00"
}
}
~ $ aws athena get-work-group --work-group "primary"
{
"WorkGroup": {
"Name": "primary",
"State": "ENABLED",
"Configuration": {
"ResultConfiguration": {},
"EnforceWorkGroupConfiguration": false,
"PublishCloudWatchMetricsEnabled": false,
"RequesterPaysEnabled": false,
"EngineVersion": {
"SelectedEngineVersion": "AUTO",
"EffectiveEngineVersion": "Athena engine version 3"
},
"EnableMinimumEncryptionConfiguration": false
},
"CreationTime": "2022-01-11T12:43:42.952000+00:00"
}
}
2つのオプションでAPIレスポンスのフィールドが変わるんですね。
それでは作成したワークグループを使って、クエリエディタからクエリを実行してみましょう。
クエリエディタに遷移しました。
エディタタブの上の方で、Athenaマネージドストレージになってるよと表示してくれていますね。
test-workgroup ワークグループのクエリ結果のデフォルト設定は Athena マネージドストレージに設定されています
設定タブだと以下のように表示されます。より詳しいですね。
このワークグループは Athena マネージドストレージを使用しています
このワークグループのすべてのクエリで、クエリ結果の場所やその他の構成のクライアント側設定が無効になっています。
エディタからクエリを実行してみます。
事前に作成していたCloudTrailログに対するクエリを実行しました。単純なSelect文です。
select * from <テーブル名> limit 10;
問題なく実行できました。
コンソール上から結果をCSVダウンロードすることも問題なくできます。
検証は以上とします。
考慮事項・制限事項
公式ドキュメントに記載がある考慮事項・制限事項で気になったものをまとめておきます。
- 200 MBを超えるクエリ結果ファイルはコンソールからダウンロードできない
- クエリ結果の再利用をサポートしていない
- クエリ結果は24時間保存される、保存期間を過ぎると自動的に削除される
1については、ログ調査の時に思わず大きいクエリ結果となってしまったときダウンロードできないことが考えられます。気をつけましょう。
3についても、クエリ実行した翌日に結果が取得できなくなってしまうので、なるべくその日のうちに結果をローカルダウンロードするように意識づけ、運用していく必要がありそうです。
最後に
今回は、Amazon Athenaの新しいクエリ実行結果の保存先としてAWSマネージドストレージが指定できるようになった、というアップデートについて紹介しました。
これまでAthenaでクエリを実行するためにはS3バケットを準備する必要があり、S3バケットのセキュリティ設定、ライフサイクル設定などに手間がかかると感じていた方も多かったのではないでしょうか?
今回登場したAWSマネージドストレージを保存先に設定すれば、その手間がかなり省略できるはずです。
ただし、200MB以上の大きいサイズのクエリ実行結果がダウンロードできない、クエリ結果は24時間後に削除されるなど、制約や制限もあります。保存先として何が最適なのかは各自のユースケースによるため、注意してください。
以上です。