このプロジェクトは、AWSの各種サービスを利用して株価データの収集、処理、分析を行うための包括的なデータ基盤を提供します。データ取得から分析までのワークフロー全体を自動化し、Infrastructure as Code (IaC) を活用することで、デプロイと管理を容易にします。
このプラットフォームは、以下のAWSサービスを使用したサーバーレスアーキテクチャで構築されています。
- データ取得: Pythonスクリプト(
BeautifulSoup,Selenium,Requests)を使用してWebから株価データをスクレイピングし、CSVファイルとして保存します。 - データレイク: Amazon S3 を中央データレイクとして使用し、生のCSVデータと処理済みデータを保存します。
- ETL (Extract, Transform, Load): AWS Glue を使用して生データをクロールし、データカタログを作成し、PySpark��ースのETLジョブを実行してデータを変換・クレンジングします。
- データ分析: Amazon Athena を使用して、S3に保存されている処理済みデータに対してインタラクティブなSQLクエリを実行します。
- Infrastructure as Code (IaC): OpenTofu(Terraformのフォーク)を使用して、必要なすべてのAWSリソースを定義・管理します。
.
├── AWS-Glue.ipynb # AWS Glueの開発・テスト用Jupyter Notebook
├── csvget/ # 株価データスクレイピング用Pythonプロジェクト
│ ├── pyproject.toml # プロジェクトのメタデータと依存関係
│ ├── README.md # csvgetモジュール用のREADME
│ └── ...
├── data/ # データ保存用ディレクトリ(ダウンロードしたCSVなど)
├── opentofu/ # AWSインフラ管理用OpenTofuプロジェクト
│ ├── env/dev/base/main.tf # 開発環境用のメインOpenTofu設定ファイル
│ ���── ...
└── script/ # 自動化用シェルスクリプト
└── 1_athena_execute/
└── run_athena_query.sh # Athenaクエリ実行用スクリプト
- Python 3.10+
- Python依存関係管理ツール Rye
- OpenTofu (または Terraform)
- AWS認証情報が設定済みの AWS CLI
csvgetディレクトリに移動し、必要なPythonパッケージをインストールします。
cd csvget
rye syncOpenTofuの設定ディレクトリに移動し、AWSリソースをデプロイします。
cd opentofu/env/dev/base
tofu init
tofu applyこれにより、必要なS3バケット、IAMロール、Glueクローラー、Glueジョブが作成されます。
csvgetディレクトリ内のPythonスクリプトを実行して、株価データをダウンロードします。具体的なスクリプトとその使用方法はcsvget/README.mdを参照してください。
生のデータが指定のS3バケットにアップロードされたら、AWSマネジメントコンソールまたはAWS CLIを使用してAWS GlueクローラーとETLジョブを実行できます。AWS-Glue.ipynbノートブックには、これらのタスクを実行するためのステップバイステップガイドが含まれています。
ETLジョブがデータの処理を正常に完了したら、Amazon Athenaを使用してデータを分析できます。script/1_athena_execute/run_athena_query.shスクリプトを使用すると、事前に定義されたクエリを簡単に実行できます。
cd script/1_athena_execute
./run_athena_query.sh [WORKGROUP_NAME] [REGION] [BUCKET_NAME] [QUERY_INDEX]デフォルト値や詳細については、スクリプトを参照してください。