Spring Cloud AWS - EC2

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.