Рубрики
Без рубрики

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

Узнайте, как настроить Spring Cloud AWS для учетных данных профиля экземпляра.

Автор оригинала: Josh Cummings.

1. введение

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

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

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

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

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

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

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

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

2.2. Проверка

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

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

Если все настроено правильно, то ответ JSON будет содержать AccessKeyId , SecretAccessKey , Токен и Срок действия свойства.

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

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

cloud.aws.credentials.instanceProfile=true

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

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

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

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

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

Это заменит значение по умолчанию Амазонки 3 экземпляр, предоставленный 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 .