Mendeploy dbt ke ECS Fargate
Artikel ini akan memperkenalkan cara mendeploy dbt ke ECS Fargate. Arsitektur dapat dilihat pada diagram berikut.
Anda dapat memeriksa kode sumber di repositori berikut.
Pengetahuan berikut diperlukan untuk memahami kode sumber:
- dbt
- Terraform
- AWS
- Docker
Menduplikasi Kode Sumber
Duplikasi kode sumber dengan perintah berikut:
$ git clone https://github.com/ryuseikakujo/dbt-on-fargate.git
Persiapan
Berikut adalah langkah-langkah untuk membangun infrastruktur untuk menjalankan dbt di ECS Fargate.
- Provisi ECR
- Buat S3 dan DynamoDB untuk Terraform Backend
- Unggah gambar Docker dbt ke ECR
- Terapkan konfigurasi Terraform
1. Provisi ECR
Jalankan /provisioning/ecr.sh
.
- Anda akan diminta untuk memasukkan nama lingkungan (
prod
). - Kemudian, masukkan nama aplikasi (
my-elt
). - Terakhir, masukkan nama gambar (
dbt
).
$ sh provisioning.ecr.sh
Enter environment name for ECR:
Enter app name:
Enter image name:
Sebuah repositori ECR akan dibuat dengan nama <environment name>-<app name>-<image name>
.
2. Buat S3 dan DynamoDB untuk Terraform Backend
Jalankan /provisioning/backend.sh
.
- Ketika diminta, masukkan nama unik untuk bucket S3 Terraform Backend (misalnya,
prod-my-elt
). - Masukkan nama tabel DynamoDB untuk Terraform Backend (misalnya,
prod-my-elt
). - Berikan nama tumpukan CloudFormation untuk Terraform Backend (misalnya,
prod-my-elt
).
$ sh provisioning.backend.sh
Enter unique S3 bucket name for Terraform Backend:
Enter dynamodb name for Terraform Backend:
Enter Cloudformation stack name for Terraform Backend:
Sebuah bucket S3 dan tabel DynamoDB dengan nama prod-my-elt
akan dibuat.
3. Unggah Gambar Docker dbt ke ECR
Buat dan unggah gambar Docker dbt menggunakan /dbt/Dockerfile
(<prod-my-elt-dbt>
harus mengikuti nama yang digunakan saat membuat ECR).
$ cd dbt
$ aws ecr get-login-password --region ap-northeast-1 | docker login --username AWS --password-stdin 123456789012.dkr.ecr.ap-northeast-1.amazonaws.com
$ docker build --platform amd64 -t <prod-my-elt-dbt> .
$ docker tag dev-elt-dbt:latest 123456789012.dkr.ecr.ap-northeast-1.amazonaws.com/<prod-my-elt-dbt>:latest
$ docker push 123456789012.dkr.ecr.ap-northeast-1.amazonaws.com/<prod-my-elt-dbt>:latest
4. Terapkan Konfigurasi Terraform
Jalankan terraform apply
untuk membuat sumber daya berikut:
- VPC
- Public Subnet
- Internet Gateway (IGW)
- Security Group
- CloudWatch
- ECS Cluster
- ECS Task Definition
- EventBridge: Pemicu Cron untuk Step Functions
- Step Functions: DAG untuk ELT (menjalankan dbt)
$ cd terraform/aws/dev
$ terraform init
$ terraform apply
Referensi