Hướng Dẫn Triển Khai Ứng Dụng Tự Động Bằng AWS Systems Manager Documents (SSM Documents) Chuyên mục Devops 2025-12-10 0 Lượt xem 0 Lượt thích 0 Bình luận
Trong bối cảnh các hệ thống backend ngày càng phức tạp, việc triển khai (deploy) thủ công qua SSH trở nên lỗi thời, mất kiểm soát và dễ tạo sự không đồng nhất giữa các môi trường. Một giải pháp hiệu quả, bảo mật và hoàn toàn tự động chính là AWS Systems Manager Documents (SSM Documents).
Trong bài viết này, chúng ta sẽ khám phá:
-
SSM Document là gì và hoạt động được như thế nào
-
Lợi ích khi sử dụng SSM cho việc deploy
-
Cách xây dựng quy trình deploy tự động container (PHP, nginx, Laravel, Node…)
-
Thực chiến viết RunShellScript để deploy backend
-
Mẹo cấu hình log, rollback và kiểm soát phiên bản
-
Best practices khi áp dụng trong môi trường Dev / Staging / Production
🔎 AWS Systems Manager Documents (SSM Documents) là gì?
SSM Documents là một thành phần quan trọng của AWS Systems Manager, cho phép bạn:
-
Chạy script trên EC2, on-premise servers hoặc hybrid servers
-
Điều khiển tài nguyên AWS một cách không cần SSH
-
Tự động hóa deploy, update, maintain, backup…
-
Quản lý hạ tầng theo tiêu chuẩn DevOps & NoOps
Một SSM Document có thể chứa nhiều bước (steps), mỗi step dùng một action:
-
aws:runShellScript– chạy shell script -
aws:runPowerShellScript– chạy PowerShell -
aws:downloadContent– download file -
aws:createStack– deploy CloudFormation -
aws:copyImage– copy AMI -
v.v…
Tất cả được thực hiện qua SSM Agent, không cần mở port SSH.
💡 Tại sao nên sử dụng SSM Documents để deploy backend?
Một số lợi ích rõ ràng:
✔ Triển khai không cần SSH
Bảo mật hơn nhiều so với việc mở port 22 cho developer.
✔ Tự động hóa và có thể repeat 100%
Deploy mọi môi trường giống nhau – không xung đột.
✔ Audit & theo dõi log thuận tiện
Mọi lệnh chạy qua SSM đều có log, traceable, audit được.
✔ Dễ dàng rollback
Bạn chỉ cần giữ nhiều version của document.
✔ Dễ tích hợp CI/CD
SSM Document có thể trigger từ:
-
GitHub Actions
-
GitLab CI
-
AWS CodePipeline
-
GitHub Webhook
-
Hoặc bất kỳ pipeline nào
🛠 Deploy thực chiến backend container bằng SSM Document
Giả sử hệ thống backend của bạn bao gồm:
-
Container PHP (Laravel)
-
Container nginx
-
Logs cần được export
-
Pull image từ AWS ECR
-
Tự động mount logs ra host
Một mẫu SSM Document thực tế có thể như sau:
🧩 Giải thích quy trình deploy
1️⃣ Export log trước khi deploy
Tránh mất dữ liệu log của container cũ.
2️⃣ Stop & remove container và old images
Dọn sạch môi trường.
3️⃣ Pull image mới từ ECR
Đảm bảo server chạy bản mới nhất từ pipeline CI/CD.
4️⃣ Tạo network riêng
Giúp php container giao tiếp với nginx container.
5️⃣ Mount logs ra host
Quan trọng nếu muốn đưa log lên CloudWatch Logs.
6️⃣ Start container mới
Ứng dụng được chạy bằng image mới.
7️⃣ Run cron hoặc migrations
Tùy hệ thống.
📡 Tự động đẩy log lên CloudWatch Logs
Nếu bạn muốn log Laravel / nginx xuất hiện trong CloudWatch:
✔ Mount log ra host
✔ CloudWatch Agent đọc log từ host
✔ Auto start khi deploy
Một đoạn config CloudWatch Agent ví dụ:
🌟 Best Practices khi dùng SSM để deploy
🔒 1. Không mở SSH cho developer
Chỉ cần SSM + IAM Role là đủ.
☁ 2. Log mọi thứ lên CloudWatch
Dễ debug – dễ audit – không mất log.
🔁 3. Mỗi lần deploy tạo một version document
Rollback cực nhanh.
🧱 4. Không viết script quá dài trong SSM Document
Tách phần script ra file .sh trên EC2, và chỉ gọi:
🚨 5. Test trước ở STG
Đặc biệt với hệ thống nhiều container.
🎯 Kết luận
AWS Systems Manager Documents là một công cụ vô cùng mạnh mẽ giúp bạn:
-
Triển khai backend tự động
-
Quản lý server không cần SSH
-
Tối ưu hoá pipeline CI/CD
-
Giảm thiểu lỗi con người
-
Tăng sự ổn định của các môi trường Dev–Stg–Prod
Nếu bạn đang vận hành hệ thống backend chạy container (Laravel, NodeJS, Go, Java…) trên EC2, SSM Document là một giải pháp đáng cân nhắc để nâng cấp quy trình deploy của bạn.
Bình luận (0)