AWS Практика: Від глобальної архітектури до Serverless застосунків, всебічне покращення ваших хмарних навичок
AWS Практика: Від глобальної архітектури до Serverless застосунків, всебічне покращення ваших хмарних навичок
AWS (Amazon Web Services) вже став лідером у сфері хмарних обчислень, і як великі підприємства, так і стартапи використовують різноманітні сервіси, які надає AWS, для побудови та розгортання застосунків. З обговорень на X/Twitter ми бачимо, що AWS охоплює дуже широке коло областей, включаючи інфраструктуру, безпеку, AI/ML, DevOps та Serverless застосунки. Ця стаття, поєднуючи ці обговорення, надасть вам більш повний практичний посібник з AWS, щоб допомогти вам покращити свої хмарні навички та краще використовувати платформу AWS.
1. Розуміння глобальної інфраструктури AWS: Ключ до високої доступності та відмовостійкості
Опанування глобальної інфраструктури AWS є основою для побудови високонадійних і відмовостійких застосунків. Глобальна інфраструктура AWS складається з наступних ключових компонентів:
- Region (Регіон): Незалежний регіон у географічному розташуванні, кожен регіон містить кілька Availability Zone. При виборі регіону необхідно враховувати затримку, вимоги відповідності та вартість.
- Availability Zone (Зона доступності): Ізольоване місцезнаходження в межах регіону, кожна зона доступності складається з одного або кількох центрів обробки даних. Розгортання застосунків у різних зонах доступності може підвищити відмовостійкість.
- Edge Location (Периферійний сайт): Розподілені по всьому світу сервери кешування, які використовуються для прискорення розповсюдження контенту. AWS CloudFront використовує периферійні сайти для кешування статичного та динамічного контенту, покращуючи користувацький досвід.
Практичні поради:
- Розгортання в кількох зонах доступності: Розгортання копій застосунку в різних зонах доступності може запобігти недоступності застосунку через збій однієї зони доступності.
- Вибір відповідного регіону: Виберіть відповідний регіон на основі місцезнаходження користувачів і вимог відповідності.
- Використання CloudFront для прискорення розповсюдження контенту: Використовуйте CloudFront для кешування статичного та динамічного контенту, щоб покращити користувацький досвід.
2. IAM Найкращі практики: Принцип найменших привілеїв
Identity and Access Management (IAM) є ядром безпеки AWS. IAM дозволяє вам контролювати, хто може отримати доступ до ваших ресурсів AWS і які дії вони можуть виконувати. Основні концепції IAM включають:
- Users (Користувачі): Представляють окремих осіб або застосунки, які використовуються для доступу до ресурсів AWS.
- Roles (Ролі): Можуть бути призначені сервісам AWS або інстансам EC2, дозволяючи їм отримувати доступ до інших ресурсів AWS.
- Groups (Групи): Використовуються для організації користувачів, полегшуючи управління дозволами.
- Policies (Політики): Визначають дозволи для користувачів, ролей або груп.
Найкращі практики:
- Принцип найменших привілеїв (Least Privilege): Надавайте користувачам або ролям лише мінімально необхідні дозволи. Уникайте використання політики
AdministratorAccess, слід створювати власні політики на основі фактичних потреб. - Використовуйте Roles замість IAM користувачів: Намагайтеся використовувати Roles для надання інстансам EC2 або функціям Lambda дозволу на доступ до інших ресурсів AWS, щоб уникнути зберігання Access Key ID і Secret Access Key у коді.
- Увімкніть MFA (Multi-Factor Authentication): Увімкніть MFA для всіх IAM користувачів, щоб підвищити безпеку облікового запису.
- Регулярно перевіряйте дозволи IAM: Регулярно перевіряйте дозволи IAM, щоб переконатися, що немає випадків надмірної авторизації.
Приклад політики:
Наведена нижче політика дозволяє користувачам виконувати операції GetObject і PutObject у бакеті S3 my-bucket у регіоні us-east-1.
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": [
"s3:GetObject",
"s3:PutObject"
],
"Resource": "arn:aws:s3:::my-bucket/*",
"Condition": {
"StringEquals": {
"aws:RequestedRegion": "us-east-1"
}
}
}
]
}
3. Автоматизація DevOps: Використання Bash-скриптів та GitHub Actions
Обговорення в X/Twitter згадували DevOps Bash-скрипти та GitHub Actions, які є важливими інструментами для реалізації автоматизації DevOps.
- Bash-скрипти: Ви можете використовувати Bash-скрипти для автоматизації різних завдань DevOps, таких як розгортання програм, конфігурація серверів, моніторинг систем тощо.
- GitHub Actions: GitHub Actions - це інструмент CI/CD, який може автоматично збирати, тестувати та розгортати програми.
Практичні поради:
- Використовуйте Bash-скрипти для автоматизації поширених завдань: Наприклад, ви можете використовувати Bash-скрипт для автоматичного розгортання Lambda-функції або EC2-інстансу.
- Використовуйте GitHub Actions для побудови CI/CD-пайплайну: Ви можете використовувати GitHub Actions для автоматичної збірки, тестування та розгортання програм.
- Контроль версій: Зберігайте Bash-скрипти та конфігурації GitHub Actions в системі контролю версій, наприклад, Git.
Приклад робочого процесу GitHub Actions:
Наведений нижче робочий процес GitHub Actions автоматично збирає, тестує та розгортає Lambda-функцію кожного разу, коли код надсилається до гілки main.
name: Deploy Lambda Function
on:
push:
branches:
- main
jobs:
deploy:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- uses: actions/setup-node@v3
with:
node-version: 16
- run: npm install
- run: npm run build
- uses: actions/configure-aws-credentials@v1
with:
aws-access-key-id: ${{ secrets.AWS_ACCESS_KEY_ID }}
aws-secret-access-key: ${{ secrets.AWS_SECRET_ACCESS_KEY }}
aws-region: us-east-1
- run: aws lambda update-function-code --function-name my-lambda-function --zip-file fileb://dist/lambda.zip
4. Serverless-застосунки: AWS Lambda + S3 + DynamoDBОбговорення на X/Twitter згадували приклад створення Serverless X (Twitter) Quote Bot за допомогою AWS Lambda, S3 та DynamoDB. Це демонструє потужність Serverless архітектури.
- AWS Lambda: Сервіс безсерверних обчислень, який дозволяє запускати код без необхідності керування серверами.
- Amazon S3: Сервіс об'єктного зберігання для зберігання різних типів даних.
- Amazon DynamoDB: NoSQL сервіс баз даних для зберігання структурованих та напівструктурованих даних.
Кроки для створення Serverless додатків:
- Вибір відповідного тригера: Виберіть подію, яка запускатиме функцію Lambda, наприклад HTTP-запит, завантаження об'єкта S3, оновлення даних DynamoDB тощо.
- Написання коду функції Lambda: Напишіть код функції Lambda для обробки події тригера та виконання відповідних дій.
- Налаштування IAM ролі: Налаштуйте IAM роль, щоб надати функції Lambda дозволи на доступ до інших ресурсів AWS, таких як S3 та DynamoDB.
- Розгортання функції Lambda: Розгорніть функцію Lambda в AWS.
- Тестування функції Lambda: Перевірте функцію Lambda, щоб переконатися, що вона працює належним чином.
Переваги Serverless додатків:
- Немає необхідності керувати серверами: Немає необхідності керувати серверами, що зменшує навантаження на операції.
- Автоматичне масштабування: Автоматичне масштабування відповідно до обсягу запитів, без необхідності ручного налаштування.
- Оплата за потреби: Платіть лише за фактично використані обчислювальні ресурси, що знижує витрати.
5. AI/ML додатки: Bedrock та LLM практики
Обговорення на X/Twitter також згадували про можливості стажування в AWS AI Lab для дослідження LLM (Large Language Model) та застосування Bedrock. AWS пропонує широкий спектр AI/ML сервісів, які можуть допомогти вам створити різноманітні AI/ML додатки.
- Amazon Bedrock: Сервіс, який надає набір високопродуктивних базових моделей від провідних AI компаній.
- AWS AI Lab: Зосереджується на дослідженнях AI/ML та надає можливості стажування для студентів.
Напрямки практики:
- Використання Bedrock для створення AI додатків: Ви можете використовувати базові моделі, надані Bedrock, для створення різноманітних AI додатків, таких як генерація тексту, розпізнавання зображень, розпізнавання мови тощо.
- Зверніть увагу на пам'ять LLM та безперервне навчання: Зверніть увагу на останні дослідження LLM, такі як пам'ять LLM та безперервне навчання, які можуть допомогти вам створити більш інтелектуальні AI додатки.
6. Безпека та відповідність: Зверніть увагу на перебої в роботі сервісів AWS
Обговорення на X/Twitter згадували про інциденти з перебоями в роботі сервісів AWS, що нагадує нам про необхідність звертати увагу на безпеку та відповідність AWS.
- Розгортання в кількох регіонах: Розгортання додатків у різних регіонах AWS може запобігти недоступності додатків через збій в одному регіоні.
- Моніторинг та сповіщення: Налаштуйте моніторинг та сповіщення, щоб вчасно виявляти проблеми та вживати заходів.
- Резервне копіювання та відновлення: Регулярно створюйте резервні копії даних та тестуйте процеси відновлення.
- Відповідність: Знайте та дотримуйтесь відповідних вимог відповідності, таких як GDPR, HIPAA тощо.





