Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Return only instance ID, in Lambda using describe instance

I am running following script in lambda function to describe ec2 instance using tags. But in response I want only instance ID, whereas it retuns lot of info. please guide or anyother way to find out ec2 insatnce id using tags. Thanks

code is:

import boto3
import json
from collections import defaultdict

region = 'us-east-1'

def lambda_handler(event, context):
    
    
    client = boto3.client('ec2')

    running_instances = client.describe_instances(
      Filters=[
        {
            'Name': 'tag:orgid',
            'Values': [
                'demoxx',
            ]
        },
    ],
    )

    return json.loads(json.dumps(running_instances, default=str))   
like image 839
Naeem Avatar asked Feb 06 '26 04:02

Naeem


1 Answers

To get instance ids from describe_instances you have to iterate over Reservations, and then over Instances.

Thus, you code could be:

import boto3
import json
from collections import defaultdict

region = 'us-east-1'

def lambda_handler(event, context):
    
    
    client = boto3.client('ec2')

    running_instances = client.describe_instances(
      Filters=[
        {
            'Name': 'tag:orgid',
            'Values': [
                'demoxx',
            ]
        },
    ],
    )
    
    instance_ids = []    
    
    for reservation in running_instances['Reservations']:
        for instance in reservation['Instances']:
            instance_ids.append(instance['InstanceId'])

    return instance_ids
like image 180
Marcin Avatar answered Feb 08 '26 00:02

Marcin