Начало работы с Amazon S3

Инструкция по AWS S3 для чайников

Denis Grushkin
Mad Devs — блог об IT
7 min readApr 7, 2021

--

Начало работы с Amazon S3.

Amazon S3 – это облачная платформа для хранения данных. В основном её используют для хранения картинок и видео-файлов.

Этот сервис бесплатен в течении 12 месяцев с момента первой регистрации. По истечении срока либо при превышении лимита вас настойчиво попросят начать платить за использование сервиса. Ознакомиться с тарифами можно по этой ссылке.

Итак, цель этой статьи провести быстрый экскурс, который поможет начать пользоваться S3 уже после прочтения.

Что будем делать:

  1. Поговорим о создании и настройке хранилища
  2. Настроим публичную ссылку для доступа к хранилищу
  3. Научимся работать с aws cli

Создание и настройка хранилища

Первым делом перейдём по ссылке и нажмём на большую оранжевую кнопку.

Amazon S3.

Эта кнопка перенаправит нас на страницу авторизации. Если у вас нет аккаунта, то нужно зарегистрироваться.

Amazon S3 Sign In Page.

После того как аккаунт готов, выбираем пункт Root user и нажимаем кнопку Next. Вводим пароль и авторизуемся. Нас должно перекинуть на страницу управления хранилищем.

Amazon S3 Storage Management Page.

Не будем тянуть резину и сразу создадим новое хранилище. В этом нам поможет кнопка Create bucket.
Откроется страница создания бакета, где довольно много настроек. Расскажу о самых интересных.

AWS Region

Этот параметр даст возможность выбрать расположение сервера, который будет ближе всего для вас или для ваших клиентов. Это позволит ускорить передачу данных и уменьшить время ожидания, что очень важно.

Block Public Access settings for this bucket

Настройка для блокировки публичного доступа к вашему хранилищу. AWS рекомендует блокировать все доступы, чтобы сохранять безопасность для текущих и будущих хранилищ. Подробно можно почитать по этой ссылке.

Block Public Access Settings.

Но мы все же откажемся от этих настроек и будет использовать политику доступа, с помощью которой можно задавать более гибкие параметры.

Bucket Versioning

Очень полезная функция, с помощью которой можно вернуть удаленные данные или откатить какие-либо изменения до нужного момента.

S3 будет хранить несколько версий файла. Например, при удалении на файл будет повешен ярлык, визуально он станет недоступен, но физически будет присутствовать. Таким образом его можно будет восстановить.

Amazon S3 Bucket Versioning Page.

Tags

Теги нужны для маркировки хранилищ – это позволяет группировать их, контролировать доступ к объектам, ограничивать доступы для определенных групп лиц или наоборот и т.д.

Тег представляет собой ключ-значение: например, security=true. В этом случае для всех объектов, которые имеют такой же тег, будут применены определенные настройки. Но есть ограничение: на каждый объект можно добавлять до десяти тегов.

Пока что этой информации достаточно. Пролистаем страницу в самый низ и нажмем на кнопку Create bucket. Нас перенаправит на страницу со списком бакетов.

Amazon S3 Page with a List of Buckets.

Но вы можете заметить, что доступы к новому бакету пока что не публичные. Их нужно настроить. Для этого перейдем в бакет и откроем табу Permissions.

Amazon S3 Permissions Tab Page.

В первую очередь нам нужно отключить дефолтную блокировку, о которой я писал выше. Она нам не понадобится, так как все доступы будем настраивать через Bucket policy.

Block Public Access Settings.

Жмём на кнопку Edit, снимаем все галочки, сохраняем изменения и переходим к пункту Bucket policy. Редактируем его.

Amazon S3 Bucket Policy Page.

В форму ввода параметров добавляем вот такие настройки. Они дадут нам доступы как на получения данных из бакета, так и на создание и обновление. Не забудьте поменять имя бакета для значения в ключе Resource.

{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "AddPerm",
"Action": "s3:*",
"Effect": "Allow",
"Principal": "*"
"Resource": "arn:aws:s3:::denisoedbucket/*"
}
]
}

Также на этой странице присутствует кнопка генерации политики, можно воспользоваться ей, если вы хотите указать более специфичные параметры.

Amazon S3 Bucket Policy Page.

После сохранения настроек, если вернуться к началу страницы, мы увидим, что бакет стал публичным. Теперь мы можем создавать, обновлять и получать из него данные.

Amazon S3 Permission Page.

Предлагаю сразу залить какой-нибудь файл. S3 предлагает заливать всё в корень или же создавать папки, чтобы группировать объекты. Мы пока зальем в корень, нажав на кнопку Upload.

Amazon S3 Objects Page.

