仅返回实例 ID,在 Lambda 中使用描述实例

Nae*_*eem 3 amazon-ec2 amazon-web-services boto3 aws-lambda

我正在 lambda 函数中运行以下脚本来使用标签描述 ec2 实例。但作为响应,我只需要实例 ID,而它会返回大量信息。请指导或以任何其他方式使用标签查找 ec2 insatnce id。谢谢

代码是:

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))   
Run Code Online (Sandbox Code Playgroud)

Mar*_*cin 5

要从describe_instances获取实例ID,您必须遍历Reservations,然后遍历Instances

因此,您的代码可以是:

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
Run Code Online (Sandbox Code Playgroud)