Việc thực hành tích hợp vận hành định nghĩa làm thế nào các công cụ, quy trình, con người của một tổ chức có thể tích hợp với con người, quy trình, công cụ của tổ chức khác. Khi các hoạt động nào đó xảy ra trong một tổ chức, nó có thể kích hoạt phản hồi thủ công hoặc tự động.
Ví dụ: khách hàng AWS thường tích hợp hoạt động với Bộ phận hỗ trợ AWS hoặc Dịch vụ được quản lý của AWS bất cứ khi nào họ cần trợ giúp từ AWS.
Bộ phận hỗ trợ AWS gần đây đã công bố Amazon EventBridge hỗ trợ cho AWS Support API. Trước đây, những khách hàng muốn tự động hóa phản hồi tùy chỉnh cho các trường hợp hỗ trợ thì cần phải poll các API của AWS để phát hiện khi nào các trường hợp đã được tạo hoặc cập nhật.
Giờ đây, khách hàng có thể sử dụng Amazon EventBridge để khởi tạo các quy trình công việc hướng sự kiện (event-driven workflow) khi các hoạt động diễn ra trong tài khoản AWS của họ. EventBridge có thể tự động phát hiện hoạt động Hỗ trợ AWS, cũng như khởi tạo phản hồi tự động.
Bài này sẽ trình bày chi tiết cách bạn có thể nắm bắt kiến trúc hướng sự kiện cho các tình huống tự động hóa phổ biến và tương tác lập trình trình với Support API.
Kiến trúc giải pháp:
Giải pháp này được triển khai dưới dạng ngăn xếp AWS CloudFormation bao gồm các tài nguyên sau:
- Một quy tắc (rule) EventBridge để khởi tạo các hành động tự động khi các trường hợp (case) hỗ trợ AWS được tạo hoặc cập nhật.
- Một chủ đề SNS topic. Quy tắc EventBridge sẽ xuất bản (publish) đến chủ đề này khi hoạt động hỗ trợ diễn ra.
- Một hàm AWS Lambda xuất bản thông báo cho một chủ đề SNS.
- Một chủ đề SNS mà các bên quan tâm có thể đăng ký khi họ muốn được thông báo về hoạt động hỗ trợ đang diễn ra trong tài khoản của họ.
- Một hàm Lambda khởi tạo một tin nhắn Slack để thông báo cho Kênh Slack rằng hoạt động hỗ trợ đã diễn ra.
Sơ đồ Kiến trúc giải pháp mô tả một quy trình tự động được kích hoạt bất cứ khi nào hoạt động Hỗ trợ AWS diễn ra.
Giải pháp hoạt động như sau:
- Một trường hợp hỗ trợ được tạo hoặc cập nhật bên trong tài khoản của bạn.
- Một sự kiện được đặt trên event bus của EventBridge và sự kiện này được EventBridge đánh giá để xác định xem có quy tắc EventBridge phù hợp hay không.
- Quy tắc EventBridge được kích hoạt khi sự kiện khớp với mẫu sau:
Ảnh chụp màn hình từ AWS Console mô tả EventBridge patterns khớp với AWS
- Quy tắc EventBridge xuất bản sự kiện lên chủ đề SNS.
- Chủ đề SNS kích hoạt hai hàm Lambda, truyền bản sao của sự kiện cho cả hai hàm:
a. Hàm Lambda đầu tiên đánh giá sự kiện, liệu đó là sự kiện ‘Tạo’ hay ‘Cập nhật’, xuất bản một thông báo thân thiện với người dùng cho một chủ đề SNS. Người dùng đã đăng ký chủ đề SNS này sẽ nhận được thông báo (ví dụ: Email hoặc SMS)
b. Hàm Lambda thứ hai đánh giá sự kiện và thực hiện lệnh gọi API tới Slack Webhook API. Giả sử rằng Slack được định cấu hình để nhận các sự kiện này, một thông báo sẽ được đăng lên Kênh Slack để thông báo cho các thành viên của kênh về hoạt động của AWS Support.
Cân nhắc khi sử dụng cho môi trường production:
Các lưu ý sau đây cần được tính đến khi sử dụng môi trường production:
Mã hóa – Cách tốt nhất là sử dụng mã hóa ở mọi nơi. Trong mã mẫu được cung cấp cùng với bài này, các chủ đề SNS không được mã hóa. Khi sử dụng giải pháp này trong môi trường production, bạn nên mã hóa các chủ đề này bằng dịch vụ quản lý khóa AWS (AWS KMS).
Phân phối ít nhất một lần – Amazon SNS cung cấp dịch vụ gửi tin nhắn “ít nhất một lần”, có nghĩa là bạn có thể nhận được nhiều thông báo. Điều này có thể không quan trọng đối với tổ chức của bạn khi tích hợp với Email hoặc Slack. Tuy nhiên, nó có thể đưa ra những thách thức trong quá trình tự động hóa phức tạp hơn. Xem xét các cơ chế để cung cấp phân phối chính xác một lần dựa trên trường hợp sử dụng của bạn.
Công suất dành riêng đồng thời (Reserved concurrency) – Nếu tài khoản AWS triển khai giải pháp này cũng sử dụng các hàm AWS Lambda khác, thì có rủi ro là các Hàm Lambda khác có thể sử dụng tất cả dung lượng tài khoản hiện có và ngăn không cho các hàm Lambda trong giải pháp này chạy. Bạn có thể cần phải xem xét tính đồng thời dành riêng nếu điều này áp dụng cho trường hợp sử dụng của bạn.
Lưu giữ nhật ký – Mã mẫu được cung cấp cùng với bài đăng này có thời gian lưu giữ nhật ký Amazon CloudWatch được mã hóa cứng là bảy ngày. Khách hàng nên cân nhắc các chính sách lưu giữ dữ liệu của riêng mình khi sử dụng nó trong môi trường production.
Thủ tục
Điều kiện tiên quyết
Các điều kiện tiên quyết quan trọng:
- Một tài khoản AWS được cài đặt cấu hình công cụ AWS Command Line Interface (AWS CLI).
- Tài khoản AWS được đăng ký gói hỗ trợ Business, Enterprise On-Ramp, or Enterprise để có thể truy xuất AWS Support API.
- Một kênh Slack được cấu hình cho các quy trình công việc nâng cao bằng việc sử dụng webhooks dựa trên các bước được ghi trên trang này. Bài đăng này cũng tóm tắt các bước đó trong phần sau.
- Git để tải xuống mã nguồn mẫu.
Bước 1: Cấu hình Slack để nhận các cảnh báo từ hoạt động AWS Support
Một Slack Webhook là một URL HTTPS nhận yêu cầu HTTPS bất cứ khi nào Hoạt động hỗ trợ xảy ra bên trong Tài khoản AWS. Khi Webhook nhận được một yêu cầu được định dạng đúng, nó sẽ chuyển thông tin dưới dạng tin nhắn đến một kênh Slack. Tài liệu của Slack mô tả cách tạo quy trình công việc nâng cao bằng cách sử dụng webhook. Tuy nhiên, các bước chính được đề cập trong phần sau.
Trước tiên, nếu bạn không có kênh slack mà bạn muốn xuất bản hoạt động Hỗ trợ AWS thì hãy tạo một kênh Slack mới.
Từ kênh mà bạn muốn xuất bản hoạt động Hỗ trợ AWS, hãy mở “Slack Workflow Builder”.
Chọn nút “Create” (tạo) và đặt tên cho quy trình làm việc của bạn.
Chọn tùy chọn “Webhook” để bắt đầu quy trình làm việc này.
Tạo 3 biến (caseId, caseUrl, updateDetails), mỗi biến có Kiểu dữ liệu là “Text”. Các biến phân biệt chữ hoa chữ thường.
Tiếp theo, thêm bước quy trình làm việc vào “Send a Message” khi webhook nhận được tin nhắn
Chọn một kênh không hoạt động mà bạn muốn xuất bản hoạt động Hỗ trợ AWS. Bạn có thể tùy chỉnh thông báo sẽ được gửi đến kênh theo yêu cầu của riêng bạn và chèn ba biến đã tạo trước đó (caseId, caseUrl và updateDetails).
Chọn tùy chọn “Publish” để tạo Webhook. Sau khi xuất bản, hãy sao chép URL của Slack Webhook, URL này sẽ tương tự như: https://hooks.slack.com/workflows/
Bước 2: Triển khai giải pháp này bằng AWS CLI ở khu vực us-east-1
AWS Support API có thể truy cập được qua điểm cuối (endpoint) của region us-east-1. Do đó, giải pháp này phải được triển khai ở khu vực us-east-1. Cập nhật thông số SlackWebhookURL bên dưới với URL Webhook được tạo trong bước trước.
#Clone the Git Repository
git clone https://github.com/aws-samples/aws-support-case-activity-notifier.git
# Change Directory into the repository
cd ./aws-support-case-activity-notifier
# Use the AWS CLI to deploy the CloudFormation template
aws cloudformation deploy \
--template-file template.yml \
--stack-name SupportCaseNotifier \
--capabilities CAPABILITY_IAM \
--region us-east-1 \
--parameter-overrides SlackWebhookURL=https://hooks.slack.com/workflows/replaceme
Bước 3: Đăng ký địa chỉ email cho chủ đề SNS cung cấp thông báo cập nhật case hỗ trợ
Sau khi ngăn xếp CloudFormation của bạn đã được triển khai, hãy điều hướng đến bảng điều khiển Amazon SNS và chọn chủ đề có tên “EndUserSubscriptionTopic”.
Tạo một đăng ký cho chủ đề này.
Chọn Giao thức “Email” và nhập địa chỉ email đích mà bạn muốn thông báo về hoạt động của AWS Support Case
Kiểm tra email của bạn, vì bạn phải xác nhận đăng ký bằng cách chọn liên kết được cung cấp trước khi tiếp tục..
Bước 4: tạo một kiểm tra AWS Support Case để xác minh rằng giải pháp đã được thực hiện
Using the AWS Console, AWS CLI, or APIs, create a new AWS Support Case. For test cases, use the subject
Sử dụng AWS Console, AWS CLI hoặc API, tạo một Case hỗ trợ AWS mới. Đối với các trường hợp thử nghiệm, hãy sử dụng chủ đề (subject) “TEST CASE-Please ignore”.
Sau khi tạo case, bạn sẽ nhận được thông báo trong kênh Slack của mình rằng trường hợp hỗ trợ đã được tạo.
Hơn nữa, bạn sẽ nhận được thông báo qua email từ chủ đề SNS mà bạn đã đăng ký.
Ảnh chụp màn hình từ Slack mô tả việc gửi tin nhắn thành công.
Dọn dẹp
Khi hoàn tất, bạn có thể dọn dẹp Tài nguyên AWS đã được triển khai bằng cách thực hiện các lệnh sau với AWS CLI::
$ aws cloudformation delete-stack --stack-name SupportCaseNotifier
Kết luận
Trong bài này, tôi đã cung cấp một giải pháp sử dụng EventBridge để kích hoạt một hoặc nhiều hàm Lambda bất cứ khi nào hoạt động hỗ trợ xảy ra trong tài khoản AWS của bạn. Bạn cũng có thể mở rộng mã mẫu này để tạo tự động hóa nâng cao hơn đáp ứng các yêu cầu tùy chỉnh của riêng bạn.
Ngoài ra, AWS cung cấp AWS Service Management Connector for Jira Service Management và AWS Service Management Connector for ServiceNow cho những khách hàng muốn có giải pháp theo quy định để tích hợp với Hỗ trợ AWS và Dịch vụ được quản lý AWS.
Bài được dịch từ bài viết trên AWS Blogs, bạn có thể xem bài viết gốc tại đây.