Ali Alvi
Ali Alvi

Reputation: 29

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())

Upvotes: 0

Views: 596

Answers (2)

smac2020
smac2020

Reputation: 10734

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);
        }
    }
}

Upvotes: 2

amitd
amitd

Reputation: 1532

import software.amazon.awssdk.regions.Region;
import software.amazon.awssdk.services.ec2.Ec2Client;
import software.amazon.awssdk.services.ec2.model.DescribeTagsRequest;
import software.amazon.awssdk.services.ec2.model.DescribeTagsResponse;
import software.amazon.awssdk.services.ec2.model.Filter;

public class Ec2Tags {

    public static void main(String[] args) {
        Ec2Client ec2 = Ec2Client.builder().region(Region.EU_WEST_1).build(); // Change ec2 client logic as per your setup
        Filter resource_id_filter = Filter.builder().name("resource-id").values("i-0fd113").build();
        Filter resource_type_filter = Filter.builder().name("resource-type").values("instance").build();
        DescribeTagsResponse describeTagsResponse = ec2.describeTags(DescribeTagsRequest.builder().filters(resource_type_filter, resource_id_filter).build());
        describeTagsResponse.tags().forEach(tag -> {
                System.out.println("Resource ID = " + tag.resourceId());
                System.out.println(" Tag Key =" + tag.key());
                System.out.println(" Tag Value =" + tag.value());
        });


    }
}

Upvotes: 1

Related Questions