Spring Cloud AWS - EC2

Spring Cloud AWS - EC2

Dans lesprevious article, nous nous concentrons sur S3; nous allons maintenant nous concentrer sur Elastic Compute Cloud, communément appelé EC2.

1. Accès aux métadonnées EC2

La classe AWSEC2MetadataUtils fournit des méthodes statiques pour accéder aux métadonnées d'instance telles que l'ID AMI et le type d'instance. With Spring Cloud AWS we can inject this metadata directly using the @Value annotation.

Cela peut être activé en ajoutant l'annotation@EnableContextInstanceData sur l'une des classes de configuration:

@Configuration
@EnableContextInstanceData
public class EC2EnableMetadata {
    //
}

In a Spring Boot environment, instance metadata is enabled by default which means this configuration is not required.

Ensuite, nous pouvons injecter les valeurs:

@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. Balises personnalisées

De plus, Spring prend également en charge l'injection detagsdéfinis par l'utilisateur. Nous pouvons l'activer en définissant un attributuser-tags-map danscontext-instance-data en utilisant la configuration XML suivante:


    

Maintenant, injectons les balises définies par l'utilisateur à l'aide de la syntaxe d'expression Spring:

@Value("#{instanceData.myTagKey}")
private String myTagValue;

2. Client EC2

De plus, s'il y a des balises utilisateur configurées pour l'instance, Spring créera un clientAmazonEC2 que nous pouvons injecter dans notre code en utilisant@Autowired:

@Autowired
private AmazonEC2 amazonEc2;

Veuillez noter que ces fonctionnalités ne fonctionnent que si l'application est en cours d'exécution sur une instance EC2.

3. Conclusion

Il s'agissait d'une introduction rapide et concise à l'accès aux données EC2d avec Spring Cloud AWS.

Dans lesnext article of the series, nous allons explorer le support RDS.

Comme d'habitude, les exemples sont disponiblesover on GitHub.