0
0
Lập trình
Admin Team
Admin Teamtechmely

Tự động hóa thông báo tin tức với AWS Lambda và SNS

Đăng vào 1 tháng trước

• 7 phút đọc

Tự động hóa thông báo tin tức với AWS Lambda, SNS và EventBridge

Giới thiệu

Trong bài viết trước, tôi đã giải thích cách xây dựng một trình tóm tắt tin tức đơn giản bằng cách sử dụng AWS Lambda và API Gateway. Tôi đã sử dụng AWS SAM để xây dựng, kiểm tra cục bộ và sau đó triển khai bằng phương pháp IaC (hạ tầng như mã).

Bài viết này là Phần 2 trong chuỗi bài viết của tôi. Ở bài viết này, tôi sẽ hướng dẫn bạn cách nâng cao trình tóm tắt tin tức bằng cách tự động hóa thông báo tin tức với AWS Lambda, SNS và EventBridge.

Chức năng Lambda sẽ lấy nội dung tin tức mong muốn bằng cách sử dụng một API tin tức công cộng và sẽ được tích hợp thông qua lịch trình EventBridge và SNS để gửi tóm tắt tin tức hàng ngày đến email đã đăng ký.

Kiến trúc

Trước khi bắt đầu, hãy cùng xem sơ đồ kiến trúc để hiểu cách các thành phần tương tác với nhau.

Kiến trúc

Các yêu cầu cần thiết

  • Kinh nghiệm sử dụng AWS Management Console.
  • Kiến thức về Python/Boto3
  • Hiểu biết cơ bản về AWS SAM
  • Hiểu biết cơ bản về Lambda, EventBridge và SNS
  • Làm quen với thiết kế và kiến trúc dựa trên sự kiện
  • Đăng ký tại NewsAPI.org và lấy API Key

Chúng ta đang xây dựng gì và tại sao?

Chúng ta đang xây dựng một trình tóm tắt tin tức không máy chủ, lấy tin tức công nghệ mới nhất từ API tin tức công cộng và gửi chúng qua một chức năng AWS Lambda. Chức năng này được tích hợp với Amazon EventBridge Scheduler và Amazon SNS để gửi thông báo tin tức hàng ngày trực tiếp đến các địa chỉ email đã đăng ký.

Lịch trình EventBridge sử dụng các biểu thức cron, cho phép bạn xác định thời gian chính xác mà bạn muốn nhận tóm tắt email hàng ngày.

Tại sao phải xây dựng giải pháp này?

Bởi vì việc cập nhật tin tức công nghệ mới nhất là thú vị - nhưng việc kiểm tra thủ công các blog, nguồn cấp RSS và các trang tổng hợp có thể tốn thời gian. Bạn có thể tự động hóa quy trình đó bằng cách sử dụng AWS Serverless và các công cụ AI không?

Với quy trình tự động này, bạn sẽ nhận được những điểm nổi bật về tin tức công nghệ hàng ngày ngay trong hộp thư đến của mình - đơn giản, nhanh chóng và không máy chủ.

Giới thiệu về Public News API

NewsAPI.org là một dịch vụ tổng hợp tin tức cung cấp quyền truy cập lập trình vào các tiêu đề và bài viết từ các ấn phẩm lớn như CNN, BBC, TechCrunch và nhiều hơn nữa.

Theo trang web của họ, NewsAPI trả về kết quả tìm kiếm JSON từ hơn 150.000 nguồn!

API cho phép các nhà phát triển lấy được các tiêu đề hàng đầu, được lọc theo quốc gia hoặc danh mục (như công nghệ hoặc kinh doanh) và tìm kiếm trên hàng nghìn bài viết từ nhiều nguồn khác nhau.

Dịch vụ này cung cấp một gói miễn phí với tối đa 100 yêu cầu mỗi ngày, mặc dù quyền truy cập miễn phí này bị hạn chế cho việc sử dụng không thương mại. Đối với các nhà phát triển xây dựng ứng dụng tin tức hoặc tích hợp các sự kiện hiện tại vào dự án của họ, NewsAPI cung cấp một cách đơn giản để truy cập nội dung tin tức theo thời gian thực từ các nguồn đáng tin cậy trên toàn thế giới.

Đánh giá mẫu AWS SAM

Hãy cùng xem xét file template.yaml cho AWS SAM:

Các tài nguyên chính được định nghĩa trong mẫu này:

  • Chức năng Lambda
  • Lịch trình Event Bridge
  • Chủ đề Amazon SNS

Mẫu SAM này tạo ra một trình tóm tắt tin tức không máy chủ tự động lấy các bài viết tin công nghệ và gửi qua email hàng ngày. Nó triển khai một chức năng Lambda Python gọi NewsAPI, lập lịch để chạy hàng ngày bằng cách sử dụng Lịch trình EventBridge và thiết lập một chủ đề SNS với đăng ký email để gửi các tóm tắt tin tức. Mẫu bao gồm các quyền IAM cần thiết cho Lambda để công bố lên SNS và yêu cầu một tham số email cho địa chỉ nhận.

Đánh giá chức năng AWS Lambda (Thư viện Python/Boto3)

Chức năng Lambda này lấy 5 bài viết tin công nghệ hàng đầu của Mỹ từ NewsAPI và tự động gửi chúng dưới dạng tóm tắt định dạng. Nó gọi NewsAPI với các tham số được định nghĩa sẵn (quốc gia Mỹ, danh mục công nghệ, bài viết mới nhất), định dạng kết quả thành một email có thể đọc được với tiêu đề, nguồn, URL và mô tả, sau đó công bố tóm tắt lên một chủ đề SNS để gửi email. Chức năng này xử lý lỗi một cách khéo léo và trả về thông tin trạng thái về cả hai hoạt động lấy tin tức và gửi email.

