Giới thiệu
Khi bắt đầu làm việc trong lĩnh vực CNTT, tôi tin rằng chứng chỉ AWS sẽ mang lại sự tự tin để đối phó với những thách thức thực tế. Tuy nhiên, qua thời gian, tôi nhận ra rằng chứng chỉ chỉ cung cấp một cái nhìn tổng quát về các dịch vụ AWS. Những bài học thực sự xuất hiện khi bạn gặp phải các vấn đề cần khắc phục trong môi trường sản xuất — đó là lúc bạn thực sự học hỏi.
Vấn Đề Gặp Phải
Gần đây, tôi đã gặp một vấn đề khá thách thức tại công ty. Trong repo A, tôi đã viết một tính năng sử dụng AWS SAM (YAML) với Lambda, SNS, EventBridge và S3. Đột nhiên, một đồng nghiệp thông báo rằng tính năng mới của chúng tôi cần phải có trong repo B. Repo B được viết bằng Terraform, nhưng nó vẫn chưa có các mô-đun tái sử dụng cho Lambda — và tôi hoàn toàn không có kinh nghiệm với Terraform. Điều mà tôi nghĩ sẽ mất một ngày để triển khai và thử nghiệm, cuối cùng lại kéo dài mất vài ngày, ngay cả khi có sự trợ giúp của AI. Cuối cùng, PR của tôi được phê duyệt, mã được gộp và triển khai... và sau đó là các vấn đề về vai trò IAM: quyền hạn không đủ.
Định Nghĩa Vai Trò IAM
Định nghĩa của vai trò này nằm trong một repo khác, repo C, được xây dựng bằng CloudFormation và CodeBuild. Nhiều chính sách AWS không thể được tái sử dụng vì chúng sử dụng quyền Resource * quá rộng. Chúng tôi cần các chính sách chi tiết, xác định các hành động và tài nguyên cụ thể. Ban đầu, tôi cố gắng thêm nhiều hành động vào vai trò cùng một lúc, nhưng CodeBuild liên tục thất bại. Tôi đã chuyển sang thêm từng bước một — biên dịch, triển khai repo B, kiểm tra quyền, lặp lại. Điều này đã lãng phí cả một ngày.
Nhận Thức Vấn Đề
Vào buổi tối, một đồng nghiệp đã tham gia cùng tôi và chỉ ra vấn đề thực sự:
Không thể vượt quá hạn chế cho kích thước chính sách: 6144. ServiceLimitExceeded.
Lúc đó, mọi thứ đã trở nên rõ ràng. Tôi đã tạo một chính sách IAM mới, gắn nó vào vai trò, và vấn đề đã được giải quyết.
Bài Học Rút Ra
Nhìn lại, tôi nhận ra rằng tôi chỉ đang thấy một phần của vấn đề. Mỗi lần chạy CodeBuild sẽ tạo ra nhật ký trong S3, và tôi chỉ xem những nhật ký đó, đơn giản chỉ nói rằng “vai trò không thể cập nhật.” Tôi đã không đi sâu vào ngăn xếp CloudFormation tương ứng để điều tra lý do chính xác. Nếu tôi đã kiểm tra điều đó ngay từ đầu, tôi có thể đã tránh được việc lãng phí rất nhiều thời gian khi thêm quyền một cách từng bước.
Những Điều Cần Lưu Ý
- Kiểm tra nguyên nhân gốc ngay từ đầu – Nhật ký trong S3 chỉ nói “vai trò không thể cập nhật.” Lỗi chi tiết nằm ở CloudFormation. Tôi nên theo dõi điều đó sớm hơn.
- Đừng quá tải chính sách IAM – AWS IAM có giới hạn kích thước chính sách 6.144 ký tự. Chia nhỏ các chính sách lớn thành những chính sách nhỏ hơn.
- Thực hành hơn lý thuyết – Chứng chỉ đã cung cấp cho tôi một nền tảng, nhưng việc khắc phục sự cố thực sự đã dạy tôi nhiều hơn.
- Yêu cầu sự trợ giúp – Đôi khi một góc nhìn từ đồng nghiệp có thể tiết kiệm hàng giờ (hoặc cả ngày).
Thực Hành Tốt Nhất
- Thường xuyên kiểm tra nhật ký: Đảm bảo theo dõi nhật ký từ CloudFormation để hiểu rõ hơn về các lỗi xảy ra.
- Sử dụng IAM Roles một cách hợp lý: Tạo các vai trò IAM với quyền hạn cụ thể và chi tiết để tránh các vấn đề về quyền.
- Tạo môi trường thử nghiệm: Luôn luôn thử nghiệm các thay đổi trong một môi trường phát triển trước khi triển khai vào sản xuất.
Những Cạm Bẫy Thường Gặp
- Quá phụ thuộc vào chứng chỉ: Nhiều người có thể cảm thấy tự tin với chứng chỉ nhưng thiếu kinh nghiệm thực tế có thể dẫn đến thất bại trong việc giải quyết vấn đề.
- Bỏ qua tài liệu: Nhiều nhà phát triển không đọc tài liệu chính thức, dẫn đến việc thiếu thông tin quan trọng về các dịch vụ AWS.
Mẹo Tối Ưu Hiệu Suất
- Sử dụng CloudFormation Stack: Quản lý tài nguyên AWS bằng cách sử dụng CloudFormation để dễ dàng theo dõi và quản lý.
- Tối ưu hóa chính sách IAM: Tạo các chính sách cụ thể thay vì sử dụng chính sách quá rộng để giảm thiểu rủi ro và lỗi.
Kết Luận
Khi làm việc với AWS, chứng chỉ sẽ giúp bạn có được một nền tảng kiến thức, nhưng việc đối diện với các vấn đề thực tế sẽ là cơ hội học hỏi lớn nhất. Hãy luôn chuẩn bị sẵn sàng để tìm kiếm sự trợ giúp và điều tra vấn đề một cách kỹ lưỡng. Đừng ngần ngại chia sẻ những kinh nghiệm của bạn với cộng đồng, vì đó là cách tốt nhất để cả bạn và những người khác đều học hỏi từ những sai lầm và thành công của nhau.
Câu Hỏi Thường Gặp
- Chứng chỉ AWS có thực sự cần thiết không?
- Chứng chỉ giúp bạn có được kiến thức nền tảng, nhưng kinh nghiệm thực tế mới là điều quan trọng nhất.
- Làm thế nào để tôi cải thiện kỹ năng AWS của mình?
- Thực hành trên các dự án thực tế và tham gia các khóa học trực tuyến.
- Có công cụ nào hỗ trợ giải quyết vấn đề IAM không?
- Sử dụng AWS Policy Simulator để kiểm tra và xác minh các quyền của IAM.
- Tôi nên làm gì nếu gặp vấn đề với CodeBuild?
- Kiểm tra nhật ký, xem xét các chính sách IAM và đảm bảo rằng tài nguyên đã được cấp quyền đúng cách.