Створення системи сповіщень про ігри за допомогою безсерверних технологій AWS

Створення системи сповіщень про ігри за допомогою API та збереження даних в S3 на платформі AWS

У рамках мого 30-денної DevOps виклику сьогодні я працював над захоплюючим проєктом із створення системи сповіщень про ігри за допомогою безсерверних сервісів AWS та зовнішніх API. Ось докладний опис проєкту, з проблемами, з якими я зіткнувся, як я їх подолав і які цінні уроки я виніс з цього процесу.

Мета проєкту

Метою було створити систему сповіщень, яка:

  • Отримує розклад ігор НБА, дати та оновлення через SportsData.io API.
  • Використовує AWS Lambda для виконання функцій на Python без необхідності управляти серверами.
  • Використовує Amazon EventBridge для планування та автоматизації процесу.
  • Надсилає оновлення ігор через Amazon SNS на електронну пошту.

pic

Архітектура проєкту.

Використані технології

  1. Python: Для взаємодії з API SportsData.io.
  2. AWS Lambda: Для запуску безсерверних функцій для обробки даних ігор.
  3. Amazon EventBridge: Для планування періодичних спрацьовувань функцій Lambda.
  4. IAM ролі та політики: Для надання дозволів для міжсервісної комунікації.
  5. Amazon SNS: Для доставки сповіщень на електронну пошту.

Крок за кроком

Крок 1: Отримання даних з SportsData.io

Я написав скрипт на Python, який взаємодіє з API SportsData.io за допомогою API-ключа. Скрипт отримує деталі розкладу ігор НБА, включаючи дати та час.

Крок 2: Розгортання на AWS Lambda

Скрипт на Python був завантажений на AWS Lambda. Безсерверне середовище дозволило функції працювати ефективно, не турбуючись про інфраструктуру.

Крок 3: Планування через EventBridge

За допомогою Amazon EventBridge я створив заплановане правило для тригера функції Lambda через певні інтервали, щоб забезпечити регулярні оновлення.

Крок 4: Надсилання сповіщень через Amazon SNS

Оброблені дані про ігри були відформатовані та надіслані як сповіщення на електронну пошту через Amazon SNS. Це дозволило отримувати оновлення в реальному часі безпосередньо в поштову скриньку.

Виклики та рішення

1. Аутентифікація API

  • Виклик: Управління та безпечне використання API-ключа.
  • Рішення: Я зберіг API-ключ у AWS Secrets Manager і безпечно отримав його в функції Lambda.

2. Права доступу IAM

  • Виклик: Налаштування правильних ролей та політик для Lambda, EventBridge та SNS.
  • Рішення: Я звертався до документації AWS та тестував політики IAM поетапно, щоб переконатися в правильності налаштувань доступу.

3. Парсинг даних

  • Виклик: Видобуток і форматування даних про ігри з відповідей API.
  • Рішення: Бібліотеки Python, такі як json, спростили парсинг і форматування даних.

4. Проблеми з плануванням

  • Виклик: Переконатися, що EventBridge тригерить функцію Lambda в потрібний час.
  • Рішення: Я вручну тестував функцію Lambda та перевіряв правило EventBridge перед розгортанням.

Уроки

  1. Безсерверні технології спрощують масштабування: AWS Lambda та EventBridge є незамінними для автоматизації робочих процесів.
  2. Безпека облікових даних має велике значення: AWS Secrets Manager забезпечує безпечне та безперебійне управління API-ключами.
  3. Ролі IAM є основою: Розуміння та правильне налаштування політик IAM є важливим для ефективного використання AWS.

Кінцевий результат

Система успішно отримала оновлення про ігри НБА і надіслала їх як сповіщення в реальному часі на мою електронну пошту. Цей проєкт продемонстрував потужність поєднання API та безсерверних сервісів AWS для створення масштабованих і надійних рішень.

pic

Сповіщення про гру НБА на Gmail.

Подяка

Я щиро вдячний своїм наставникам за їхнє керівництво та підтримку протягом цього проєкту. Їхній досвід допоміг мені подолати виклики та зробив цей досвід навчання по-справжньому корисним.

Як ви ставитесь до використання безсерверних технологій для систем сповіщень? Поділіться своїми думками та досвідом у коментарях.

Перекладено з: Building a Game Day Notification System with AWS Serverless

Leave a Reply

Your email address will not be published. Required fields are marked *