- dbtプロジェクトのドキュメントを、Cognitoのログイン認証付きでAWS CloudFrontを利用してホスティングするサンプルです。
- プロジェクト内の TaskFile.yml には、ローカルでのドキュメント生成や、AWSリソースへの展開を行う各種タスクが定義されています。
TaskFile.yml
: タスク定義ファイル。taskで実行可能なタスクが記述されています。dbt-sample/
: dbtプロジェクトが格納されています。dbt_project
: dbtプロジェクトのルートディレクトリ。(VSCode等でdbt Power User等を利用する場合、ここをルートとして開いたほうがdbt内の開発は進めやすいです)- このサンプルではdatabricksを利用していますが、他のサービスを利用したい場合はdbtプロジェクト配下のみ変更すれば、インフラ側は変更は不要なはずです。
infrastructure/
: AWS CDKを用いたインフラ展開用のコードが含まれています。
flowchart LR
%% AWSインフラ構成
subgraph "AWS インフラ構成"
direction TB
CF["CloudFront"]
LE["Lambda@Edge"]
COG["Cognito 認証"]
S3["S3 (dbt docs)"]
end
%% ユーザーからのリクエスト
subgraph "クライアント"
U["ユーザー"]
end
U -- "リクエスト" --> CF
CF -- "認証トリガー" --> LE
LE -- "認証処理" --> COG
COG -- "認証成功" --> CF
CF --> S3
%% 開発者によるドキュメントアップロード
subgraph "管理/開発プロセス"
DEV["開発者"]
end
DEV -- "dbt docsのアップロード" --> S3
- AWS CDK(TypeScript)のセットアップ
- infrastructureディレクトリで
npm install
を実行すれば、AWS CDKのパッケージがインストールされるようになっています。- このディレクトリ下では
npx
を使ってcdk
コマンドを実行可能です。
- このディレクトリ下では
- デフォルトのリージョンは
ap-northeast-1
にしていますが、Cognitoの認証をCloudFrontのLambda@Edgeで行うため、cdk bootstrap
をus-east-1
リージョンでも実行する必要があります。(Lambda@Edgeはus-east-1リージョンで管理する必要があるため) - 環境変数
AWS_PROFILE
にAWS CLIで利用するプロファイル名を設定してください。
- infrastructureディレクトリで
- taskを利用しているので、インストールが必要です。
- dbtプロジェクトについて
- こちらのサンプルを動かす場合
- dbtの環境をuvで管理していますので、インストールが必要です。
- データ基盤にdatabricksを利用しているので、dbtからの接続セットアップを行ってください。
- 自前のdbtプロジェクトを利用する場合、こちらのサンプルを参考いただいたうえで、適宜修正して利用ください。
- こちらのサンプルを動かす場合
- 利用可能なタスク一覧を確認するには、以下のコマンドを実行します:
task
- dbtで生成したドキュメントをホストするAWSインフラを展開します:
task deploy-all
- CloudFrontでホストされるURLが表示されるので、コピーして環境変数
CLOUDFRONT_URL
に設定します。 - CloudFrontでホストされるURLをCognitoのリダイレクト先として許可するため、再度Cognitoのスタックをデプロイします。
task deploy-cognito
- dbtのドキュメントを生成し、ホストされるサイトに反映します:
task update-dbt-docs
- CloudFrontでホストされるURLにアクセスすると、Cognitoの認証画面が表示され、ログインすると、dbtのドキュメントが表示されます。
- ログインユーザーはCognitoのAWSマネジメントコンソールから作成して利用してください。