Интеграция S3 с другими AWS-сервисами (Lambda, EC2 и CloudFront)
В этой статье мы рассмотрим, как Amazon S3 взаимодействует с ключевыми сервисами AWS: Lambda, EC2 и CloudFront.
Что такое AWS-сервисы
AWS (Amazon Web Services) — это облачная платформа от компании Amazon. Она предоставляет широкий спектр IT-услуг, которые доступны через интернет.
AWS-сервисы предназначены для решения различных задач: от хранения данных и вычислений до разработки приложений и искусственного интеллекта. Также они позволяют компаниям и разработчикам быстро разрабатывать, тестировать и развертывать приложения.
Основное преимущество AWS заключается в гибкости и масштабируемости. Вы можете начинать с небольших ресурсов и постепенно увеличивать их объем по мере роста ваших потребностей, оплачивая только то, что используете.
AWS предлагает более 200 различных сервисов, которые условно можно разделить на несколько категорий:
Вычисления
Такие сервисы, как Amazon EC2 и AWS Lambda, предоставляют возможности для запуска виртуальных серверов и бессерверных приложений. Они подходят для обработки больших объемов данных, создания веб-приложений или тестирования программного обеспечения.
Хранение данных
AWS предоставляет масштабируемые решения для хранения: Amazon S3 для объектов данных и Amazon EBS для дисковых накопителей. Они обеспечивают надежность и высокую доступность данных.
Базы данных
Такие сервисы, как Amazon RDS и Amazon DynamoDB, позволяют работать с реляционными и NoSQL базами данных. Они помогают управлять большими объемами данных с минимальными затратами на администрирование.
Сетевые технологии
Некоторые сервисы AWS, например, Amazon VPC (Virtual Private Cloud), обеспечивают безопасную и изолированную сетевую инфраструктуру.
Искусственный интеллект и машинное обучение
AWS предлагает Amazon SageMaker для создания моделей машинного обучения и Amazon Rekognition для анализа изображений. Эти технологии позволяют внедрять инновации в бизнес-процессы.
Разработка и управление приложениями
Сервисы AWS CodeBuild, AWS CodeDeploy и AWS CodePipeline упрощают процессы DevOps, обеспечивая автоматизацию разработки, тестирования и развертывания.
Инструменты аналитики
Amazon Redshift и AWS Glue помогают анализировать большие массивы данных, а потому подходят для BI (business intelligence) и аналитических платформ.
Как настроить интеграцию S3 с Lambda
Lambda — это AWS-сервис бессерверных вычислений, который позволяет запускать код для большинства типов приложений и служб. Он предоставляет возможность запуска кода в ответ на события. Вы пишете функцию, которая обрабатывает событие, загружаете ее в AWS, и Lambda автоматически масштабируется в зависимости от нагрузки.
AWS Lambda легко интегрируется с Amazon S3. Это отличное решение, если вам нужно обрабатывать данные сразу после загрузки в S3.
Шаг 1. Создание функции AWS Lambda
- Перейдите в AWS Management Console и откройте сервис Lambda.
- Щелкните Create function.

- Выберите опцию для создания функции с нуля – Author from scratch.

- В разделе Basic information заполните следующие поля:
- Function name. Введите имя функции

- Runtime. Выберите Python 3.9 или другой необходимый язык выполнения

- Architecture. Выберите x86_64

- В разделе Change default execution role выберите Use an existing role.

Если роль уже есть, выберите Create a new role with basic Lambda permissions.
- Укажите название роли.
- Нажмите Create function, чтобы создать функцию.

- После создания функции добавьте в неё ваш код и сохраните изменения.
- Нажмите Deploy, чтобы развернуть функцию.
Шаг 2. Интеграция Lambda с Amazon S3
- Убедитесь, что у функции Lambda есть необходимые права для работы с S3.
- В сервисе IAM:
- Найдите созданную роль для вашей функции Lambda.
- Добавьте к роли политику AmazonS3FullAccess или создайте собственную политику с минимальными необходимыми правами.
- Перейдите в консоль управления AWS и откройте сервис S3.
- Нажмите Create bucket.
- Укажите уникальное имя для вашего бакета.
- Выберите регион для хранения.
- Настройте параметры бакета в зависимости от ваших требований и нажмите Create bucket.
- Откройте созданный бакет S3 и перейдите в раздел Properties.

- Найдите секцию Event notifications и нажмите Create event notification.

- Заполните параметры события:
- Укажите имя события в поле Event name.

- В разделе Event types выберите тип события, которое будет триггерить вашу Lambda функцию. Например, ObjectCreated или ObjectRemoved.

- В разделе Destination выберите Lambda Function и укажите созданную функцию Lambda.

- Сохраните настройки, нажав Save Changes.

