簡體   English   中英

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

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM