«В предыдущей статье мы сосредоточились на S3; теперь мы сосредоточимся на эластичном вычислительном облаке, широко известном как EC2.
1. Доступ к метаданным EC2
Класс AWS EC2MetadataUtils предоставляет статические методы для доступа к метаданным экземпляра, таким как идентификатор AMI и тип экземпляра. С помощью Spring Cloud AWS мы можем вводить эти метаданные напрямую, используя аннотацию @Value.
Это можно включить, добавив аннотацию @EnableContextInstanceData к любому из классов конфигурации:
@Configuration
@EnableContextInstanceData
public class EC2EnableMetadata {
//
}
В среде Spring Boot метаданные экземпляра включены по умолчанию, что означает, что эта конфигурация не требуется.
Затем мы можем ввести значения:
@Value("${ami-id}")
private String amiId;
@Value("${hostname}")
private String hostname;
@Value("${instance-type}")
private String instanceType;
@Value("${services/domain}")
private String serviceDomain;
1.1. Пользовательские теги
Кроме того, Spring также поддерживает внедрение пользовательских тегов. Мы можем включить это, определив атрибут user-tags-map в context-instance-data, используя следующую конфигурацию XML:
<beans...>
<aws-context:context-instance-data user-tags-map="instanceData"/>
</beans>
Теперь давайте добавим пользовательские теги с помощью синтаксиса выражений Spring: ~~ ~
@Value("#{instanceData.myTagKey}")
private String myTagValue;
2. Клиент EC2
Кроме того, если для экземпляра настроены пользовательские теги, Spring создаст клиент AmazonEC2, который мы можем внедрить в наш код с помощью @Autowired:
@Autowired
private AmazonEC2 amazonEc2;
Обратите внимание, что эти функции работают, только если приложение работает на экземпляре EC2.
3. Заключение
Это было краткое и точное введение в доступ к данным EC2d с помощью Spring Cloud AWS.
В следующей статье серии мы рассмотрим поддержку RDS.
Как обычно, примеры доступны на GitHub.