Usando aws cli, me gustaría poder realizar una búsqueda difusa de una parte de una cadena en la 'descripción' de un grupo de seguridad.
Por ejemplo, digamos Grupo de seguridadsd-afafaf00contiene "Hola, Kaipee" en el campo Descripción.
Lo siguiente funciona pero sólo para una coincidencia completa, no parcial.
aws ec2 describe-security-groups --query "SecurityGroups[?IpPermissions[?contains(IpRanges[].Description, 'Hey there kaipee')]]"
Me gustaría poder mostrar todos los grupos de seguridad que contienen 'kaipee' en la descripción, como:
aws ec2 describe-security-groups --query "SecurityGroups[?IpPermissions[?contains(IpRanges[].Description, 'kaipee')]]"
EDITAR: Necesito devolver GroupId, CirdIp y los detalles del campo Descripción que coinciden con los resultados de la cadena consultada.
Respuesta1
¿Te importaría usar jq?
jq '.[][].IpPermissions[].IpRanges[] | select(.Description) | select(.Description | contains("kaipee"))'
Respuesta2
¿Ha intentado utilizar una consulta JMESPath para filtrar el SG que está buscando? Hice algunas pruebas por mi cuenta y no puedo encontrar la manera de comenzar contains
a trabajar, pero encuentro que >
parece funcionar incluso cuando la cadena de búsqueda no está al comienzo de la descripción.
aws ec2 describe-security-groups --query "SecurityGroups[?Description > 'kaipee'].{Description: Description, GroupId: GroupId, IpRanges: IpPermissions[].IpRanges}"
Espero que ayude.