【AWS】Athena ~ AWS CLI ~

■ はじめに

https://dk521123.hatenablog.com/entry/2020/06/17/173717
https://dk521123.hatenablog.com/entry/2020/07/15/162459

の続き。

 Lake Formation + Athena のデータアクセス調査の一環で
AWA Athena (アテナ)に関連するAWS CLI を使ったので
メモっておく

目次

【1】使用上の注意
 1)Tips
 2)AWS CLIのバージョン
【2】主なAWS CLI
 1)start-query-execution
 2)get-query-execution
 3)get-query-results
【3】ワークグループ関連
 1)create-work-group
 2)list-work-groups
【4】カタログ関連
 1)get-data-catalog
 2)list-data-catalogs
 3)create-data-catalog
 4)delete-data-catalog
 5)update-data-catalog

【1】使用上の注意

* (個人的な当初の期待値としては)
 SQL指定してその結果がもらえる使用感ではない
 => SQL投げて、返ってくるのはQueryExecutionIdのみ

1)Tips

AWS CLI のレスポンスが返ってこなかったりする場合、
「--debug」を付けると、どこで止まっているかが分かる

2)AWS CLIのバージョン

Athenaだけの話ではないが、AWS CLI のバージョンによって
サポートしているAPIに違いがでる
 => 調査環境で、気軽に更新もできず、デフォルトEC2に入っている
 AWS CLIをそのままのバージョンで使わなければならないことは
 多々あるので、、、
 => ただ可能であればアップデートした方がいい。その場合、以下などを参照

https://docs.aws.amazon.com/ja_jp/cli/latest/userguide/getting-started-install.html
https://qiita.com/yokoo-an209/items/de99de037b7dcc913a2d

【2】主なAWS CLI

* 公式ドキュメントは以下。

https://docs.aws.amazon.com/cli/latest/reference/athena/
v2
https://awscli.amazonaws.com/v2/documentation/api/latest/reference/athena/index.html

1)start-query-execution

* クエリ実行の開始

https://docs.aws.amazon.com/cli/latest/reference/athena/start-query-execution.html
構文

aws athena start-query-execution \
  --query-string <value> \
  --result-configuration <value>

コマンド例

aws athena start-query-execution --query-string "SELECT * FROM cmathenadb.lineorder limit 10;" --result-configuration OutputLocation=s3://your-s3-bucket/results
{
"QueryExecutionId": "xxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxx"
}

2)get-query-execution

* クエリ実行状況の確認

https://docs.aws.amazon.com/cli/latest/reference/athena/get-query-execution.html
コマンド例

aws athena get-query-execution --query-execution-id xxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxx

3)get-query-results

* クエリ実行結果の取得

https://docs.aws.amazon.com/cli/latest/reference/athena/get-query-results.html
コマンド例

aws athena get-query-results --query-execution-id xxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxx

【3】ワークグループ関連

* クエリ実行やクエリ履歴を、
 同じ AWS アカウントの下で実行されている
 ユーザー、チーム、またはアプリケーション間で分離できる
 => ワークグループ単位で処理できるデータ量や Amazon CloudWatch のメトリクスの設定などを行える

https://docs.aws.amazon.com/ja_jp/athena/latest/ug/manage-queries-control-costs-with-workgroups.html

* Workgroupに対してクエリ上限を設定可能
* Workgroup単位でスキャン量などのメトリクスが取得可能
* Workgroupnに対してタグ付け可能でコストアロケーションタグとしても使用可能
 (Workgroup単位でのコスト管理が可能)

1)create-work-group

* Workgroupの作成

https://docs.aws.amazon.com/cli/latest/reference/athena/create-work-group.html

aws athena create-work-group
--name <value>

2)list-work-groups

* Workgroupの一覧表示

https://docs.aws.amazon.com/cli/latest/reference/athena/list-work-groups.html

aws athena list-work-groups

【4】カタログ関連

1)get-data-catalog

* データカタログの取得

https://docs.aws.amazon.com/cli/latest/reference/athena/get-data-catalog.html

aws athena get-data-catalog
--name <value>

2)list-data-catalogs

* データカタログの一覧表示

https://docs.aws.amazon.com/cli/latest/reference/athena/list-data-catalogs.html

aws athena list-data-catalogs

3)create-data-catalog

* データカタログ作成

https://docs.aws.amazon.com/cli/latest/reference/athena/create-data-catalog.html

aws athena create-data-catalog
--name <value>
--type <value>

4)delete-data-catalog

* データカタログ削除

https://docs.aws.amazon.com/cli/latest/reference/athena/delete-data-catalog.html

aws athena delete-data-catalog
--name <value>

5)update-data-catalog

* データカタログ更新

https://docs.aws.amazon.com/cli/latest/reference/athena/update-data-catalog.html

aws athena update-data-catalog
--name <value>
--type <value>

参考文献

https://dev.classmethod.jp/articles/amazon-athena-run-query-using-awscli/
https://nobelabo.hatenablog.com/entry/2023/01/14/082455
https://qiita.com/kazu23pole/items/e5dc0467c4c97a80ba50
https://zatoima.github.io/aws-athena-cli-query-execute/

参考文献

Athena ~ 入門編 ~
https://dk521123.hatenablog.com/entry/2020/06/17/173717
Athena ~ 基本編 / AWS Glue との連携 ~
https://dk521123.hatenablog.com/entry/2020/07/15/162459