Я залил иконку Vue.js, она нам понадобится при проверке публичной ссылки.

Настройка публичной ссылки для доступа к хранилищу

После того как хранилище настроено, нужно каким-то образом получать оттуда данные. В этом нам поможет Amazon CloudFront – сервис безопасной доставки контента.

Откроем ссылку https://aws.amazon.com/ru/cloudfront

Нас снова будет приветствовать красивая страница с огромной оранжевой кнопкой. Нажмём на неё.

Amazon CloudFront Page.

Откроется страница со списком доступных ссылок. Нужно создать новую. В этом нам поможет синяя кнопка Create Distribution.

CloudFront Distributions Page.

Нажмём на поле Original Domain Name, и по идее должен выпасть список с доступными бакетами. Выбираем ранее созданный.

Amazon S3 Create Distribution Page.

Этого достаточно, остальные настройки можно не указывать пока что.

Когда мы сохраним изменения, в списке доступных ссылок появится наша новая ссылка. Перейдем внутрь.

Amazon S3 CloudFront Distribution Page.

И единственное, что нам там понадобится – это публичная ссылка. Через неё мы и будем получать картинки или любые другие объекты из бакета.

Amazon S3 Public Link to Get Objects.

Идём проверять. В поисковую строку браузера вставляем ссылку, плюс добавляем туда путь к нашему ранее добавленному файлу.

Example of Amazon S3 Public Link to Get Objects.

Ну вот и всё. У вас теперь есть ссылка, которую можно вставлять на сайт, в соцсети или в любые другие места.

Несомненно, можно было использовать прямую ссылку из бакета на файл, но это небезопасно.

Amazon CloudFront имеет кучу настроек, которые позволяют обеспечить безопасную передачу данных.

Разбираемся с AWS CLI

AWS CLI – это консольная утилита, которая позволяет работать с Amazon s3 через терминал.

Установка

Ссылка на официальную документацию https://docs.aws.amazon.com/cli/latest/userguide/install-cliv2.html

В зависимости от вашей операционной системы нужно выбрать способ установки. У меня Linux, поэтому покажу на примере него.

Команда для установки пакета

sudo apt install awscli

После завершения установки aws будет готов к работе. Чтобы это проверить, введите в консоли

aws help

Там должно появиться целое полотно с описанием, со списком доступных опций и т.д.

AWS()NAME
aws -
DESCRIPTION
The AWS Command Line Interface is a unified tool to manage your AWS
services.
SYNOPSIS
aws [options] <command> <subcommand> [parameters]
Use aws command help for information on a specific command. Use aws
help topics to view a list of available help topics. The synopsis for
each command shows its parameters and their usage. Optional parameters
are shown in square brackets.
OPTIONS
--debug (boolean)
Turn on debug logging.--endpoint-url (string)Override command's default URL with the given URL.--no-verify-ssl (boolean)...

Настройка

Настройка, как и установка, очень проста, всё делается одной командой.

aws configure

aws попросит добавить ключи, указать регион и формат данных, который будем получать в ответ на команды.

AWS Access Key ID: Key
AWS Secret Access Key: Key
Default region name: Region
Default output format: json

Название региона смотрим тут

Amazon S3 Buckets Page.

Ключи можно найти на специальной странице.

Amazon S3 Buckets Page.

На этой странице располагается вся секретная информация, связанная с вашим аккаунтом.

Сейчас нам нужны два ключа, их можно найти во вкладке Access keys (assess key ID and secret assecc key).

Amazon S3 Security Credentias Page.

В появившемся окне копируем оба ключа и указываем их в настройках aws. По идее всё, этого достаточно. Переходим к командам.

Команды

  • Узнать какие файлы и папки есть в s3
aws s3 ls s3://backet-name/
  • Загрузить папку
aws s3 cp --acl public-read folder s3://backet-name/folder/ --recursive
  • Удалить папку
aws s3 rm --recursive s3://backet-name/folder/
  • Переименовать папку путем перемещения файлов в новую
aws s3 --recursive mv s3://backet-name/folder/ s3://backet-name/folder_2/
  • Загрузить файл в папку
aws s3 cp --acl public-read ./folder/name.jpg s3://backet-name/folder/
  • Удалить файл
aws s3 rm s3://backet-name/folder/name.jpg
  • Обновить список файлов
aws s3 sync --acl public-read ./folder s3://maddevsio/folder/

Этих команд достаточно для взаимодействия с S3. Дополнительно можно почитать тут.

Заключение

Цель этой статьи – рассказать о самых важных моментах, которые помогут быстро разобраться и сразу же начать работать с Amazon S3.

Всю остальную информацию можно найти в официальной документации.

Спасибо!

--

--