DevOps AI
  • Home
  • Bảo mật
  • AI & Automation
  • DevOps & Cloud
  • Bộ đề luyện thi cloud
No Result
View All Result
DevOpsAI
  • Home
  • Bảo mật
  • AI & Automation
  • DevOps & Cloud
  • Bộ đề luyện thi cloud
No Result
View All Result
DevOpsAI
No Result
View All Result
Home DevOps & Cloud

Tạo trigger Lambda cho CodeCommit monorepo

Quân Nguyễn by Quân Nguyễn
25 Tháng 4, 2025
in DevOps & Cloud
0
Share on FacebookShare on Twitter

Trong bài đăng này bạn sẽ học được cách tạo Lambda trigger cho multiple pipeline với cùng một monorepo. Ở đây sẽ sử dụng Codecommit làm monorepo

Monorepo

Trên thực tế sẽ có bạ đặt ra câu hỏi là tại sao phải sử dụng monorepo, mình cũng không rõ, có lẻ là để các service chia sẽ thư viện của nhau, mình từng gặp một dự án dùng Java và monorepo đấy có tận 12 service(12 bộ source dồn vào một repo), thế mới có khái niệm monorepo

Một vài vấn đề

Nếu mỗi service tách riêng ra và dùng repo riêng (polyrepo) thì mọi chuyện sẽ đơn giản, mỗi repo sẽ có một pipeline riêng, nhưng nếu gộp chung  các reop lại thì bài toán đặt ra là làm thế nào để xác định được sự thay đổi code của service nào, để chỉ build lại service đó, thay vì build lại toàn bộ các service trong repo

Related Post

GitHub Action DevOpsify Check Tool – Tự động kiểm tra bảo mật & hiệu suất

GitHub Action DevOpsify Check Tool – Tự động kiểm tra bảo mật & hiệu suất

11 Tháng 6, 2025
Ưu Đãi Đặc Biệt: Nhận Ngay Coupon Giảm 25% cho Bộ Đề Luyện Thi Cloud!

Ưu Đãi Đặc Biệt: Nhận Ngay Coupon Giảm 25% cho Bộ Đề Luyện Thi Cloud!

29 Tháng 4, 2025

Đổi MTU cho Calico trong Kubernetes

30 Tháng 4, 2025

Tắt NLA trên Amazon EC2 Windows instance

30 Tháng 4, 2025

Hướng giải quyết

Nếu sử dụng gitlab thì gitlab sẽ có cơ chế nhận biết sự thay đổi và trigger theo file, thay vì theo nhánh như codecommit. Giải pháp là kiểm tra sự thay đôi của file sau đó tìm ra thư mục gốc của nó, và build source trong thư mục đó.

Cách 1:  Dùng bash script.

Cách này thì mình chưa test, bạn đọc có thể test thử, vì mình đã kiếm được một cách khác hay hơn. Cách này sẽ dùng script để tìm ra sự thay đổi của file và truy ra thư mục gốc, tuy nhiên cách này có nhược điểm là chỉ những micro service trong monorepo có cùng một cách build, và dùng chung một pipeline.


					
				

Đầu tiên mình sẽ tạo một mảng tương ứng giữa tên service (cũng là tên thư mục chứa service trong monorepo) và tên S3 bucket (ở đây mình build Frontend)

Sau đó mình dùng lênh `git diff ` để tìm ra file nào thay đôi và truy ra thư mục gộc của nó, tiếp theo là build và sync đến S3.

Cách 2: Dùng lambda handler event của codecommit.

Cách này sẽ dùng được cho nhiều trường hợp hơn, vì nó không cố định một pipeline. Mỗi khi có commit được push lên, codecommit sẽ trigger lambda, lambda sẽ tiến hành kiểm tra sự thay đổi của file

dựa vào commit id lúc đầu (được lưu ở parameter store) và commit id mới nhất, sau đó truy ra thư mục gốc và trigger pipeline tương ứng.

Kiến trúc monorepo

Trong ví dụ này, mình sẽ tạo ra hai thư mục là service_1 và service_2. tương ứng với pipeline codepipeline-service_1 và codepipeline-service_2 ở nhánh main, trong thư mục sẽ có một vài code HTML đơn giản.


					
				

bạn có thể mở rộng số service và số pipeline, vì cấu hình không được fix cứng và có thể thay đổi thông qua file monorepo-main.json


					
				

nếu bạn muốn tạo một nhánh khác thì chỉ đơn giản là đổi monorepo-main.json thành monorepo-.json tương ứng.

Code Lambda

Source code mình để ở đây