Как настроить интеграцию S3 с EC2
Amazon EC2 (Elastic Compute Cloud) — это облачный сервис AWS, который предоставляет масштабируемые вычислительные мощности в облаке. Он позволяет запускать виртуальные машины (инстансы), которые можно использовать для хостинга веб-приложений, обработки данных, хранения файлов и других задач.
Шаг 1. Создайте пользовательскую политику и роль IAM для Lambda
- Войдите в AWS Management Console и откройте IAM.
- Создайте новую политику IAM с помощью редактора JSON. Вставьте следующий код:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 |
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "logs:CreateLogGroup", "logs:CreateLogStream", "logs:PutLogEvents" ], "Resource": "arn:aws:logs:*:*:*" }, { "Effect": "Allow", "Action": [ "ec2:Start*", "ec2:Stop*" ], "Resource": "*" } ] } |
- Назовите политику, например, EC2LambdaPolicy, и сохраните ее.
- Создайте роль IAM и прикрепите созданную политику к роли.
Шаг 2. Создайте функции Lambda для управления экземплярами EC2
- В AWS Management Console перейдите в Lambda и выберите Create function.

- Выберите Author from scratch:

- Введите данные:
- Function name. Впишите имя функции

- Runtime. Выберите Python 3.9.

- В разделе Change default execution role выберите Use an existing role. Выберите ранее созданную роль IAM.

- Нажмите Create function.
- Перейдите на вкладку Code.

- Замените содержимое редактора следующим кодом:
Чтобы остановить инстансы:

Чтобы их запустить:

Важно! Замените us-west-1 на регион, где находятся ваши экземпляры EC2, а InstanceIds — на идентификаторы ваших экземпляров.
- Нажмите Deploy, чтобы сохранить изменения.
- Проверьте статус инстансов в консоли Amazon EC2.
Как настроить интеграцию S3 с CloudFront
CloudFront — это глобальная сеть доставки контента (Content Delivery Network, CDN), которая предоставляется AWS. Она позволяет ускорить доставку статических и динамических веб-ресурсов (например, HTML, CSS, JS, изображения) путем кеширования контента на серверах, расположенных по всему миру.
Благодаря CloudFront пользователи получают доступ к контенту с ближайшего к ним сервера, что сокращает время отклика и повышает производительность приложений. Иными словами, он работает как промежуточное звено между вашими серверами и пользователями, предоставляя кеширование и географически оптимизированный доступ к данным.
Шаг 1. Подготовьте S3 Bucket
- Войдите в консоль управления AWS и перейдите в раздел S3.
- Создайте новый bucket, выбрав уникальное имя. Если вы планируете предоставлять доступ к файлам широкой аудитории, убедитесь, что bucket настроен для публичного доступа.
- Добавьте файлы, которые будут распространяться через CloudFront, в ваш S3 bucket. Это могут быть изображения, видео или любые другие статические файлы.
Шаг 2. Создайте дистрибуцию CloudFront
- Перейдите в сервис CloudFront в консоли AWS.
- Нажмите Create Distribution.

- Задайте настройки источника (Origin):
- Origin domain. Выберите ваш S3 бакет из выпадающего списка.
- Origin path. Если нужно ограничить доступ только к определенной папке в бакет, укажите путь (например, /images).

- В Default cache behavior найдите подраздел Viewer и пункт Viewer Protocol Policy. Определите протокол: можно оставить HTTP и HTTPS, или настроить перенаправление с HTTP на HTTPS для повышения безопасности.

Шаг 3. Настройте параметры дистрибуции
- Заполните раздел Function association. Настройте параметры, указав правила для обработки запросов пользователей (Viewer request, Viewer response и т.д.).

- Заполните раздел Settings.
- Укажите ценовую категорию (Price Class).
- Добавьте альтернативные доменные имена (CNAME), если планируете использовать свой домен.
- Настройте SSL-сертификаты для работы с пользовательскими доменами.

Шаг 4. Разверните дистрибуцию
После завершения конфигурации просмотрите настройки и нажмите Create Distribution.

Вы получите доменное имя CloudFront для вашей дистрибуции, через которое можно будет получить доступ к вашему контенту.
Заключение
Интеграция c S3 открывает широкие возможности для создания гибких и масштабируемых облачных решений:
- Lambda позволяет автоматизировать обработку данных и событий, снижая необходимость в серверной инфраструктуре.
- EC2 предоставляет вычислительные мощности для выполнения сложных задач, которые требуют интенсивной обработки данных.
- CloudFront обеспечивает быструю и надежную доставку контента вашим пользователям, улучшая их опыт взаимодействия с приложением.
Объединяя эти сервисы, вы можете оптимизировать свои рабочие процессы, повысить производительность системы и сократить затраты. Кроме того, с этими задачами поможет облачные решения и IT-инфраструктура от Рег.ру. В них входит безопасное и масштабируемое объектное хранилище S3, которое подходит для хранения и обработки данных.