текст перекладу
Amazon Simple Storage Service (S3) — це сервіс об'єктного зберігання, який є масштабованим, високодоступним, безпечним і економічно ефективним. З Amazon S3 ви можете зберігати та отримувати будь-яку кількість даних у будь-який час з будь-якого місця в Інтернеті. S3 дозволяє створювати бакети, в яких можна зберігати будь-які дані.
У цьому блозі ми розглянемо практичний підхід до використання Amazon S3, охоплюючи реальні сценарії, включаючи завантаження файлів, керування правами доступу та хостинг статичних вебсайтів.
Що таке Amazon S3?
Amazon S3 (Simple Storage Service) — це сервіс об'єктного зберігання, який є надзвичайно надійним, масштабованим та економічно ефективним, наданим AWS. Він дає розробникам та бізнесам можливість зберігати і отримувати будь-яку кількість даних з будь-якого місця в Інтернеті. Це може бути від кількох гігабайт до терабайт або навіть петабайт.
Переваги Amazon S3:
- Масштабованість: Автоматично масштабується для обробки необмеженого обсягу зберігання та керування великими обсягами даних і високими запитами.
- Надійність: Розроблено для 99.999999999% (11 дев'яток) надійності, що гарантує, що дані захищені та зберігаються на кількох пристроях у різних приміщеннях.
- Безпека: Надає детальний контроль над тим, хто може отримати доступ до даних за допомогою AWS Identity and Access Management (IAM), політик бакетів і списків контролю доступу (ACL). S3 підтримує як серверне, так і клієнтське шифрування для захисту даних в спокої та при передачі.
- Висока доступність: Розроблено для 99.99% доступності, щоб гарантувати, що дані будуть доступні, коли це необхідно.
- Глобальна доступність: S3 доступний у всьому світі, що означає, що користувачі з будь-якої точки світу можуть отримати доступ до даних. Це корисно для хостингу статичних вебсайтів або надання контенту для глобальної аудиторії.
- Інтеграція та сумісність: Інтегрується з різними сервісами AWS, такими як AWS Lambda, Amazon CloudFront та інші.
- Економічна ефективність: Пропонує модель оплати по мірі використання, без попередніх витрат чи довгострокових зобов'язань. S3 також пропонує різні класи зберігання, такі як S3 Standard, S3 Intelligent-Tiering, S3 Standard-IA, та S3 Glacier.
S3 Lifecycle
Розуміння S3 Бакетів та Об'єктів
↪ S3 Бакети:
- Бакет S3 — це контейнер для зберігання об'єктів в Amazon S3. Кожен бакет має унікальний ключ (ім'я) і використовується для зберігання даних та керування правами доступу.
- Імена бакетів повинні бути унікальними по всіх облікових записах AWS.
- Бакети надають кілька рівнів безпеки, включаючи політики бакетів, списки контролю доступу та шифрування.
↪ S3 Об'єкти:
- Об'єкти — це основні елементи, що зберігаються в бакетах S3. Кожен об'єкт складається з даних, метаданих і унікального ідентифікатора.
- Ключі — це унікальний ідентифікатор об'єкта в бакеті. Він використовується для отримання об'єкта.
- S3 підтримує версіонування об'єктів, що дозволяє зберігати кілька версій одного об'єкта в одному бакеті для захисту від випадкового видалення.
Варіанти використання S3
→ Резервне копіювання і відновлення даних
→ Хостинг статичних вебсайтів
→ Архівація даних
→ Аналітика великих даних
Налаштування S3 Бакету
Покрокова інструкція:
- Створення S3 Бакету
- Перейдіть до сервісу S3.
- Натисніть на “Create bucket” і введіть унікальне ім'я для бакету відповідно до стандартів іменування S3.
- Завантаження файлу/об'єкта в S3 Бакет
- Натисніть на створений бакет і завантажте файл (наприклад, index.html).
Hello, World!
S3 Static Website Hosting done successfully
```  _index.html object_ ## **↪Хостинг статичного вебсайту** 3.
текст перекладу
**Налаштування S3 бакету для хостингу статичного вебсайту**
- У бакеті S3 натискайте на вкладку “_Properties_” _→ “Static website hosting”_, виберіть файл, який потрібно розмістити (index.html), та натисніть “_Save_”.
- Також перейдіть до вкладки “_Permissions_” _→ “Block public access”_, дозвольте весь публічний доступ та натисніть _“Save”_.
- У вкладці “_Permissions_” _→ “Bucket policy”_, додайте наступну JSON політику, щоб надати публічний доступ до файлу (index.html) та натисніть _“Save”_.
(Ви також можете створити політику за допомогою генератора політик.)
Bucket Policy
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "PublicReadGetObject",
"Effect": "Allow",
"Principal": "*",
"Action": "s3:GetObject",
"Resource": "arn:aws:s3:::bucketname/objectname"
}
]
}
```
Тепер відкрийте URL, наданий AWS, у веб-браузері, щоб перевірити та отримати доступ до статичного вебсайту.
Хостинг статичного вебсайту за відповідним URL
Вебсайт успішно розгорнуто
↪Обмеження доступу для користувача Root
- Створення IAM користувача
- Перейдіть до сервісу IAM, “Users” → “Add user” → “Username” → “Set Permissions” (прикріпіть політику “**AmazonS3FullAccess**”) → “Create User”.
- Спробуйте отримати доступ до бакету, ви зможете отримати доступ до бакету та об'єкта всередині нього.
- Але тепер створіть політику бакету, яка дозволяє доступ лише для користувача root, як показано нижче, і не змінюйте права доступу IAM користувача.
#Bucket Policy to Allow Root user only
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "AllowOwnerOnlyAccess",
"Effect": "Deny",
"Principal": "*",
"Action": "s3:*",
"Resource": "arn:aws:s3:::bucket_name",
"Condition": {
"StringNotEquals": {
"aws:PrincipalArn": "arn:aws:iam::account_ID:root"
}
}
}
]
}
- Тепер спробуйте отримати доступ до S3 бакету, використовуючи IAM користувача, ви отримаєте помилку “Insufficient permissions to list objects”.
Якщо політика бакету є обмежувальною (дозволяючи доступ лише користувачу root), IAM користувач з AmazonS3FullAccess не зможе отримати доступ до бакету, якщо політика бакету явно не дозволить це. Це підтверджує, що політика бакету має пріоритет порівняно з політикою IAM, коли мова йде про доступ до цього конкретного бакету.
↪Тестування версійності
- Увімкнення версійності
- У бакеті S3 натискайте на вкладку “Properties” → “Bucket Versioning”, увімкніть версійність та натисніть “Save”.
- Змініть і завантажте нову версію того самого файлу (index.html). S3 автоматично створить нову версію файлу. Наприклад, оновіть вміст:
Hello, World!
S3 Static Website Hosting done successfully version 2
``` - Щоб перевірити, перейдіть до бакету та натисніть на версії. Ви побачите різні версії файлу (index.html). Кожна версія об'єкта має унікальний ідентифікатор версії.

_Дві різні версії index.html_
Увімкнувши версійність на бакеті S3, ви можете захистити свої дані від випадкових видалень і переписувань. Ця функція особливо корисна для резервного копіювання, відновлення даних тощо.
## Усунення проблем
- Можливо, ви зіткнетеся з помилкою “Access Denied” під час доступу до S3 бакету, це може бути через неправильно налаштовану політику бакету або IAM користувач може не мати необхідних прав доступу.
- Під час доступу до статичного вебсайту, якщо з'являється помилка “404 Forbidden”, перевірте, чи ви зняли позначку з “block public access” та переконайтеся, що політика бакету не блокує публічний доступ.
## Висновок
У цьому блозі ми розглянули можливості та функції Amazon S3 через практичний підхід.
текст перекладу
Ми побачили, як легко хостити вебсайт, використовуючи S3, ми увімкнули версійність на нашому S3 бакеті для захисту від випадкових видалень та керували правами доступу за допомогою політик бакетів і IAM користувача.
Залишайтеся з нами для ще більшого навчання через проєкти.
Успішного навчання
Linkedin: [https://www.linkedin.com/in/prince-raghav-8a72ab1b0](https://www.linkedin.com/in/prince-raghav-8a72ab1b0)
Документація AWS S3: [https://docs.aws.amazon.com/AmazonS3/latest/userguide/storage-class-intro.html](https://docs.aws.amazon.com/AmazonS3/latest/userguide/storage-class-intro.html)
Ресурси: [https://www.youtube.com/watch?v=DiWWPo2Qoso&list=PLdpzxOOAlwvLNOxX0RfndiYSt1Le9azze&index=1](https://youtu.be/DiWWPo2Qoso?si=bofX70R75l0urR0R)
Перекладено з: [Practical Approach to Amazon S3: Real-World Use cases](https://medium.com/@princegourlariya/practical-approach-to-amazon-s3-real-world-use-cases-39e4045326ec)