Traffine I/O

Bahasa Indonesia

2023-07-22

Mendeploy dbt ke ECS Fargate

Mendeploy dbt ke ECS Fargate

Artikel ini akan memperkenalkan cara mendeploy dbt ke ECS Fargate. Arsitektur dapat dilihat pada diagram berikut.

dbt on ECS Fargate architecture

Anda dapat memeriksa kode sumber di repositori berikut.

https://github.com/ryuseikakujo/dbt-on-fargate

Pengetahuan berikut diperlukan untuk memahami kode sumber:

  • dbt
  • Terraform
  • AWS
  • Docker

Menduplikasi Kode Sumber

Duplikasi kode sumber dengan perintah berikut:

bash
$ git clone https://github.com/ryuseikakujo/dbt-on-fargate.git

Persiapan

Berikut adalah langkah-langkah untuk membangun infrastruktur untuk menjalankan dbt di ECS Fargate.

  1. Provisi ECR
  2. Buat S3 dan DynamoDB untuk Terraform Backend
  3. Unggah gambar Docker dbt ke ECR
  4. 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).
bash
$ 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).
bash
$ 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).

bash
$ 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)
bash
$ cd terraform/aws/dev

$ terraform init
$ terraform apply

Referensi

https://github.com/ryuseikakujo/dbt-on-fargate

Ryusei Kakujo

researchgatelinkedingithub

Focusing on data science for mobility

Bench Press 100kg!