Xây dựng chức năng cục bộ bằng AWS SAM

Vì tôi đang sử dụng AWS SAM cho chức năng này, hãy bắt đầu bằng cách xây dựng chức năng. Sử dụng lệnh sau để xây dựng chức năng:

Copy
sam build

Gọi chức năng cục bộ bằng AWS SAM

Khi xây dựng thành công, bạn có thể gọi chức năng cục bộ bằng lệnh sam local invoke:

Copy
sam local invoke <tên chức năng>

Ví dụ:

Copy
sam local invoke GbNewsSummarizerFn

Khi chức năng này được thực thi, bạn sẽ mong đợi đầu ra sau:

Triển khai chức năng bằng AWS SAM

Sau khi xác nhận chức năng cục bộ, bạn có thể triển khai nó lên AWS Cloud bằng lệnh sam deploy:

Copy
sam deploy

Quy trình triển khai này sẽ tạo ra bộ thay đổi và bạn có thể xem và xác nhận bộ thay đổi trước khi nó được triển khai trong môi trường AWS Cloud của bạn.

Xác nhận bộ thay đổi

Kiểm tra việc tạo bộ thay đổi CloudFormation!

Xem xét các tài nguyên đã tạo (Lịch trình Event Bridge, SNS, Chức năng Lambda)

Nếu bạn đăng nhập vào AWS Console và điều hướng đến Event Bridge, bạn sẽ thấy rằng lịch trình Event Bridge đã được tạo:

Bạn cũng có thể điều hướng đến Lambda và xem dịch vụ SNS và sẽ thấy các tài nguyên đã được tạo.

Xác nhận đăng ký!

Vâng, bạn cần xác nhận địa chỉ email. Khi bạn triển khai stack CloudFormation, SNS sẽ tự động gửi một email xác nhận đăng ký đến địa chỉ email đã cung cấp trong mẫu của bạn.

Việc xác minh là một tính năng bảo mật để ngăn chặn spam và đảm bảo chỉ những người nhận được ủy quyền mới nhận được thông báo.

Nếu không có xác nhận, chức năng sẽ công bố lên SNS nhưng không có email nào được gửi đến địa chỉ chưa được xác nhận.

Chờ Event Bridge gọi Lambda và Giám sát nhật ký Cloud Watch

Bây giờ chức năng Lambda, chủ đề SNS và lịch trình EventBridge đều đã được cấu hình, tôi sẽ chờ cho lịch trình gọi chức năng Lambda.

Để giám sát việc gọi và nhật ký theo thời gian thực, tôi sẽ sử dụng tính năng Live Tail của CloudWatch.

Nhật ký Live Tail

Kiểm tra email của bạn!

Từ các nhật ký, bạn có thể thấy rằng chức năng đã được gọi và email đã được gửi. Bây giờ, hãy kiểm tra hộp thư đến của bạn, bạn sẽ thấy một email tóm tắt tin tức tương tự như bên dưới:

Dọn dẹp Tài nguyên

Khi bạn đã hoàn thành thiết lập, hãy đảm bảo xóa chức năng Lambda để tránh sử dụng tài nguyên không cần thiết.

Bạn có thể xóa các tài nguyên qua AWS Console:

  • Xóa toàn bộ stack
  • Xóa chức năng Lambda
  • Xóa Lịch trình Event Bridge
  • Xóa Chủ đề SNS
  • Xóa Nhóm Nhật ký
  • Xóa Vai trò IAM

Vì những tài nguyên này được xây dựng và triển khai bằng AWS SAM, chúng có thể được xóa bằng lệnh AWS SAM:

Copy
sam delete

Kết luận

Trong bài viết này, tôi đã trình bày cách xây dựng một trình tóm tắt tin tức sử dụng chức năng AWS Lambda và tự động hóa nó với Amazon EventBridge Scheduler và thông báo email Amazon SNS. Chức năng Lambda sử dụng bộ tổng hợp NewsAPI.org, trả về kết quả tin tức ở định dạng JSON.

Với giải pháp này, bạn có thể nhận được tóm tắt tin tức hàng ngày của mình gửi thẳng đến hộp thư đến qua email SNS!

Tôi hy vọng bạn thấy bài hướng dẫn này hữu ích và thú vị!

Nếu bạn quan tâm đến việc mở rộng dự án này hơn nữa, hãy theo dõi chuỗi bài viết 5 phần sắp tới của tôi, nơi tôi sẽ hướng dẫn bạn xây dựng một hệ thống giao hàng tin tức hoàn chỉnh, sử dụng AI:

  • Phần 1: Xây dựng một trình tóm tắt tin tức đơn giản với AWS Lambda và API Gateway
  • Phần 2: Tự động hóa thông báo tin tức với AWS Lambda, SNS và EventBridge
  • Phần 3: Thêm tóm tắt AI sinh ra với Amazon Bedrock vào tin tức của bạn
  • Phần 4: Xây dựng API trình tóm tắt tin tức AI sinh ra không máy chủ với AWS Lambda và Bedrock
  • Phần 5: Giao hàng tin tức HTML không máy chủ sử dụng Bedrock, EventBridge, Lambda và SNS

Cảm ơn bạn đã đọc!

Gợi ý câu hỏi phỏng vấn
Không có dữ liệu

Không có dữ liệu

Bài viết được đề xuất
Bài viết cùng tác giả

Bình luận

Chưa có bình luận nào

Chưa có bình luận nào