Створення системи сповіщень про ігри за допомогою API та збереження даних в S3 на платформі AWS
У рамках мого 30-денної DevOps виклику сьогодні я працював над захоплюючим проєктом із створення системи сповіщень про ігри за допомогою безсерверних сервісів AWS та зовнішніх API. Ось докладний опис проєкту, з проблемами, з якими я зіткнувся, як я їх подолав і які цінні уроки я виніс з цього процесу.
Мета проєкту
Метою було створити систему сповіщень, яка:
- Отримує розклад ігор НБА, дати та оновлення через SportsData.io API.
- Використовує AWS Lambda для виконання функцій на Python без необхідності управляти серверами.
- Використовує Amazon EventBridge для планування та автоматизації процесу.
- Надсилає оновлення ігор через Amazon SNS на електронну пошту.
Архітектура проєкту.
Використані технології
- Python: Для взаємодії з API SportsData.io.
- AWS Lambda: Для запуску безсерверних функцій для обробки даних ігор.
- Amazon EventBridge: Для планування періодичних спрацьовувань функцій Lambda.
- IAM ролі та політики: Для надання дозволів для міжсервісної комунікації.
- 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 перед розгортанням.
Уроки
- Безсерверні технології спрощують масштабування: AWS Lambda та EventBridge є незамінними для автоматизації робочих процесів.
- Безпека облікових даних має велике значення: AWS Secrets Manager забезпечує безпечне та безперебійне управління API-ключами.
- Ролі IAM є основою: Розуміння та правильне налаштування політик IAM є важливим для ефективного використання AWS.
Кінцевий результат
Система успішно отримала оновлення про ігри НБА і надіслала їх як сповіщення в реальному часі на мою електронну пошту. Цей проєкт продемонстрував потужність поєднання API та безсерверних сервісів AWS для створення масштабованих і надійних рішень.
Сповіщення про гру НБА на Gmail.
Подяка
Я щиро вдячний своїм наставникам за їхнє керівництво та підтримку протягом цього проєкту. Їхній досвід допоміг мені подолати виклики та зробив цей досвід навчання по-справжньому корисним.
Як ви ставитесь до використання безсерверних технологій для систем сповіщень? Поділіться своїми думками та досвідом у коментарях.
Перекладено з: Building a Game Day Notification System with AWS Serverless