You might be running multiple Amazon Virtual Private Clouds (VPCs) in your AWS account to host different workloads and applications.
Finding out which resource belongs to which VPC can be quite difficult when navigating the user interface in the AWS Console.
This blog post will show you a neat trick to identify which resources are located under which VPC on your AWS account. I’ll explain how you can do that using the AWS Console and the AWS CLI.
Here are the steps that allow you to identify and list all active resources that belong to a certain VPC.
Table of Contents
How to list all active AWS resources in a VPC in the AWS Console
To successfully find and list all AWS resources in a VPC you need to enable AWS Config on your account.
AWS Config is a service that provides you with information on the configuration of the active AWS resources in your AWS account.
1. Open advanced queries in AWS Config
Then you need to use a feature called Advanced queries
in AWS Config.
This feature provides a single query endpoint that allows you to use a query language to fetch the state of your AWS resources in one or more AWS accounts.
Luckily for us, it comes in handy to find all active resources which are currently running in our VPC.
2. Run query
Press the New query
button to start querying AWS Config. Then run the following query:
SELECT
resourceId,
resourceName,
resourceType,
tags,
availabilityZone
WHERE
relationships.resourceId = 'vpc-0ded1c524768bfc52' <-- replace vpc id
This will return all resources, including their id, name, type, tags, and availability zone that are related to your VPC ID.
You can choose to export the results as a JSON or CSV file for further processing.
How to find all active resources in a VPC in the AWS CLI
To make use of the AWS Command Line Interface (CLI) with your AWS account to run commands you should set up the required AWS profile and CLI tool first.
1. Query your resource configuration data in the terminal
Use the same query as we’ve used in the AWS Console but prefix it with the respective AWS Config service command:
aws configservice select-resource-config --expression "SELECT resourceId, resourceName, resourceType, tags, availabilityZone WHERE relationships.resourceId='vpc-0ded1c524768bfc52'"
This will return all the AWS resources that are currently active in your Amazon VPC:
{
"Results": [
"{\"resourceId\":\"acl-092a0e2c5b07b9247\",\"availabilityZone\":\"Multiple Availability Zones\",\"tags\":[],\"resourceType\":\"AWS::EC2::NetworkAcl\"}",
"{\"resourceId\":\"arn:aws:cloudformation:eu-central-1:012345678912:stack/test-cloudNation-vpc/d8d995f0-543d-11ed-8f3d-026d4bea47f6\",\"resourceName\":\"test-cloudNation-vpc\",\"availabilityZone\":\"Regional>
"{\"resourceId\":\"eni-01e24b83617a07dd2\",\"availabilityZone\":\"eu-central-1b\",\"tags\":[],\"resourceType\":\"AWS::EC2::NetworkInterface\"}",
"{\"resourceId\":\"eni-0407590302acdec8a\",\"availabilityZone\":\"eu-central-1a\",\"tags\":[],\"resourceType\":\"AWS::EC2::NetworkInterface\"}",
"{\"resourceId\":\"eni-053432ae4c7cd89c2\",\"availabilityZone\":\"eu-central-1b\",\"tags\":[],\"resourceType\":\"AWS::EC2::NetworkInterface\"}",
"{\"resourceId\":\"eni-0605eff823362cc39\",\"availabilityZone\":\"eu-central-1a\",\"tags\":[],\"resourceType\":\"AWS::EC2::NetworkInterface\"}",
"{\"resourceId\":\"eni-06a13f3838f940f8e\",\"availabilityZone\":\"eu-central-1a\",\"tags\":[],\"resourceType\":\"AWS::EC2::NetworkInterface\"}",
"{\"resourceId\":\"eni-088be0e467c003785\",\"availabilityZone\":\"eu-central-1c\",\"tags\":[],\"resourceType\":\"AWS::EC2::NetworkInterface\"}",
"{\"resourceId\":\"eni-0a55d9aef825f1d97\",\"availabilityZone\":\"eu-central-1c\",\"tags\":[],\"resourceType\":\"AWS::EC2::NetworkInterface\"}",
"{\"resourceId\":\"eni-0d762e4ea5d10589b\",\"availabilityZone\":\"eu-central-1b\",\"tags\":[],\"resourceType\":\"AWS::EC2::NetworkInterface\"}",
"{\"resourceId\":\"i-01b3ecb949db2b2f4\",\"availabilityZone\":\"eu-central-1b\",\"tags\":[{\"tag\":\"PreventCleanup\\u003dPlease\",\"value\":\"Please\",\"key\":\"PreventCleanup\"},{\"tag\":\"aws:cloudformati>
"{\"resourceId\":\"i-025888f3bcbef23ef\",\"availabilityZone\":\"eu-central-1a\",\"tags\":[{\"tag\":\"PreventCleanup\\u003dPlease\",\"value\":\"Please\",\"key\":\"PreventCleanup\"},{\"tag\":\"aws:cloudformati>
"{\"resourceId\":\"i-0e7795e95ec60e65c\",\"availabilityZone\":\"eu-central-1c\",\"tags\":[{\"tag\":\"PreventCleanup\\u003dPlease\",\"value\":\"Please\",\"key\":\"PreventCleanup\"},{\"tag\":\"aws:cloudformati>
"{\"resourceId\":\"igw-0844a6a25180a154c\",\"availabilityZone\":\"Multiple Availability Zones\",\"tags\":[{\"tag\":\"PreventCleanup\\u003dPlease\",\"value\":\"Please\",\"key\":\"PreventCleanup\"},{\"tag\":\">
"{\"resourceId\":\"rds:test-cloudnation-rds-serverlessclustera5ed910e-2i3epvn90ajv-2022-10-28-22-20\",\"resourceName\":\"rds:test-cloudnation-rds-serverlessclustera5ed910e-2i3epvn90ajv-2022-10-28-22-20\",\"a>
"{\"resourceId\":\"rds:test-cloudnation-rds-serverlessclustera5ed910e-2i3epvn90ajv-2022-10-29-22-20\",\"resourceName\":\"rds:test-cloudnation-rds-serverlessclustera5ed910e-2i3epvn90ajv-2022-10-29-22-20\",\"a>
"{\"resourceId\":\"rtb-001f2cbba7e9271d4\",\"availabilityZone\":\"Not Applicable\",\"tags\":[{\"tag\":\"PreventCleanup\\u003dPlease\",\"value\":\"Please\",\"key\":\"PreventCleanup\"},{\"tag\":\"aws:cloudform>
"{\"resourceId\":\"rtb-00e069ff6195fe0bc\",\"availabilityZone\":\"Not Applicable\",\"tags\":[{\"tag\":\"PreventCleanup\\u003dPlease\",\"value\":\"Please\",\"key\":\"PreventCleanup\"},{\"tag\":\"aws:cloudform>
"{\"resourceId\":\"rtb-02ed380487af3d753\",\"availabilityZone\":\"Not Applicable\",\"tags\":[{\"tag\":\"PreventCleanup\\u003dPlease\",\"value\":\"Please\",\"key\":\"PreventCleanup\"},{\"tag\":\"aws:cloudform>
"{\"resourceId\":\"rtb-0499d4530876c98cb\",\"availabilityZone\":\"Not Applicable\",\"tags\":[{\"tag\":\"PreventCleanup\\u003dPlease\",\"value\":\"Please\",\"key\":\"PreventCleanup\"},{\"tag\":\"aws:cloudform>
"{\"resourceId\":\"rtb-07ccadedb41fc2c8b\",\"availabilityZone\":\"Not Applicable\",\"tags\":[{\"tag\":\"PreventCleanup\\u003dPlease\",\"value\":\"Please\",\"key\":\"PreventCleanup\"},{\"tag\":\"aws:cloudform>
"{\"resourceId\":\"rtb-0adb4dc7019440577\",\"availabilityZone\":\"Not Applicable\",\"tags\":[{\"tag\":\"PreventCleanup\\u003dPlease\",\"value\":\"Please\",\"key\":\"PreventCleanup\"},{\"tag\":\"aws:cloudform>
"{\"resourceId\":\"rtb-0b1748558ede7296b\",\"availabilityZone\":\"Not Applicable\",\"tags\":[],\"resourceType\":\"AWS::EC2::RouteTable\"}",
"{\"resourceId\":\"rtb-0c499abb3a009a3cb\",\"availabilityZone\":\"Not Applicable\",\"tags\":[{\"tag\":\"PreventCleanup\\u003dPlease\",\"value\":\"Please\",\"key\":\"PreventCleanup\"},{\"tag\":\"aws:cloudform>
"{\"resourceId\":\"rtb-0c58f158336312ec9\",\"availabilityZone\":\"Not Applicable\",\"tags\":[{\"tag\":\"PreventCleanup\\u003dPlease\",\"value\":\"Please\",\"key\":\"PreventCleanup\"},{\"tag\":\"aws:cloudform>
"{\"resourceId\":\"rtb-0d1896478397525fa\",\"availabilityZone\":\"Not Applicable\",\"tags\":[{\"tag\":\"PreventCleanup\\u003dPlease\",\"value\":\"Please\",\"key\":\"PreventCleanup\"},{\"tag\":\"aws:cloudform>
"{\"resourceId\":\"sg-0316ae9b332eea428\",\"resourceName\":\"test-cloudNation-rds-serverlessClusterSecurityGroup15CA2923-6YX0ISL2DN66\",\"availabilityZone\":\"Not Applicable\",\"tags\":[{\"tag\":\"PreventCle>
"{\"resourceId\":\"sg-0601ef39f9e2f00f0\",\"resourceName\":\"default\",\"availabilityZone\":\"Not Applicable\",\"tags\":[],\"resourceType\":\"AWS::EC2::SecurityGroup\"}",
"{\"resourceId\":\"sg-0b7bbe3c4f3c766bd\",\"resourceName\":\"test-cloudNation-rds-serverlessClusterRotationSingleUserSecurityGroup0ED2D348-1QZEBFUNOV0W2\",\"availabilityZone\":\"Not Applicable\",\"tags\":[{\>
"{\"resourceId\":\"sg-0c35f9949d1b6f560\",\"resourceName\":\"test-cloudNation-vpc-skeletonVPCNatSecurityGroup08D55A09-LCFW3O99AQ9G\",\"availabilityZone\":\"Not Applicable\",\"tags\":[{\"tag\":\"PreventCleanu>
"{\"resourceId\":\"subnet-03a6f432748d890f3\",\"availabilityZone\":\"eu-central-1a\",\"tags\":[{\"tag\":\"aws-cdk:subnet-type\\u003dPrivate\",\"value\":\"Private\",\"key\":\"aws-cdk:subnet-type\"},{\"tag\":\>
"{\"resourceId\":\"subnet-03b8f6b3857518c5c\",\"availabilityZone\":\"eu-central-1b\",\"tags\":[{\"tag\":\"PreventCleanup\\u003dPlease\",\"value\":\"Please\",\"key\":\"PreventCleanup\"},{\"tag\":\"aws-cdk:sub>
"{\"resourceId\":\"subnet-03bacdfcf6aebd3a0\",\"availabilityZone\":\"eu-central-1c\",\"tags\":[{\"tag\":\"aws-cdk:subnet-type\\u003dIsolated\",\"value\":\"Isolated\",\"key\":\"aws-cdk:subnet-type\"},{\"tag\">
"{\"resourceId\":\"subnet-04d6740bc3b0e6d41\",\"availabilityZone\":\"eu-central-1a\",\"tags\":[{\"tag\":\"PreventCleanup\\u003dPlease\",\"value\":\"Please\",\"key\":\"PreventCleanup\"},{\"tag\":\"aws-cdk:sub>
"{\"resourceId\":\"subnet-0585664f00805edef\",\"availabilityZone\":\"eu-central-1b\",\"tags\":[{\"tag\":\"PreventCleanup\\u003dPlease\",\"value\":\"Please\",\"key\":\"PreventCleanup\"},{\"tag\":\"aws-cdk:sub>
"{\"resourceId\":\"subnet-07a88b6e19ddf738d\",\"availabilityZone\":\"eu-central-1a\",\"tags\":[{\"tag\":\"aws-cdk:subnet-type\\u003dPublic\",\"value\":\"Public\",\"key\":\"aws-cdk:subnet-type\"},{\"tag\":\"P>
"{\"resourceId\":\"subnet-0ae66b47932af7ab2\",\"availabilityZone\":\"eu-central-1c\",\"tags\":[{\"tag\":\"aws-cdk:subnet-type\\u003dPublic\",\"value\":\"Public\",\"key\":\"aws-cdk:subnet-type\"},{\"tag\":\"P>
"{\"resourceId\":\"subnet-0bbcabe50c52f90f3\",\"availabilityZone\":\"eu-central-1b\",\"tags\":[{\"tag\":\"aws-cdk:subnet-type\\u003dPrivate\",\"value\":\"Private\",\"key\":\"aws-cdk:subnet-type\"},{\"tag\":\>
"{\"resourceId\":\"subnet-0cb34da28adb8d560\",\"availabilityZone\":\"eu-central-1c\",\"tags\":[{\"tag\":\"PreventCleanup\\u003dPlease\",\"value\":\"Please\",\"key\":\"PreventCleanup\"},{\"tag\":\"aws-cdk:sub>
"{\"resourceId\":\"test-cloudnation-rds-serverlessclustersubnetsbca74b96-ckxoi2t5hhjy\",\"resourceName\":\"test-cloudnation-rds-serverlessclustersubnetsbca74b96-ckxoi2t5hhjy\",\"availabilityZone\":\"Multiple>
"{\"resourceId\":\"vpce-05961844e052082a6\",\"availabilityZone\":\"Not Applicable\",\"tags\":[],\"resourceType\":\"AWS::EC2::VPCEndpoint\"}",
"{\"resourceId\":\"vpce-0beee10c8a718c923\",\"availabilityZone\":\"Not Applicable\",\"tags\":[],\"resourceType\":\"AWS::EC2::VPCEndpoint\"}"
],
"QueryInfo": {
"SelectFields": [
{
"Name": "resourceId"
},
{
"Name": "resourceName"
},
{
"Name": "resourceType"
},
{
"Name": "tags"
},
{
"Name": "availabilityZone"
}
]
}
}
Conclusion
This blog post has shown how you can list all resources from a certain VPC in an AWS account using the Advanced queries feature from AWS Config in the AWS Console and the AWS CLI.