You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何利用公网及私有IP地址在boto3中查找EC2实例

通过公网/私有IP查找EC2实例(boto3实现)

CLI 对应命令

查找公网IP:

aws ec2 describe-instances --filter Name=ip-address,Values=IP_1,..IP_N

查找私有IP:

aws ec2 describe-instances --filter Name=private-ip-address,Values=IP_1,..IP_N

Boto3 实现方式

方式一:使用服务端过滤(推荐)

利用boto3的filter方法让AWS服务端直接过滤实例,避免本地遍历所有实例,效率更高:

import boto3

ec2 = boto3.resource('ec2')

# 匹配公网IP
public_ip_filters = [{'Name': 'ip-address', 'Values': ['1.2.3.4', '5.6.7.8']}]
public_matched_instances = ec2.instances.filter(Filters=public_ip_filters)

for instance in public_matched_instances:
    print(f"实例ID: {instance.id}, 公网IP: {instance.public_ip_address}, 私有IP: {instance.private_ip_address}")

# 匹配私有IP
private_ip_filters = [{'Name': 'private-ip-address', 'Values': ['10.0.0.5']}]
private_matched_instances = ec2.instances.filter(Filters=private_ip_filters)

for instance in private_matched_instances:
    print(f"实例ID: {instance.id}, 私有IP: {instance.private_ip_address}, 公网IP: {instance.public_ip_address}")

方式二:本地遍历判断

如果需要自定义复杂逻辑,可以遍历所有实例后本地匹配:

import boto3

ec2 = boto3.resource("ec2")

# 目标IP集合
target_public_ips = {'1.2.3.4', '5.6.7.8'}
target_private_ips = {'10.0.0.5'}

for instance in ec2.instances.all():
    # 检查公网IP匹配
    if instance.public_ip_address in target_public_ips:
        print(f"匹配公网IP的实例: {instance.id} - {instance.public_ip_address}")
    # 检查私有IP匹配
    if instance.private_ip_address in target_private_ips:
        print(f"匹配私有IP的实例: {instance.id} - {instance.private_ip_address}")

注意事项

  • 优先使用服务端过滤方式,尤其是实例数量较多时,能大幅减少数据传输和本地计算开销。
  • 确保当前AWS账号拥有ec2:DescribeInstances权限。

内容的提问来源于stack exchange,提问作者user971741

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.09 17:55:09