Question:
AWS CLI command aws emr list-clusters
returns the following json. Is there a way through bash or groovy that I can use the Name to get the Id? I can’t just use the Id becauseI am deleting clusters and rebuilding them with only the same name. So I know the name of the cluster is “my-cluster” and I would like to use it somehow to get the Id of the cluster. End case is I actually want the Master public DNS of the cluster.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 |
{ "Clusters": [ { "Status": { "Timeline": { "ReadyDateTime": 1433200405.353, "CreationDateTime": 1433199926.596 }, "State": "WAITING", "StateChangeReason": { "Message": "Waiting after step completed" } }, "NormalizedInstanceHours": 6, "Id": "j-3SD91U2E1L2QX", "Name": "my-cluster" }, { "Status": { "Timeline": { "ReadyDateTime": 1433200405.353, "CreationDateTime": 1433199926.596 }, "State": "WAITING", "StateChangeReason": { "Message": "Waiting after step completed" } }, "NormalizedInstanceHours": 6, "Id": "j-3S281UEK8L2LW", "Name": "my-cluster2" } ] } |
Answer:
You can use the query
parameter to achieve what you are trying. The command will look like below:
1 2 |
aws emr list-clusters --query 'Clusters[?Name==`my-cluster`].Id' --output text |
You can find the complete documentation for the query
parameter here.