Вступ.
Цього тижня ми зосереджуємося на розробці API в рамках нашої серії викликів 30-Day DevOps Challenge, натхненної чудовим підручником Іфеанії. Наш проєкт полягає в створенні системи сповіщень для ігор НБА. Спочатку розроблена за допомогою консолі, я перейшов до використання CloudFormation для покращення повторюваності та ясності у розумінні її функціональності.
Чому вибрати CloudFormation?
CloudFormation — це інструмент Інфраструктури як Код (IaC), який дозволяє користувачам визначати та створювати інфраструктуру AWS за допомогою коду. Використовуючи CloudFormation, ви можете легко створювати, змінювати та керувати вашими ресурсами послідовно. Він спрощує процес управління ресурсами, дозволяючи швидко відтворювати та налаштовувати, а також надаючи простий спосіб виявлення та виправлення помилок під час налаштування. Для більш глибокого розуміння CloudFormation, ви можете звернутися до моїх інших записів.
Дизайн системи:
Потік системи
- Система починається з тригера події, запланованого завдання або іншої служби AWS, такої як EventBridge.
- Після отримання події виконується функція Lambda.
- У середині функції Lambda отримується NBAAPIKEY з Secrets Manager за допомогою API GetSecretValue.
- Отриманий ключ використовуються для запиту HTTP, щоб отримати дані з NBA API.
- Після отримання даних, вони надсилаються в службу SNS.
Кращі практики та безпека
Змінні середовища: Система використовує змінні середовища для безпечного зберігання чутливої інформації, такої як API-ключі.
Інтеграція з Secrets Manager: Secrets Manager зберігає та отримує секрети (API-ключі) безпечно в екосистемі AWS. Вони зашифровані за допомогою KMS ключа.
Основні сервіси:
AWS Lambda:
Amazon Web Services (AWS) Lambda — потужна подієва, безсерверна обчислювальна служба, яка дозволяє виконувати ваш код без необхідності в provision чи управлінні серверами. За допомогою Lambda ви сплачуєте тільки за час виконання обчислень, що робить її ефективним і економічно вигідним варіантом. Це дозволяє розробникам зосередитися лише на написанні та розгортанні коду, поки AWS керує основною інфраструктурою без перешкод.
Eventbridge
Служба CloudWatch стала окремою самостійною пропозицією через зростаючий попит. Вона дозволяє користувачам ефективно планувати та керувати подіями, що дозволяє покращити автоматизацію та моніторинг у хмарних середовищах.
Ключові функції:
Планування подій: Користувачі можуть створювати події з точним часом, що дозволяє автоматизувати робочі процеси та виконувати дії вчасно.
Інтеграція: Безперешкодно інтегрується з іншими службами AWS для запуску функцій або сповіщень на основі запланованих подій.
Гнучкість: Пропонує налаштовувані варіанти планування для різноманітних операційних потреб.
Моніторинг і сповіщення: Надає потужні інструменти моніторингу для відстеження виконання подій і налаштування сповіщень про будь-які проблеми.
Ця трансформація відображає зростаюче значення для ефективного управління хмарними операціями, надаючи користувачам потужні інструменти для автоматизації та оптимізації їхніх робочих процесів.
SNS
Amazon Simple Notification Service (SNS) — повністю керована служба обміну повідомленнями від AWS, яка дозволяє клієнтам створювати, налаштовувати та надсилати сповіщення від додатків до кінцевих користувачів або інших розподілених служб. За допомогою SNS ви можете налаштувати підписки для різних кінцевих точок, таких як адреси електронної пошти, мобільні пристрої (за допомогою SMS або push-сповіщень) і кінцеві точки HTTP/HTTPS. Ця універсальність дозволяє використовувати різні варіанти застосування, такі як надсилання оновлень у реальному часі, сповіщень і повідомлень користувачам, що сприяє ефективній комунікації між додатками та їхніми аудиторіями.
По суті, SNS служить центральним хабом, що спрощує процес трансляції сповіщень у великих масштабах, підтримуючи різні протоколи доставки.
Це особливо корисно в сценаріях, де швидке та надійне передавання повідомлень є важливим для підтримки залученості користувачів або забезпечення безшовної інтеграції з іншими службами та додатками в інфраструктурі на базі AWS.
Secrets Manager:
Secrets Manager — це служба, розроблена для безпечного зберігання та керування чутливою інформацією. Вона гарантує, що всі збережені дані автоматично шифруються, вимагаючи дешифрування перед доступом. Це шифрування підвищує безпеку ваших чутливих даних, захищаючи їх від несанкціонованого доступу.
Ключові переваги:
Безпечне зберігання: Шифрує чутливі дані на диску, забезпечуючи їх захист.
Легкість керування доступом: Забезпечує контрольований доступ до секретів, дозволяючи тільки авторизованим користувачам та службам дешифрувати та використовувати їх.
Інтеграція з AWS сервісами: Безперешкодно інтегрується з іншими ресурсами AWS, сприяючи безпечному управлінню обліковими даними через ваші додатки.
Використовуючи Secrets Manager, ви можете з впевненістю керувати чутливою інформацією, такою як API-ключі, паролі та сертифікати у вашому хмарному середовищі.
Захищені дані:
SNS ARN — це зберігає посилання на SNS ARN.
NBA API — це зберігає посилання на NBA API.
Додаток:
UV:
UV — це інноваційна бібліотека Python, яку я нещодавно почав використовувати, і вона надзвичайно зручна у використанні. Вона спрощує роботу з задачами в Python, роблячи розробку більш ефективною та зрозумілою.
Переваги:
Легкість у використанні: Інтуїтивно зрозумілий інтерфейс спрощує складні операції, дозволяючи розробникам швидко освоїти її.
Управління завданнями: Спрощує ефективне управління та виконання завдань у проєктах Python, підвищуючи продуктивність.
Універсальність: Підтримує широкий спектр застосувань, від простих скриптів до більш складних систем, демонструючи свою гнучкість.
Загалом, UV зробила роботу з задачами в Python більш доступною та приємною.
Налаштування Lambda:
Спочатку створюємо порожній каталог. Цей каталог називається package. Він дозволяє зберігати дані в ньому та архівувати їх для S3, що потім буде завантажено в функцію Lambda. Оскільки ми автоматизуємо весь процес зборки, нам потрібно переконатися, що залежності захищені.
Кроки:
- Створіть пакет і встановіть усі залежності з файлу requirements.txt.
- Архівуйте всі залежності Python.
- Після архівації всіх залежностей, повертаємось у головну папку.
- Архівовані залежності потім архівуються з основним кодом Python.
- Завантажуємо архів у S3 через CLI. Інший спосіб завантаження — перетягнути його в S3.
Для більш детальної інформації про те, як почати працювати з залежностями Python в AWS.
Посилання : https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/rds-lambda-tutorial.html
Висновок:
Цей проєкт був як захоплюючим, так і пізнавальним, оскільки я отримав досвід роботи з кількома службами AWS, такими як SNS, EventBridge та Secrets Manager. Я мав можливість вдосконалити проєкт, інтегрувавши CloudFormation, що значно спростило його розгортання та управління.
Основні покращення:
Рішення нативного AWS: Замінив змінні середовища на Secrets Manager для більш безпечного та нативного підходу до керування чутливими даними.
Інфраструктура як код: Використав CloudFormation для автоматизації та стандартизації надання інфраструктури, підвищуючи ефективність і послідовність.
Цей досвід надихнув мене поділитися труднощами та висновками, отриманими під час цієї подорожі, через мої наступні пости в рамках 30 Days of DevOps Boot Camp. Слідкуйте за оновленнями та приєднуйтесь до нас!
Linkedin — https://www.linkedin.com/in/momodou-ceesay-788058193/
Github — cmomodo.
Youtube Video- https://m.youtube.com/watch?v=09WfkKc0x_Q&t=1430s&pp=2AGWC5ACAQ%3D%3D
Перекладено з: Game Day Notification: Day 2.