Perhaps this could work:
aws elb describe-load-balancers --region us-east-1 | jq '.LoadBalancerDescriptions[] | select((.AvailabilityZones[] | select(. == "us-east-1b")) == "us-east-1b") | .CanonicalHostedZoneName, .AvailabilityZones'
I actually tested with an input like this:
{
"LoadBalancerDescriptions": [
{
"AvailabilityZones": [
"us-east-1b",
"us-east-1c",
"us-east-1d"
]
}
]
}
And ran this command:
jq '.LoadBalancerDescriptions[] | select((.AvailabilityZones[] | select(. == "us-east-1b")) == "us-east-1b")' input_file
Then I got:
{
"AvailabilityZones": [
"us-east-1b",
"us-east-1c",
"us-east-1d"
]
}
Another for input:
{
"LoadBalancerDescriptions": [
{
"AvailabilityZones": [
"us-east-1b",
"us-east-1c",
"us-east-1d"
]
},
{
"AvailabilityZones": [
"us-east-1b",
"us-east-1c"
]
},
{
"AvailabilityZones": [
"us-east-1d"
]
}
]
}
Output:
{
"AvailabilityZones": [
"us-east-1b",
"us-east-1c",
"us-east-1d"
]
}
{
"AvailabilityZones": [
"us-east-1b",
"us-east-1c"
]
}
You probably could use the concept to validate if a key representing an array contains an element like it.