Search code examples
amazon-web-servicesamazon-ec2aws-cloudformationaws-sdk-java-2.0

How do we retrieve ec2 client tags


How can I retrieve the tags for ec2 instance using Java aws v2 library. I have been stuck at this for a while. The filter I want to apply is the resource id but its giving me a syntax error

DescribeTagsRequest req = DescribeTagsRequest.builder().filters(new Filter())

Solution

  • import software.amazon.awssdk.regions.Region;
    import software.amazon.awssdk.services.ec2.Ec2Client;
    import software.amazon.awssdk.services.ec2.model.*;
    import java.util.List;
    
    public class DescribeInstanceTags {
    
        public static void main(String[] args) {
    
            String resourceId = args[0]; // Get this value from AWS Management Console
            Region region = Region.US_EAST_1;
            Ec2Client ec2 = Ec2Client.builder()
                    .region(region)
                    .build();
    
            describeEC2Tags(ec2, resourceId);
            ec2.close();
        }
    
        public static void describeEC2Tags(Ec2Client ec2,  String resourceId ) {
    
            try {
    
                Filter filter = Filter.builder()
                        .name("resource-id")
                        .values(resourceId)
                        .build();
    
                DescribeTagsResponse describeTagsResponse = ec2.describeTags(DescribeTagsRequest.builder().filters(filter).build());
                List<TagDescription> tags = describeTagsResponse.tags();
                for (TagDescription tag: tags) {
                    System.out.println("Tag key is: "+tag.key());
                    System.out.println("Tag value is: "+tag.value());
                }
    
            } catch ( Ec2Exception e) {
             System.err.println(e.awsErrorDetails().errorMessage());
                System.exit(1);
            }
        }
    }