2017-05-23 66 views
1

JMESPath讓我瘋狂。我想獲得的機器的IP地址和名稱與一個security group == "SG-DEV"AWS EC2根據2個過濾器獲取IP和名稱

我來什麼事用時1小時閱讀單證後:

aws ec2 describe-instances --query "Reservations[].Instances[].[Tags[?Key=='Name'].Value[] && SecurityGroups[?GroupName == 'SG-DEV'].PrivateIpAddress]" 

它只能產生機器名,不僅SG-DEV機不是IP地址。 我在做什麼錯?

回答

1

你做錯了。使用filters可以列出具有SG-DEV作爲安全組的實例,然後從輸出中僅提取私有IP和實例名稱。獲取實例名稱有點棘手。檢查例子:Controlling Command Output from the AWS Command Line Interface

下應返回你問什麼:?

aws ec2 describe-instances --filter "Name=instance.group-name,Values=SG-DEV" --query "Reservations[].Instances[].[PrivateIpAddress, Tags[?Key=='Name'].Value]" --output text 
0

私有IP地址位於不同的名稱空間下,您需要使用查詢和篩選器開關的組合才能獲得該IP地址。

network-interface.addresses.private-ip-addressprivate-ip-address

變化Values=SG-DEV

aws ec2 describe-instances --filter "Name=instance.group-name,Values=default" --query "Reservations[].Instances[*].PrivateIpAddress[]" 

的價值,它返回此列表

[ 
    "10.0.1.202" 
] 

過濾器還可以在標籤過濾

標記:鍵= - 分配給資源的標記的鍵/值組合。在過濾器名稱中指定標籤的關鍵字,並在過濾器值中指定標籤的值。例如,對於標記Purpose = X,請指定 標記:用於篩選器名稱,X用於篩選器值。

tag-key - 分配給資源的標籤的密鑰。該過濾器獨立於標籤值過濾器。例如,如果同時使用過濾器「tag-key = Purpose」和過濾器「tag-value = X」,則可以獲得指定了標籤密鑰Purpose(無論標籤的值是什麼)以及標籤值X(不管標籤的密鑰是什麼)。如果要僅列出目的爲X的資源,請參閱標記:key = 過濾器。

tag-value - 分配給資源的標籤的值。該過濾器獨立於標籤密鑰過濾器。

http://docs.aws.amazon.com/cli/latest/reference/ec2/describe-instances.html

+0

我還需要與'機器名[標籤[關鍵詞==「名稱」]值[] '我如何添加它? – Moshe

+0

過濾器也可以過濾標籤 – strongjz