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

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

1. Вступление

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

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

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

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

Чтобы получить дополнительную помощь поinstance profile configuration, ознакомьтесь с документацией AWS.

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

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

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

2.2. верификация

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

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

Если все настроено правильно, то ответ 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. Это будет искать учетные данные в порядке приоритета,automatically ending with instance profile credentials if it can’t find any others in the system.

Если нам нужно указать, что 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,this code only works when running on an EC2 instance.

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

5. Заключение

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

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