データ分析観点から見た AWS ECS コンテナロギング
AWS ECS コンテナロギングをデータ分析観点からどの様な構成だと分析に都合が良いかの観点を記載します。
基本ログは追加のみで更新や削除はされない性質があるので、その点を考慮して登録されることを意識したアーキテクチャが望ましいです。
ECS コンテナロギングの構成
ECS → CloudWatch Logs
デフォルトではこのような構成がよく見受けられます。
AWS ECS コンテナロギングをデータ分析観点からどの様な構成だと分析に都合が良いかの観点を記載します。
基本ログは追加のみで更新や削除はされない性質があるので、その点を考慮して登録されることを意識したアーキテクチャが望ましいです。
デフォルトではこのような構成がよく見受けられます。
RDS のテーブルデータを分析用テーブルにレプリケートする方法が多数あったのでその一覧をまとめます。
RDS をユーザ影響を極力低くすべく、分析用テーブルへレプリケートして、分析する方法が多々あったので私見ですが Pros/Cons をまとめます。
Glue Job で DB データを取得していた際に Glue Job Bookmark を利用していた際に問題があったので、その際の対応を備忘録として残しておきます。
Glue Job で DB やログ情報を取り込みしている場合、どこまで取り込んだかを記録する Bookmark 機能 があります。
DB データを毎回全てダンプするよりも差分のみ抽出(増分エクスポート: Incremental Export)でき、データの取り込み量も抑えられ、Glue Job の実行時間が短縮されます。
Glue Job は実行時間に対して従量課金されるのでコストも抑制できるメリットがあります。
sam build --use-container
でビルド実行した際に以下エラーが発生しました。
1 | Error: Docker is unreachable. Docker needs to be running to build inside a container. |
2024.05.22 より、ALB のアクセスログを Athena でクエリ実行してみると空の行が返るようになりました。
原因を調査してみるとどうやら ALB アクセスログに以下の項目が追加され、フォーマットが変更された為のようです。
テーブルを再作成することで事なきを得ました。
※ ALB はパーティションして利用しており、公式とはやや異なるテーブル定義にしています。
1 | CREATE EXTERNAL TABLE `<table name>`( |
以上
参考になれば幸いです。
備忘録です。
複数 AWS アカウントで起動中のリソース一覧作りたい時によく利用しています。
1 |
|
AWS CLI で EC2 に設定されたタグから特定のキーを指定し、その値をリストするスクリプトです。
以下は Key = Name でその値を取得しています。
EC2 インスタンス名の一覧を取得したい意図です。
1 | aws ec2 describe-instances --query 'Reservations[*].Instances[*].Tags[?Key == `Name`].Value' --output text |
以上
参考になれば幸いです。
terraform はバージョンアップ頻度が高く、
プロジェクトによってバージョン差分が生じるので
複数バージョンを管理できると運用がスムーズです。
SAM プロジェクトで管理する API Gateway について
AWS Config rule: api-gw-execution-logging-enabled
に対応すべく、
アクセスログを有効化した際にハマった話です。
Events.*.Type = Api
で作成した API Gateway では SAM 上でアクセスログ有効化の設定ができません。
どのようにしたら API Gateway のアクセスログ有効化できるか調査しました。