2017-07-03 113 views
0

我有100多個Auto Scaling組。aws cli和jq - 返回屬性匹配模式的對象

我希望能夠基於AutoScalingGroupName的正則表達式搜索我的Auto Scaling組並返回AutoScalingGroupARN(s)(如果存在)。

到目前爲止,我有:

aws autoscaling describe-auto-scaling-groups | jq '.AutoScalingGroups[].AutoScalingGroupName | capture("(?<result>my-regex-pattern)")' 

雖然這確實返回AutoScalingGroupNames,我想也返回AutoScalingGroupARN,而不是用做從以前的命令的輸出另一個命令。

因此,考慮從aws autoscaling describe-auto-scaling-groups輸出如下:

{ 
    "AutoScalingGroups": [ 
     { 
      "AutoScalingGroupARN": "arn:aws:autoscaling:us-east-1:123456789012:autoScalingGroup:208e9fe9-3a9b-4f30-9b47-855f4a7ee671:autoScalingGroupName/abc-app-dev-as-1IZQABPFDAV2A", 
      "AutoScalingGroupName": "abc-app-dev-as-1IZQABPFDAV2A", 
      "...": "more output" 
     }, 
     { 
      "AutoScalingGroupARN": "arn:aws:autoscaling:us-east-1:123456789012:autoScalingGroup:c6463f9a-7fa1-41de-a39b-7996d2b8cbb1:autoScalingGroupName/foo-app-dev-as-1IZQABPFDAV2A", 
      "AutoScalingGroupName": "foo-app-dev-as-1IZQABPFDAV2A", 
      "...": "more output" 
     } 
     { 
      "AutoScalingGroupARN": "arn:aws:autoscaling:us-east-1:123456789012:autoScalingGroup:6a659b27-1ea7-4d39-8a8b-790153033b39:autoScalingGroupName/abc-app-prod-as-1IZQABPFDAV2A", 
      "AutoScalingGroupName": "abc-app-prod-as-1IZQABPFDAV2A", 
      "...": "more output" 
     }, 
     { 
      "Lots more": "Like the above" 
     } 
    ] 
} 

而且我只關心AutoScalingGroupName匹配/abc-app.+/,我會想的輸出:

{ 
    "results": [ 
     { 
      "AutoScalingGroupARN": "arn:aws:autoscaling:us-east-1:123456789012:autoScalingGroup:208e9fe9-3a9b-4f30-9b47-855f4a7ee671:autoScalingGroupName/abc-app-dev-as-1IZQABPFDAV2A", 
      "AutoScalingGroupName": "abc-app-dev-as-1IZQABPFDAV2A" 
     }, 
     { 
      "AutoScalingGroupARN": "arn:aws:autoscaling:us-east-1:123456789012:autoScalingGroup:6a659b27-1ea7-4d39-8a8b-790153033b39:autoScalingGroupName/abc-app-prod-as-1IZQABPFDAV2A", 
      "AutoScalingGroupName": "abc-app-prod-as-1IZQABPFDAV2A" 
     } 
    ] 
} 

有沒有辦法做到這一點?

+0

JSON的一個簡單例子會很有幫助。請參閱http://stackoverflow.com/help/mcve上的指導原則 – peak

+0

對缺乏上下文感到抱歉。感謝您檢查AWS文檔以查看該命令的標準輸出 – tkwargs

回答

1

你似乎在尋找大意如下的一個 「選擇」 查詢:在 http://docs.aws.amazon.com/cli/latest/reference/autoscaling/describe-auto-scaling-groups.html

上述過濾

.AutoScalingGroups[] 
| select(.AutoScalingGroupName | test("group")) 
| .AutoScalingGroupARN 

給出的例子AWS輸出產生:

"arn:aws:autoscaling:us-west-2:123456789012:autoScalingGroup:930d940e-891e-4781-a11a-7b0acd480f03:autoScalingGroupName/my-auto-scaling-group" 

如果你想要Name和ARN,那麼只需抓住它們,例如:

.AutoScalingGroups[] 
| select(.AutoScalingGroupName | test("group")) 
| {AutoScalingGroupName, AutoScalingGroupARN} 
+0

正是我需要的。謝謝!! – tkwargs