如何使用 boto3 在特定 VPC 下查找 ec2 实例 运行

How to find ec2 instances running under particular VPC using boto3

我正在尝试创建一个脚本,该脚本确实会在特定 VPC ID 下 运行ning 我的许多实例之一卷曲。

比方说,我有 VPC ID。那么我如何才能获得此 VPC 下所有 ec2 实例 运行ning 的列表,并最终如何找到名为“test-ec2”的特定 ec2 实例。然后 运行 一个命令,例如。 “卷曲 ip_address_of_test-ec2”

我没用过boto3,所以不太了解

有什么建议可以解决这个问题。

您可以使用 describe-instances 及其 vpc-idtag:key--filters 作为名称。

例如,要获取给定 vpc 中的所有实例 ID:

aws ec2 describe-instances \
  --filters Name=vpc-id,Values=<your-vpc-id> \
  --query 'Reservations[].Instances[].InstanceId' \
  --output text

也可以按名称过滤:

aws ec2 describe-instances \
  --filters Name=vpc-id,Values=<your-vpc-id> \
            Name=tag:Name,Values=<instance-name> \
  --query 'Reservations[].Instances[].InstanceId' \
  --output text

在boto3中,等价函数为describe_instances:

ec2 = boto3.client('ec2')

r = ec2.describe_instances(Filters=[
        {
            'Name': 'vpc-id',
            'Values': ['<your-vpc-id>']
        },
        {
            'Name': 'tag:Name',
            'Values': ['<instance-name>']
        }  
    ])

for reservation in r['Reservations']:
  for instance in reservation['Instances']:
    private_ip_addr = instance['PrivateIpAddress']
    print(private_ip_addr)