Прежде, чем я начну своё повествование о процессе, хочу отметить, что выступаю не в качестве специалиста в области сервисов Amazon, а в качестве разработчика, которому пришлось в моменте столкнуться с технологией, и к сожалению, некогда было детально разбираться c довольно громоздкой панелью управления. Гайд подойдёт для тех, кто ещё не сталкивался с AWS, но хотел бы попробовать его для своих личных проектов, либо обучиться самим технологиям. Мы рассмотрим с вами создание простого пользователя IAM, необходимую конфигурацию для работы, и простой пример работы с библиотекой Boto3.
Шаг первый (создание пользователя IAM)
Amazon рекомендует не совершать подключение через root пользователя, чтобы не допустить неприятных ситуаций с безопасностью, а вместо этого, рекомендует создать пользователя IAM, и наделить его конкретными правами.
Первым делом, после регистрации на сервисе, необходимо открыть меню в верхнем правом углу, и выбрать раздел Security Credentials:
Далее, на открывшейся странице, необходимо выбрать раздел Access managment -> Users:
Отлично, мы оказались на странице, где отображён список уже созданных пользователей.
Следующий шаг — нажать на кнопку Add users:
Мы оказались на странице создания IAM пользователя. После того как имя пользователя было указано, нам предлагают выбрать тип пользователя. Я выбрал второй вариант, так как не располагал временем изучать дополнительный сервис Identity Center для настройки и управления пользователями. Следующим шагом станет создание пароля для пользователя, на этой же странице:
Следующий, и не менее важный этап — настройка доступов. Я выбрал третий вариант, так как не располагаю настроенными группами пользователей, и не хочу копировать настройки раннее созданного пользователя:
Ниже выбираем необходимую политику в зависимости от сервиса, с которым мы будем работать. Напоминаю, что в нашем случае мы рассматриваем S3. Опять же, так как мне нет необходимости прописывать политики для пользователя детально, я выбираю полный доступ.
Обратите внимание на кнопку Create policy. В этой статье я не буду рассматривать такую возможность. Тем не менее, вы можете скорректировать json файл с политиками под себя, настроив учётную запись максимально гибко, для выполнения всевозможных задач с сервисами Amazon.
Далее необходимо подтвердить создание юзера, и мы вновь оказываемся в разделе Users, где в списке доступных IAM пользователей можем наблюдать новую учётную запись. Нажмите на имя вашего пользователя, чтобы перейти в раздел управления учётной записью. Нас будет интересовать Security credentials.
Обратите внимание на раздел Access keys, который находится ниже. Это следующее, что мы должны сделать. Эти ключи понадобятся нам, чтобы взаимодействовать с сервисами Amazon.
Среди множества вариантов, я выбрал второй, так как буду использовать эти ключи в .env файле. Выбирайте нужный вариант в зависимости от поставленных перед вами задач.
Обязательно сохраните секретные ключи и позаботьтесь о том, чтобы они остались в целости и сохранности, так как без них доступ к сервисам через API невозможен.
Поздравляю! С первым этапом мы справились, ещё немного!
Шаг второй ( Создание S3 Bucket)
После того как пользователь был создан, мы с вами создадим bucket, в котором будут храниться наши файлы. Для этого перейдите в раздел S3, который вы с лёгкостью сможете отыскать в поисковой строке сайта.
Процесс не сложный, куда интуитивно понятнее создания пользователя. Главное, обратите внимание на регион в котором вы будете создавать bucket. Его необходимо будет указать при конфигурации вашей учетной записи (читай следующий раздел):
Если вы не "продвинутый" пользователь, оставляйте все настройки без изменений, чтобы не напортачить, и всё точно работало (только обязательно обратите внимание на регион). А теперь переходим к последнему этапу подготовки.
Шаг третий (Amazon CLI и SDK Boto3)
Интерфейс командной строки AWS (AWS CLI) – это единый инструмент для управления сервисами AWS. В нашем случае, он необходим для того, чтобы добавить наши Security Cretentials, и получить доступ к сервисам Amazon. Установить Amazon CLI можно по ссылке с GitHub. Я пользуюсь venv, поэтому устанавливаю таким образом:
$ python -m pip install awscli
Нас с вами, пока что, интересует только одна команда в терминале:
$ aws configure
AWS Access Key ID: MYACCESSKEY
AWS Secret Access Key: MYSECRETKEY
Default region name [us-west-2]: us-west-2
Default output format [None]: json
Как вы можете видеть из вывода. При запуске команды aws configure, сервис запрашивает те самые секретные данные, которые мы создали для IAM пользователя. Данные автоматически подтянутся в ~/.aws/credentials
или в %UserProfile%\.aws/credentials
, если вы пользователь Windows.
Также, вы можете указать эти данные в .env файле, если не используете расширения AWS Toolkit от Amazon.
AWS_ACCESS_KEY_ID="YOUR_ACCESS_KEY_ID"
AWS_SECRET_ACCESS_KEY="YOUR_SECRET_ACCESS_KEY"
AWS_DEFAULT_REGION="us-west-2"
Возможностей конфигурации куда больше, но при необходимости вы можете рассмотреть их самостоятельно. А мы тем временем установим Boto3:
pip install boto3
Вуаля! Мы с вами выполнили необходимые действия по настройке, а теперь можем смело приступать к написанию кода. Ниже, приведу пример использования библиотеки boto3:
import os
from dotenv import load_dotenv
import boto3
# С помощью библиотеки python-dotenv загружаем данные из .env файла
load_dotenv()
aws_access_id = os.environ.get("AWS_ACCESS_KEY_ID")
aws_secret_key = os.environ.get("AWS_SECRET_ACCESS_KEY")
# Далее, нам необходимо создать клиента. Подробнее об этом после примера.
client = boto3.client("s3",
aws_access_key_id=aws_access_id,
aws_secret_access_key=aws_secret_key)
# Хардкодно указанная директория, только для примера, не рекомендую так делать
path = "../new-topics/new-bot/datatopics/simple"
# Проходим по всем файлам на пути, который мы указали,
# и загружаем файлы с расширением ".txt" в наш с вами bucket
for file in os.listdir(path):
if ".txt" in file:
file_path = os.path.join(path, file)
upload_file_bucket = "bucket-example"
# Если в бакете есть папка "text", файлы будут загружены туда,
# в противном случае можно оставить только str(file)
upload_file_key = "text/" + str(file)
# Непосредственно загружаем
client.upload_file(file_path,
upload_file_bucket,
upload_file_key)
Файлы успешно загружены!
Немного слов о создании клиента. Amazon предлагает возможность использовать API на низком уровне, используя client, и на более высоком resource. Подробнее об этом можно прочитать в специализированной документации для Boto3.
Подведем итог
Мы совершили с вами простую настройку пользователя IAM для работы с ресурсами AWS, провели необходимые установки и конфигурацию, а также разобрали простой пример использования boto3.
Удобно, что библиотека позволяет работать практически со всеми ресурсами AWS, не переключаясь между инструментами, что повышает скорость разработки. А объект Session (читай документацию), позволяет настроить конфигурацию сразу для нескольких сервисов, если присутствует необходимость подключения разных DB к вашему сервису.
Спасибо за внимание!
Gadd
Думаю, начинающим будет крайне интересна вот эта ссылка: https://boto3.amazonaws.com/v1/documentation/api/latest/guide/credentials.html
А в ней уже есть ссылки на нужные AWS доки
heretic_ded Автор
Согласен с дополнением????????