Mình đã tạo sẳn Cloudformation template, việc bạn cần làm là tạo một  S3 bucket chứa file lambda.zip (file này chứa code lambda, bạn có thể giaỉ nén ra để xem code), khi lambda chạy nó sẽ đọc code từ bucket này.


					
				

Tên bucket này bạn sẽ truyền vào template thông qua param ở template-master.yaml


					
				

Deploy template

Bạn cần tạo một bucket để lưu template cho việc deploy cloudformation. dưới đây là cấu trúc repo, mình sẻ chia nhỏ các resoirce thành các template khác nhau và kết nối chúng lại bằng template master.


					
				

Tên của bucket này sẽ được dùng ở template-master.yaml


					
				

Sau đó bạn click vào template-master.yaml, copy link của nó.

Và tiến hành khởi tạo cloudformation bằng link template vừa copy.

sau đó nhấn Create

Testing

Sau khi deploy xong thì tiến hành kiểm tra thôi, mình sẽ tạo một commit bất kì. Kiểm tra pipeline hoạt động ngon lành.

Tags: awsbuildcfncicdCloudformationcodecommitdeployhoạt độngkhái niệmkiến trúclambdamonolithicpipelineserverlesstrigger
Quân Nguyễn

Quân Nguyễn

Related Posts

GitHub Action DevOpsify Check Tool – Tự động kiểm tra bảo mật & hiệu suất
DevOps & Cloud

GitHub Action DevOpsify Check Tool – Tự động kiểm tra bảo mật & hiệu suất

by devopsify
11 Tháng 6, 2025
Ưu Đãi Đặc Biệt: Nhận Ngay Coupon Giảm 25% cho Bộ Đề Luyện Thi Cloud!
Tin tức

Ưu Đãi Đặc Biệt: Nhận Ngay Coupon Giảm 25% cho Bộ Đề Luyện Thi Cloud!

by devopsify
29 Tháng 4, 2025
Đổi MTU cho Calico trong Kubernetes
DevOps & Cloud

Đổi MTU cho Calico trong Kubernetes

by Hiếu Tạ
30 Tháng 4, 2025
Next Post

Thay đổi nội dung dockerfile mà không build lại image

Để lại một bình luận Hủy

Email của bạn sẽ không được hiển thị công khai. Các trường bắt buộc được đánh dấu *

Recommended

Các website demo hay được sử dụng cho thực hành Automation Test

Các website demo hay được sử dụng cho thực hành Automation Test

11 Tháng 6, 2025
Hướng dẫn cài đặt Kubernetes trên Ubuntu 22.04

Hướng dẫn cài đặt Kubernetes trên Ubuntu 22.04

1 Tháng 5, 2025
Cài đặt Maven trên Windows

Cài đặt Maven trên Windows

11 Tháng 6, 2025
Cài đặt Grafana – Loki – Promtail monitoring log Container

Cài đặt Grafana – Loki – Promtail monitoring log Container

1 Tháng 5, 2025
Sử dụng VS Code và Playwright MCP tự động test demo website Demoblaze thông qua GitHub Copilot Agent

Sử dụng VS Code và Playwright MCP tự động test demo website Demoblaze thông qua GitHub Copilot Agent

16 Tháng 6, 2025
MCP server 2025 tốt nhất : Hướng dẫn chọn & bảo mật

MCP server 2025 tốt nhất : Hướng dẫn chọn & bảo mật

16 Tháng 6, 2025
DevOpsify Check Tool hỗ trợ MCP – Tự động hóa kiểm tra qua AI Claude & VS Code

DevOpsify Check Tool hỗ trợ MCP – Tự động hóa kiểm tra qua AI Claude & VS Code

13 Tháng 6, 2025
GitHub Action DevOpsify Check Tool – Tự động kiểm tra bảo mật & hiệu suất

GitHub Action DevOpsify Check Tool – Tự động kiểm tra bảo mật & hiệu suất

11 Tháng 6, 2025
DevOpsify

Cộng đồng DevOps Việt Nam chia sẽ kiến thức giúp tăng tốc quá trình phát triển ứng dụng và tự động hóa trong lĩnh vực Cloud DevOps & AI.

Bài viết mới

  • Sử dụng VS Code và Playwright MCP tự động test demo website Demoblaze thông qua GitHub Copilot Agent
  • MCP server 2025 tốt nhất : Hướng dẫn chọn & bảo mật
  • DevOpsify Check Tool hỗ trợ MCP – Tự động hóa kiểm tra qua AI Claude & VS Code

Categories

  • AI & Automation
  • Bảo mật
  • Chưa phân loại
  • DevOps & Cloud
  • Tin tức
No Result
View All Result
  • Home
  • Bảo mật
  • AI & Automation
  • DevOps & Cloud
  • Bộ đề luyện thi cloud

© 2025 DevOpsify