Step Functions: Điều Phối Quy Trình Nhiề...
AWSKiến trúc

Step Functions: Điều Phối Quy Trình Nhiều Bước và Mẫu Saga

Khi một quy trình có nhiều bước, rẽ nhánh và xử lý lỗi, nhồi hết vào một hàm Lambda sẽ rối và khó nhìn. Step Functions tách logic điều phối ra thành một state machine khai báo. Dựng một workflow kiểm duyệt link (quét an toàn rồi kích hoạt hoặc từ chối), với Retry, Catch, và gọi thẳng DynamoDB không qua Lambda. Bàn tới Standard so với Express, và mẫu saga để hoàn tác khi một bước giữa chừng thất bại.

K
KaiMay 26, 2026
EventBridge: Tách Việc Ghi Nhận Click Kh...
AWSEvent-driven

EventBridge: Tách Việc Ghi Nhận Click Khỏi Đường Chuyển Hướng

Mở đầu phần event-driven. Thay vì đếm click ngay trong handler chuyển hướng, mỗi lượt mở link sẽ phát một sự kiện lên một custom event bus của EventBridge, và một consumer riêng xử lý nó. Dựng bus, cho resolve phát sự kiện, gắn một consumer qua event pattern, rồi mở link thật để thấy sự kiện chảy qua bus tới consumer.

K
KaiMay 26, 2026
Multi-Tenant: Mỗi Người Một Vùng Dữ Liệu...
AWSBảo mật

Multi-Tenant: Mỗi Người Một Vùng Dữ Liệu, và Chặn IDOR

Biến URL shortener thành multi-tenant đúng nghĩa. Thêm route liệt kê link giới hạn theo danh tính trong token, và route xóa link kiểm quyền sở hữu ngay trong thao tác ghi để một người không xóa được link của người khác kể cả khi đoán đúng mã. Test với hai người dùng thật để thấy ranh giới giữ vững.

K
KaiMay 26, 2026
Cognito và JWT Authorizer: Chỉ Người Đăn...
AWSBảo mật

Cognito và JWT Authorizer: Chỉ Người Đăng Nhập Mới Tạo Được Link

Thêm người dùng thật bằng Amazon Cognito. Dựng user pool phát JWT, gắn JWT authorizer của HTTP API để bảo vệ route tạo link trong khi route mở link vẫn công khai, và cho handler đọc danh tính người dùng từ claim trong token thay vì gán cứng. Tạo user thật, lấy token thật, gọi API có và không có token để thấy ranh giới.

K
KaiMay 26, 2026
Nối DynamoDB Vào Code: Ghi An Toàn và At...
AWSDynamoDB

Nối DynamoDB Vào Code: Ghi An Toàn và Atomic Counter

Gắn hai handler vào DynamoDB thật: tạo link ghi item với conditional write để không đè trùng mã, mở link tra cứu rồi đếm click bằng atomic counter. Bắn nhiều lượt mở song song để thấy atomic counter đếm chính xác, và bắt gặp một giới hạn thật của tài khoản — concurrency Lambda — khi 40 trong 50 request trả về 503.

K
KaiMay 26, 2026
Global Secondary Index và Sparse Index: ...
AWSDynamoDB

Global Secondary Index và Sparse Index: Mở Đường Truy Vấn Mới

Bảng single-table ở bài trước trả lời nhanh câu 'mở link theo code', nhưng bất lực với 'liệt kê link của một người dùng'. Bài này thêm một global secondary index để đảo khóa và mở đúng đường truy vấn đó, rồi dùng sparse index để index chỉ chứa link mà loại bỏ các bản ghi thống kê một cách tự nhiên. Tạo GSI thật, query thật để thấy cơ chế.

K
KaiMay 26, 2026
DynamoDB Single-Table Design: Bắt Đầu Từ...
AWSDynamoDB

DynamoDB Single-Table Design: Bắt Đầu Từ Câu Hỏi, Không Phải Từ Bảng

Thiết kế DynamoDB đi ngược với cơ sở dữ liệu quan hệ: bắt đầu từ các câu hỏi truy vấn, không từ bảng. Bài này liệt kê access pattern của URL shortener, giải thích partition key và sort key, rồi dựng một single-table với item collection — link và thống kê click của nó nằm chung một phân vùng, lấy về trong một query. Tạo bảng thật, put và query item thật để thấy cơ chế.

K
KaiMay 26, 2026