首页 > 解决方案 > BOTO3 使用 Python 获取 EC2 列表的信息

问题描述

我正在尝试使用Python + Boto3.csv上的 EC2 列表中编译信息。

.csv包含这些实例的私有IP。以下命令返回我需要的所有内容:

aws ec2 describe-network-interfaces --filters Name=addresses.private-ip-address,Values="<PRIVATE IP>" --region <MY REGION>

所以我决定使用Boto3来做类似的事情。

但是我的代码没有返回字典中的信息,因为我无法在代码中指定区域

该文档允许我指定可用区,但它不仅可以工作。

ec2 = boto3.client('ec2')
describe_network_interfaces = ec2.describe_network_interfaces(
    Filters=[
        {
            'Name': 'addresses.private-ip-address',
            'Values': [
                '<PRIVATE IP>'
            ],
            'Name': 'availability-zone',
            'Values': [
                '<REGION>'
            ]
        }
    ],
    MaxResults=123
)
print(describe_network_interfaces)

☝️ 这返回给我这个

{'NetworkInterfaces': [], 'ResponseMetadata': { <LOTS OF METADATA> }}

我相信它不起作用,因为我无法使用Boto3指定区域describe_network_interfaces。但我可以使用AWS CLI命令来完成。

有什么建议么?

OBS: popen 对于当前的项目来说不是一个好主意。

提前致谢。

标签: pythonamazon-web-servicesamazon-ec2boto3

解决方案


您可以在客户端级别设置区域,例如:

my_region = "us-east-1"
ec2 = boto3.client('ec2', region_name=my_region)

这在我的环境中成功地获取了有关在另一个区域运行的系统的信息。


推荐阅读