AWS

Записывайте файлы из EC2 в S3 в AWS программно

Пошаговое руководство с использованием EC2, S3, IAM и Python

Заявление об ограничении ответственности: это руководство актуально по состоянию на 5 июля 2020 г., но AWS часто меняет свою консоль, поэтому ваша консоль может отличаться от моих снимков экрана.

Проработав с AWS пару лет, я обнаружил, что есть несколько способов добиться чего-либо.

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

Сегодня я объясню, как записывать файлы из экземпляра EC2 в корзину S3.

EC2 может быть временным, рекомендуется хранить информацию в другом месте, которая не исчезнет, ​​если EC2 будет уничтожен.

Содержание:

  1. Создайте корзину S3
  2. Создайте экземпляр EC2
  3. Создать роль IAM
  4. Применить роль к EC2
  5. Напишите код Python на EC2
  6. Осмотрите файл

Создайте корзину S3

S3 - это сервис AWS для хранения объектов (не баз данных).

Перейдите к сервису S3 в консоли AWS и нажмите «Создать корзину».

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

Я назвал свои журналы «my-ec2-server-logs».

Нажмите "Далее".

Игнорируйте конфигурацию и нажмите «Далее».

Игнорируйте разрешения и снова нажмите «Далее».

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

Щелкните «Создать корзину».

Буйя! Теперь вы должны увидеть созданную вами корзину S3 на панели управления S3.

Создайте экземпляр EC2

EC2 позволяет выделять виртуальные серверы на AWS.

На панели управления EC2 нажмите «Запустить экземпляр».

Выберите образ «Linux 2» для нашего сервера.

Выберите тип бесплатного экземпляра «t2.micro» и нажмите «Просмотреть и запустить».

И нажмите «Запустить».

Появится всплывающее окно с предложением выбрать или создать пару ключей. Это необходимо для ssh в наш EC2.

  1. Выберите «Создать новую пару ключей».
  2. Дайте ему имя. Я назвал свою "my-ec2-keypair"
  3. Загрузите пару ключей
  4. Нажмите «Запустить экземпляры».

Теперь, когда вы вернетесь к панели управления EC2, вы увидите созданный вами EC2.

Примечание: группа безопасности по умолчанию разрешает доступ по ssh с любого IP-адреса. Вы должны изменить это, чтобы разрешить доступ только с IP-адреса вашего компьютера. Это можно сделать, щелкнув группу безопасности, прикрепленную к вашему EC2, на панели управления EC2.

Создать роль в IAM

IAM (Identity Access Management) - централизованный сервис AWS для авторизации доступа к сервисам и обратно.

Роли позволяют назначать набор разрешений сервисам AWS. Иногда службам требуется доступ друг к другу для выполнения своей работы. В нашем случае EC2 будет записывать файлы в S3. В других случаях вы можете захотеть, чтобы Lambdas запускала / останавливала EC2 или EC2 для создания S3 Bucket.

Перейдите к сервису IAM в консоли AWS, нажмите «Роли» слева, а затем «Создать роль».

Щелкните «Сервис AWS», затем выберите «EC2», потому что мы назначаем разрешения нашему серверу EC2. Затем нажмите «Далее».

Найдите политики, относящиеся к «S3», затем выберите «AmazonS3FullAccess».

Это позволяет нашему EC2 делать с сервисом S3 все, что он хочет.

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

Пропустите теги и нажмите «Далее».

Теперь дайте роли имя, которое вы сможете определить позже.

Я назвал свой «EC2-S3-Access».

Затем нажмите «Создать роль».

Вуаля. Теперь у нас есть роль.

Мы назначим это нашему EC2 через мгновение.

Применить роль к инстансу EC2

Ssh в EC2

На панели управления EC2 щелкните свой экземпляр и нажмите «Подключиться». Теперь следуйте приведенным инструкциям.

  1. Перейдите в каталог, в который вы скачали пару ключей.
  2. Запустите chmod 400 на ключевой паре. Итак, в моем случае chmod 400 my-ec2-keypair.pem
  3. Вставьте пример команды ssh… в консоль и запустите ее.

Теперь вы должны быть внутри своего экземпляра EC2.

Перед добавлением роли

Изнутри нашего EC2, давайте попробуем получить доступ к S3, не добавляя нашу роль.

Выполните приведенную ниже команду.

$ aws s3 ls

Это выдаст вам ошибку.

Unable to locate credentials. You can configure credentials by running "aws configure".

Вместо настройки aws configure мы добавим нашу роль.

Добавить роль

На панели инструментов EC2 выберите созданный EC2, нажмите «Действия» и перейдите к «Присоединить / заменить роль IAM».

Затем найдите только что созданную роль, выберите ее и нажмите «Применить».

После добавления роли

Вернувшись в терминал EC2, в который мы вошли по ssh, повторно запустите aws s3 ls, и вы увидите другой ответ.

2020-07-05 18:35:35 my-ec2-server-logs

Ура! Это наша корзина S3.

Напишите код Python на EC2

Установите Python3 на EC2

EC2 поставляются с установленным Python2, но у меня мало опыта работы с Python2, поэтому мы собираемся перейти на Python3.

Запустите эту команду, чтобы узнать, какие версии доступны.

$ sudo yum list | grep python3

Если python3 доступен, запустите эту команду для установки.

$ sudo yum install python3

Вам нужно будет ввести y в вопросе, но если это успешно, у вас теперь установлен python3.

Установить пакеты с помощью pip

Мы будем использовать пакет под названием boto3 для программного доступа к S3.

Установите его с помощью пипса.

$ sudo pip3 install boto3

Создайте пустой файл Python

$ touch my_script.py

Добавить код регистрации в файл

Откройте файл, чтобы отредактировать его с помощью nano my_script.py (nano) или vi my_script.py (vim).

Затем обновите, чтобы он выглядел, как показано ниже.

import boto3
from datetime import datetime
cli = boto3.client('s3')
cli.put_object(
  Body='The time now is '+str(datetime.now()),
  Bucket='my-ec2-server-logs',
  Key='ec2.txt')

Все, что мы здесь делаем, это используем пакет boto3 для записи текстового файла с именем «ec2.txt» в S3 с текущим временем в строке.

Теперь из терминала вашего EC2 запустите только что написанный скрипт.

$ python3 my_script.py

Вот и все!

Осмотрите файл

Теперь перейдите к S3 и выберите нашу корзину.

Щелкните файл с именем, которое мы дали ему в нашем скрипте.

Загрузите файл.

Откройте его в своем любимом текстовом редакторе.

Niiice! Это именно то, что мы сказали python записать в файл!

Вывод

Программная запись файлов в S3 из EC2 на самом деле довольно проста. Но из-за огромного разнообразия возможностей AWS это кажется сложным.

Надеюсь, вы нашли это полезным.

Если у вас что-то не работает, оставьте комментарий, и я постараюсь помочь!

Подпишитесь на Темы FAUN и получайте еженедельное авторское письмо с обязательными техническими историями, новостями и учебными пособиями 🗞️

Подписывайтесь на нас в Twitter 🐦 и Facebook 👥 и Instagram 📷 и присоединяйтесь к нашим Facebook и Linkedin Группы 💬

Если этот пост был полезен, пожалуйста, нажмите несколько раз кнопку хлопка 👏 ниже, чтобы выразить поддержку автору! ⬇