Spring Cloud AWS - EC2
Emprevious article, estamos nos concentrando em S3; agora vamos nos concentrar no Elastic Compute Cloud - comumente conhecido como EC2.
1. Acesso a metadados EC2
A classe AWSEC2MetadataUtils fornece métodos estáticos para acessar metadados de instância, como AMI Id e tipo de instância. With Spring Cloud AWS we can inject this metadata directly using the @Value annotation.
Isso pode ser habilitado adicionando a anotação@EnableContextInstanceData sobre qualquer uma das classes de configuração:
@Configuration
@EnableContextInstanceData
public class EC2EnableMetadata {
//
}
In a Spring Boot environment, instance metadata is enabled by default which means this configuration is not required.
Em seguida, podemos injetar os valores:
@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. Tags personalizadas
Além disso, o Spring também suporta injeção detags definido pelo usuário. Podemos habilitar isso definindo um atributouser-tags-map emcontext-instance-data usando a seguinte configuração XML:
Agora, vamos injetar as tags definidas pelo usuário com a ajuda da sintaxe da expressão Spring:
@Value("#{instanceData.myTagKey}")
private String myTagValue;
2. Cliente EC2
Além disso, se houver tags de usuário configuradas para a instância, o Spring criará um clienteAmazonEC2 que podemos injetar em nosso código usando@Autowired:
@Autowired
private AmazonEC2 amazonEc2;
Observe que esses recursos funcionam apenas se o aplicativo estiver sendo executado em uma instância do EC2.
3. Conclusão
Esta foi uma introdução rápida e direta ao acesso aos dados do EC2d com o Spring Cloud AWS.
Nonext article of the series, exploraremos o suporte RDS.
Como de costume, os exemplos estão disponíveisover on GitHub.