Thủ thuật trích xuất Key cụ thể từ AWS Secrets Manager (Dành cho AWS App Runner)
1. Bối cảnh (Context)
Khi triển khai các dự án Backend bằng AWS App Runner, việc quản lý các biến môi trường (environment variables) một cách bảo mật luôn là ưu tiên hàng đầu.
App Runner cho phép chúng ta tham chiếu trực tiếp các biến này từ AWS Secrets Manager thông qua mã ARN (Amazon Resource Name). Tuy nhiên, một vấn đề phát sinh là: Nếu Secret của bạn lưu dưới dạng một đối tượng JSON gồm nhiều cặp Key-Value, làm thế nào để App Runner biết bạn chỉ cần lấy một giá trị duy nhất (ví dụ: DB_PASSWORD) thay vì toàn bộ JSON?
Nhiều tài liệu không nói rõ điều này, dẫn đến việc ứng dụng của bạn có thể đọc sai định dạng dữ liệu.
2. Giải pháp: Cấu trúc ARN mở rộng
Để trích xuất một Key cụ thể, bạn cần sử dụng định dạng ARN đầy đủ của Secrets Manager. Đây là “công thức” mà không phải ai cũng biết:
arn:aws:secretsmanager:<region>:<aws_account_id>:secret:<secret-name>:<json-key>:<version-stage>:<version-id>
Các thành phần cần lưu ý:
<json-key>: Đây chính là tên của Key bạn muốn lấy trong file JSON.<version-stage>và<version-id>: Hai thông số này có thể để trống.- Lưu ý: Nếu bạn để trống Version, AWS sẽ mặc định lấy phiên bản mới nhất (
AWSCURRENT).
3. Ví dụ thực tế
Giả sử bạn có một Secret được lưu trữ dưới dạng JSON như sau:
{
"username": "admin_user",
"password": "super_secret_password"
}
Để chỉ lấy giá trị password cho biến môi trường của App Runner, hãy sử dụng cấu trúc ARN sau:
arn:aws:secretsmanager:ap-southeast-1:123456789012:secret:my-app-secrets:password::
Giải thích: Hai dấu hai chấm cuối cùng (
::) đại diện cho việc chúng ta bỏ quaversion-stagevàversion-id, nhưng vẫn phải giữ dấu phân cách để đúng định dạng.
4. Tại sao cách này lại tối ưu?
- Tính bảo mật cao: Bạn chỉ cấp quyền cho ứng dụng tiếp cận đúng thông tin nó cần.
- Đơn giản hóa Code: Backend của bạn sẽ nhận được giá trị thuần túy (Plain text) thay vì phải mất công parse chuỗi JSON một lần nữa.
- Quản lý tập trung: Bạn có thể lưu tất cả Key của một Project vào chung một Secret Name nhưng vẫn lấy ra từng Key riêng biệt cho các biến môi trường khác nhau.
Tổng kết
Việc hiểu rõ định dạng ARN của Secrets Manager giúp bạn làm chủ luồng dữ liệu nhạy cảm trong App Runner một cách chuyên nghiệp hơn. Hãy nhớ quy tắc: Secret Name -> Key -> Version.