この記事では、dbt のドキュメントを s3 でホスティングする方法について紹介します。
基本的にdbt を ECS で実行するで紹介している内容に機能追加する形での紹介となります。
構成
この記事で作成する環境です。
ECR・ECS はdbt を ECS で実行するで作成した環境そのままで、 S3・Lambda・Cloud Front を追加で作成します。Lambda は Basic 認証のために配置しています。

Lambda@Edge 作成
まずは Basic 認証用 Lambda@Edge だけ python3.9 ランタイムで手動作成します。Lambda@Edge はバージニアリージョンでのみ作成できる点に注意してください。
Python コードは下記の通りです。
参照: CloudFront Lambda@Edge with Python 3.8 で Basic 認証を実現する
Lambda を作成したらバージョンを発行する必要がある点に注意です。

次に、terraform を使用して、環境構築を行います。
ここで構築するリソースは下記の通りです。
- S3 バケット周り
- Lambda 用 IAM ロール
- Cloud Front 周り
terraform apply して環境構築します。
初回 apply 後、Lambda に Lambda 用 IAM ロールをアタッチする必要があります。
docker-entrypoint.sh 修正
次に、dbt docs を s3 へ配置するため、docker-entrypoint.sh
を修正します。
ドキュメント確認
ECS タスクを実行後、dbt のドキュメントを Cloud Front 経由で s3 から閲覧できるか確認してみます。
Cloud Front のディストリビューションドメインにアクセスしてみると、Basic 認証がかかっていることがわかります。

認証後、dbt docs を閲覧することができました。

S3 に直接アクセスしてみると、アクセスが拒否されることも確認できます。

まとめ
dbt docs を s3 でホスティングして Basic 認証をかけることで、セキュリティを担保しながら、dbt 実行サーバーへのホスティング負荷を回避し、安価にドキュメントを閲覧できる環境を構築することができます。
参考

備考
Hakky ではエンジニアを募集中です!まずは話してみたいなどでも構いませんので、ぜひお気軽に採用ページからお問い合わせくださいませ。
