[英]Does boto3 ec2.instances.filter have equivalent to AWS CLI --query?
我首先使用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接口僅返回我感興趣的數據,類似於AWS CLI使用--query的方式? (我的假設是,AWS CLI不只是獲取整個響應並對其進行解析)。
正如奎師那(Krishna Kumar)R評論:
“ filter-在AWS級別進行過濾並返回響應。查詢-根據JMESPath查詢表達式過濾從AWS返回的結果”
我還使用tcpdump確認了相同的內容。 無論--query參數的內容如何,都將從服務器返回相同的數據。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.