Spring Cloud AWS – EC2

1. EC2 Metadata Access

The AWS EC2MetadataUtils class provides static methods to access instance metadata like AMI Id and instance type. With Spring Cloud AWS we can inject this metadata directly using the @Value annotation.

This can be enabled by adding the @EnableContextInstanceData annotation over any of the configuration classes:

@Configuration
@EnableContextInstanceData
public class EC2EnableMetadata {
    //
}

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

Then, we can inject the values:

@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. Custom Tags

Additionally, Spring also supports injection of user-defined tags. We can enable this by defining an attribute user-tags-map in context-instance-data using the following XML configuration:

<beans...>
    <aws-context:context-instance-data user-tags-map="instanceData"/>
</beans>

Now, let’s inject the user-defined tags with the help of Spring expression syntax:

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

2. EC2 Client

Furthermore, if there are user tags configured for the instance, Spring will create an AmazonEC2 client which we can inject into our code using @Autowired:

@Autowired
private AmazonEC2 amazonEc2;

Please note that these features work only if the app is running on an EC2 instance.

3. Conclusion

This was a quick and to-the-point introduction to accessing EC2d data with Spring Cloud AWS.

In the next article of the series, we’ll explore the RDS support.

As usual, the examples are available over on GitHub.

Related posts:

Reversing a Linked List in Java
Java Program to Implement the Binary Counting Method to Generate Subsets of a Set
Java Program for Topological Sorting in Graphs
Giới thiệu luồng vào ra (I/O) trong Java
Java Program to Generate Random Numbers Using Probability Distribution Function
Java Program to Implement LinkedBlockingQueue API
Java Program to Implement RenderingHints API
Java Program to Implement Kosaraju Algorithm
Java Program to Implement Ternary Heap
Java – InputStream to Reader
Configuring a DataSource Programmatically in Spring Boot
Java Program to Implement Binomial Tree
Java Program to Implement Gale Shapley Algorithm
Java Program to Implement Red Black Tree
Java Program to Perform Finite State Automaton based Search
Spring WebClient vs. RestTemplate
Daemon Threads in Java
Java Program to Implement Dijkstra’s Algorithm using Queue
Java Program to Implement Heap Sort Using Library Functions
Summing Numbers with Java Streams
Simple Single Sign-On with Spring Security OAuth2
Java Program to Apply DFS to Perform the Topological Sorting of a Directed Acyclic Graph
Enum trong java
Giới thiệu Google Guice – Aspect Oriented Programming (AOP)
Spring Boot Tutorial – Bootstrap a Simple Application
Debugging Reactive Streams in Java
Batch Processing with Spring Cloud Data Flow
Java Program to Implement First Fit Decreasing for 1-D Objects and M Bins
Entity To DTO Conversion for a Spring REST API
Java Program to Perform Insertion in a 2 Dimension K-D Tree
Hướng dẫn Java Design Pattern – Null Object
A Custom Media Type for a Spring REST API