gpt4 book ai didi

python - boto3 ec2.instances.filter 是否与 AWS CLI --query 等效?

转载 作者:太空宇宙 更新时间:2023-11-03 13:57:12 26 4
gpt4 key购买 nike

我首先使用 AWS CLI 创建一个 bash 脚本来获取我想要的有关实例的数据。主线是:

aws ec2 describe-instances --filter "Name=instance-state-name,Values=running" --query Reservations[*].Instances[*].[PublicDnsName,PublicIpAddress,PrivateIpAddress,BlockDeviceMappings[*].DeviceName] --output text

然后我意识到我想要更复杂的东西,所以切换到 python 和 boto3

ec2 = boto3.resource('ec2')
instances = ec2.instances.filter(
Filters = [ {
'Name' : 'instance-state-name',
'Values' : [ 'running' ]
} ]
)
for i in instances:
""" The whole data set is here """
print(i.public_dns_name)
print(i.public_ip_address)
""" etc """

我可以遍历响应并获取数据,但 boto3 版本似乎相当浪费,因为我不需要返回的大部分数据。

我能否让 boto3 接口(interface)仅返回我感兴趣的数据,类似于 AWS CLI 使用 --query 的方式? (我的假设是 AWS CLI 不仅仅是获取整个响应并解析它)。

最佳答案

正如 Krishna Kumar R 评论的那样:

“filter - 在 AWS 级别进行过滤并返回响应。 查询 - 根据 JMESPath 查询表达式过滤从 AWS 返回的结果”

我也使用 tcpdump 确认了同样的情况。无论 --query 参数的内容如何,​​都会从服务器返回相同的数据。

关于python - boto3 ec2.instances.filter 是否与 AWS CLI --query 等效?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49512095/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com