Перейти к основному содержимому

Учетные данные профиля экземпляра с использованием Spring Cloud

· 3 мин. чтения

1. Введение

В этой быстрой статье мы собираемся создать приложение Spring Cloud, которое использует учетные данные профиля экземпляра для подключения к корзине S3.

2. Подготовка нашей облачной среды

Профили экземпляров — это функция AWS, которая позволяет экземплярам EC2 подключаться к другим ресурсам AWS с временными учетными данными. Эти учетные данные недолговечны и автоматически меняются AWS.

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

Чтобы получить дополнительную помощь по настройке профиля экземпляра , ознакомьтесь с документацией AWS.

2.1. Развертывание

Прежде всего, нам нужна среда AWS с соответствующей настройкой.

Для приведенного ниже примера кода нам нужно настроить экземпляр EC2, корзину S3 и соответствующие роли IAM. Для этого мы можем использовать шаблон CloudFormation в примере кода или просто настроить эти ресурсы самостоятельно.

2.2. Проверка

Затем мы должны убедиться, что наш экземпляр EC2 может получить учетные данные профиля экземпляра. Замените <InstanceProfileRoleName> фактическим именем роли профиля экземпляра:

curl http://169.254.169.254/latest/meta-data/iam/security-credentials/<InstanceProfileRoleName>

Если все настроено правильно, ответ JSON будет содержать свойства AccessKeyId , SecretAccessKey , Token и Expiration .

3. Настройка Spring Cloud

Теперь, что касается нашего примера приложения. Нам нужно настроить Spring Boot для использования профилей экземпляров, что мы можем сделать в нашем файле конфигурации Spring Boot:

cloud.aws.credentials.instanceProfile=true

Вот и все! Если это приложение Spring Boot развернуто в экземпляре EC2, каждый клиент будет автоматически пытаться использовать учетные данные профиля экземпляра для подключения к ресурсам AWS.

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

Если нам нужно указать, что Spring Cloud использует только профили экземпляров, мы можем создать собственный экземпляр AmazonS3 .

Мы можем настроить его с помощью InstanceProfileCredentialsProvider и опубликовать как bean-компонент:

@Bean
public AmazonS3 amazonS3() {
InstanceProfileCredentialsProvider provider
= new InstanceProfileCredentialsProvider(true);
return AmazonS3ClientBuilder.standard()
.withCredentials(provider)
.build();
}

Это заменит экземпляр AmazonS3 по умолчанию , предоставляемый Spring Cloud.

4. Подключение к нашему ведру S3

Теперь мы можем подключиться к нашей корзине S3, используя Spring Cloud, как обычно, но без необходимости настраивать постоянные учетные данные:

@Component
public class SpringCloudS3Service {

// other declarations

@Autowired
AmazonS3 amazonS3;

public void createBucket(String bucketName) {
// log statement
amazonS3.createBucket(bucketName);
}
}

Помните, что, поскольку профили экземпляров выдаются только экземплярам EC2, этот код работает только при работе на экземпляре EC2 .

Конечно, мы можем повторить этот процесс для любого сервиса AWS, к которому подключается наш экземпляр EC2, включая EC2, SQS и SNS.

5. Вывод

В этом руководстве мы увидели, как использовать учетные данные профиля экземпляра в Spring Cloud. Кроме того, мы создали простое приложение, которое подключается к корзине S3.

Как всегда, полный исходный код можно найти на GitHub .