Управляемые услуги — основная причина, по которой мы предпочитаем облако другим способам хостинга. Никто не выбирает AWS только для того, чтобы загрузить инстанс EC2 и запустить в нем сервер apache. Мы хотим воспользоваться преимуществами высокодоступного облачного хранилища, такого как S3, или полностью управляемой реляционной базы данных через RDS. И каждому продукту нужно несколько нестандартных логик, которые требуют целой комнаты для написания миньонов. Эти созданные вручную приложения, называемые микросервисами, должны взаимодействовать со всеми другими облачными компонентами, которые мы выбрали в нашей архитектуре. Вместе они будут творить чудеса, которые наши старые ржавые монолиты не смогли сделать.

Я уверен, что вы, возможно, провели несколько бессонных ночей, разрываясь между AWS и GCP. Вы здесь «Нео», потому что сделали мудрый выбор. Поэтому я пишу эту историю, чтобы помочь вам принять следующее важное решение. Как интегрировать микросервис Spring Boot с AWS.

Зачем нам нужно интегрировать наши микросервисы с AWS?

Если вы не используете какие-либо управляемые сервисы AWS, значит, вы неправильно работаете с облаком. Так что в конечном итоге вы будете использовать S3 или Simple Notification Service или Simple Queue Service, чтобы раскрыть весь потенциал облака.

Во всех этих случаях вы должны аутентифицировать свое приложение и управлять разрешениями, чтобы разрешать или запрещать определенные управляемые сервисы AWS.

Почему использование роли экземпляра EC2 — плохая идея?

Кто-то может возразить, что запуск нашего микросервиса внутри EC2 и использование ролей EC2 — это правильный путь. Spring boot может взять на себя те же роли, что и базовый экземпляр EC2.

Но у микросервиса на основе ролей EC2 есть следующие недостатки:

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

Пользователь IAM для каждого микросервиса

Итак, как же нам решить две вышеупомянутые опасные проблемы? Мы создаем пользователя IAM и включаем программный доступ. Для каждой микрослужбы создайте пользователя IAM с именем службы и сузьте разрешения. Включите программный доступ, чтобы получить ключ доступа и секретный ключ для настройки загрузки Spring.

Если служба должна иметь доступ только к S3, мы можем включить только это. Другому сервису может понадобиться Simple Queue Service для обмена сообщениями и Simple Notification Service для электронной почты, мы можем ограничить доступ только к этим сервисам.

И лучше всего автоматизировать создание стека микросервисов с помощью облачного формирования, даже если сервису нужен только IAM. Ключ доступа можно создать вручную из консоли, чтобы упростить работу вместо использования шифрования или секретов.

Интеграция Spring Boot с AWS

После создания секретного ключа все, что нам нужно сделать в нашем микросервисе загрузки Spring, — это добавить зависимость maven org.springframework.cloud:spring-cloud-aws-context. Затем добавьте следующие свойства в переменные среды приложения.

cloud.aws.credentials.accessKey=ABCD0123456789
cloud.aws.credentials.secretKey=127812HAHJS2727272
cloud.aws.region.static=ap-south-1

Создайте AwsConfig, как показано ниже, и все готово.

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

Настройка нескольких регионов

При запуске микросервиса в нескольких регионах мы можем просто установить свойство cloud.aws.region.static.

Включение поиска региона на основе EC2 означает, что нам нужно объявить некоторые bean-компоненты, чтобы приложение работало в локальной среде. Что, по моему скромному мнению, излишне.

Пример кода можно найти в приведенном ниже репозитории github.



Попробуйте эти статьи, которые могут помочь вам в вашем путешествии по микросервисам.