viết bởi Stephanie Gooch và John Masci | ngày 03 tháng 5 năm 2024 | in AWS Cloud Financial Management, AWS CloudFormation, Technical How-to | Permalink
Hàng tháng AWS đăng tải hơn 200 thông báo lên trang web “What’s New with AWS” và trên các nguồn cấp dữ liệu RSS, cho nên vậy có rất nhiều thông tin hữu ích được cập nhật. Tuy nhiên, việc tìm thông báo liên quan trong các cập nhật này có thể là một thách thức đối với các kỹ sư, chuyên gia tài chính hoặc các bên liên quan (stakeholders) như FinOps.
Các nhóm FinOps thực hiện việc theo dõi các thông báo mới nhất này theo cách thủ công hoặc là với X (trước đây là Twitter) Cost News Bot để đơn giản quá trình theo dõi. Chúng tôi nhận thấy một số nhóm ưa thích theo dõi những thông báo này trực tiếp từ Slack hoặc muốn điều chỉnh các loại thông báo cho phù hợp với các phạm vi dịch vụ cụ thể hơn.
Trong bài đăng này, chúng ta sẽ triển khai giải pháp để thu thập các thông báo liên quan đến tối ưu hóa chi phí từ “What’s New with AWS” và chuyển chúng vào một kênh Slack dành riêng. Hình 1 cho thấy quy trình giải pháp từ việc thực thi đến việc đăng thông báo lên kênh Slack.
Hình 1. Qui trình giải pháp
Tại sao nó lại cần thiết ?
Trong 6 tháng qua AWS đã đăng tải hơn 1.400 thông báo sản phẩm. Có khoảng 10% liên quan đến chi phí hoặc hiệu quả. Để hiểu rõ hơn về tần suất của những thông báo này.
Hình 2 hiển thị tổng hợp các thông báo trong 6 tháng qua với tất cả các thông báo liên quan đến chi phí được đánh dấu màu vàng.
Hình 2 Thông báo của AWS theo ngày, ngày 23 tháng 7 đến ngày 23 tháng 12
Các thông báo này bao gồm AWS Compute Optimizer supporting Amazon ECS , AWS Billing Conductor Pricing Change (với bản miễn phí cập nhật), and AWS Lambda detecting and stopping recursive loops. Đối với cost-conscious builder (là người hoặc tổ chức trong ngành xây dựng chú trọng vào việc kiểm soát chi phí và tối ưu hóa nguồn lực), xác định những thông báo này cho phép bạn luôn cập nhật với việc làm cách nào để tối ưu hóa việc sử dụng AWS của bạn.
Việc thêm quy trình xem xét thường xuyên cho các thông báo gần đây không chỉ giúp các nhóm FinOps luôn được cập nhật thông tin, mà còn giúp họ có cơ hội lựa chọn hiệu quả hơn từ các thông báo mới này.. Khách hàng như Capital One tích cực theo dõi những thông báo này như một phần của hoạt động FinOps đang diễn ra của họ.
Jerzy Grzywinski, Trưởng Phòng Công nghệ FinOps tại Capital One, mô tả vai trò mà các thông báo này được thực hiện trong quy trình FinOps của họ:
“Đội CloudX của Capital One chịu trách nhiệm về Chiến lược FinOps trên toàn tổ chức. Điều đó bao gồm việc theo dõi hàng tuần các thông báo AWS liên quan đến việc giảm chi phí. Hiểu được cách các công cụ mới nhất, các loại tài nguyên được tối ưu hóa và các tùy chọn với mức giá thấp hơn được sử dụng, giúp chúng tôi ưu tiên các nỗ lực về tối ưu hóa. Chúng tôi có thể xây dựng một chiến lược xung quanh tự động hóa, quản trị và giáo dục để giúp các nhóm của chúng tôi thực hiện các khả năng, chuyển các lợi ích từ chi phí thấp hơn hoặc hiệu suất cao hơn cho khách hàng của chúng tôi.”
Để việc theo dõi dễ dàng hơn, khách hàng quan tâm đến hiệu quả chi phí có thể tự động hóa việc thu thập và chia sẻ tin tức theo thời gian thực. Đây là cách để bắt đầu.
Hướng dẫn
Chúng tôi sẽ đi qua bốn bước để tạo ra giải pháp:
- Tạo kênh dự phòng mới (slack channel) cho các thông báo từ AWS – Đây sẽ là nơi các thông báo của AWS sẽ được ban hành.
- Triển khai AWS CloudFormation Stack – Chứa cơ sở hạ tầng, là nơi sẽ quét qua các bản cập nhật và đưa chúng vào kênh (channel)
- Triển khai thử nghiệm – Lần chạy mã đầu tiên sẽ đảm bảo tất cả cài đặt đã được định cấu hình chính xác để bạn có thể thấy được đầu ra trong kênh
- Bắt đầu chia sẻ – Hướng dẫn cách sử dụng kênh này để tận dụng tối đa kênh này
Các yêu cầu cần có
- Một tài khoản AWS .
- Gán quyền IAM cho tài khoản để có thể triển khai các mẫu Amazon CloudFormation với các hàm AWS lambda , AWS IAM Role, và Amazon S3 Bucket
- Một Slack Workspace để tạo kênh ( tham khảo hướng dẫn tạo create slack app nếu bạn chưa có)
- Có thể dùng Activate Incoming Webhooks hoặc những chức năng tương tự trong tổ chức của bạn
1. Tạo Slack Channel
Đối với giải pháp này, chúng tôi sẽ tạo một kênh thông báo về chi phí. Đối với điều này, chúng tôi đã liên kết với các hướng dẫn chính thức từ Slack.
- Mở Slack Workspace và chọn Add Channels
- Tên kênh của bạn là #aws-cost-optimization-news-and-announcements. Sau khi tạo xong, chúng ta kéo xuống phía dưới
- Nhấp chọn thẻ Integrations and chọn Add a Workflow
- Nhập chọn Create. Một cửa sổ mới được bật lên trong quy trình làm việc aws-cost-optimization-workflow của bạn
Hình 3. Đặt tên cho kênh Slack của bạn
- Chọn Select kế bên Webhook
- Chọn Add Variable
- Trong phần cửa sổ hiện lên, nhập “title” và “Text”. Sau đó chọn Done.
Hình 4. Thêm tiêu đề và hoàn thành
- Tiếp tục với ‘description’‘ và ‘url‘. Nhấn Next để hoàn tất
- Chọn Add Step
- Chọn Send a message từ danh sách
- Tìm kênh bạn đã tạo trước đó trong hộp (drop down box). Sau đó, trong phần văn bản hãy chèn các biến(variables) của bạn, mỗi biến trên một dòng mới. Đánh dấu tiêu đề và thay đổi thành in đậm. Nhấp vào Save để lưu lại
- Nhấp vào nút Publish
- Sao chép Webhook của bạn vì chúng tôi sẽ sử dụng nó trong bước tiếp theo. Tắt cửa sổ hiện ra này.
Bước 7. Sao chép webhook
- Bạn sẽ có một Webhook trông giống như link bên dưới. Giữ một bản sao để sử dụng trong phần tiếp theo:
https://hooks.slack.com/services/T00000000/B00000000/XXXXXXXXXXXXXXXXXXXXXXXX
2. Triển khai ngăn xếp (AWS CloudFormation)
Hình 8. Sơ đồ kiến trúc AWS CloudFormation
Trong phần này, chúng tôi sẽ triển khai các tài nguyên cho giải pháp này trong tài khoản AWS của bạn
- Đăng nhập tài khoản AWS của ban
- Đường liên kết của CloudFormation stack: [Launch stack button]
- Cập nhật tham số Webhook với web hook của bạn từ phần 1. Đánh dấu vào ô xác nhận (acknowledge) và chọn tạo ngăn xếp (Create stack). Bạn có thể tham khảo repo ở đây.
- Đợi cho đến khi ngăn xếp được triển khai xong và hiển thị dưới dạng CREATE-COMPLETE (ước lượng khoản 3 phút)
3. Triển khai thử nghiệm ( Test Deployment)
Trong phần này chúng tôi sẽ kiểm tra việc triển khai của bạn.
- Trong ngăn xếp CloudFormation của bạn, hãy nhấp vào tài nguyên (Resources) và tìm cấu trúc hàm lambda CFM_RSS_Lambda. Nhấp chọn phần liên kết màu xanh
- Liên kết này sẽ đưa bạn đến bảng điều khiển lambda. Cuộn xuống và nhấp vào Test tab và sau đó nhấp vào nút Kiểm tra (Test) màu cam ở bên phải.
- Bạn sẽ thấy một hộp màu xanh lá cây xuất hiện cho biết việc thực hiện thành công
Trong kênh dự phòng tối ưu hóa chi phí, bây giờ bạn sẽ thấy
Hình 9. Ví dụ
4. Bắt đầu chia sẻ (Start Sharing)
Dưới đây là một số mẹo để đảm bảo mọi người truy cập và sử dụng thông báo bạn chia sẻ
- Cho phép kênh được mở đến bất kỳ ai
- Quảng cáo cho nhóm của bạn từ các nhóm ứng dụng/FinOps khác nhau
- Chọn những điểm nổi bật của bạn và chia sẻ thông tin cập nhật hàng tuần
- Sử dụng tính năng biểu tượng cảm xúc (emoji) Slack để khiến các nhà phát triển tương tác với các bài đăng mà họ thấy thú vị hoặc sẽ thực hiện. Bằng cách này bạn có thể theo dõi mức độ tương tác
Dọn dẹp (Cleaning up)
Để tránh phát sinh phí trong tương lai, hãy xóa các bot tin tức mới
- Đi tới Bảng điều khiển AWS CloudFormation của bạn và tìm Ngăn xếp RSS ( RSS Stack)
- Nhấp vào Tài nguyên (resources) và tìm tên S3Bucket của bạn rồi sao chép ID vật lý
- Đi tới Bảng điều khiển S3 (S3 Console) của bạn và tìm kiếm ID vật lý rồi nhấp vào Làm trống (Empty). Sau khi hoàn tất quay lại và nhấp vào nút Xóa (Delete)
- Đi tới Bảng điều khiển CloudFormation của bạn. Chọn vào xóa ngăn xếp của bạn CloudFormation ( Stack Delete CloudFormation) và nhấp vào Xóa (Delete)
- Đi tới ứng dụng Slack của bạn. Nhấp vào tên kênh trong tiêu đề cuộc trò chuyện. Bấm vào Xem chi tiết kênh( channel Detail). Khi cài đặt, hãy cuộn xuống dưới cùng và lưu trữ kênh.
Kết luận (Conclusion)
Bây giờ bạn đã có các thiết lập này trong Slack của mình, bạn sẽ bắt đầu truyền cảm hứng cho nhiều người hơn nữa việc sử dụng thông báo AWS để tối ưu hóa khối lượng công việc của họ. Nếu bạn có nguồn cấp RSS khác mà bạn muốn báo cáo trong Slack, làm theo các bước tương tự nhưng thay thế key_words trong mã python để lọc những gì bạn muốn tìm kiếm. Việc triển khai nhiều lần có thể giúp thu hẹp các thông báo đến các nhóm tập trung vào các miền (domain) cụ thể hoặc các dịch vụ. Xem lại nguồn cấp dữ liệu của bạn (feed), chia sẻ với các bên liên quan (stakeholders) và tiếp tục tối ưu hóa!
Vui lòng gửi email phản hồi hoặc câu hỏi cho blog này tới costoptimization@amazon.com