aws cli를 사용하여 보안 그룹의 '설명'에서 문자열의 일부를 퍼지 검색할 수 있기를 원합니다.
예를 들어 보안 그룹을 가정해 보겠습니다.sd-afafaf00설명 필드에 "Hey there kaipee"가 포함되어 있습니다.
다음은 부분 일치가 아닌 전체 일치에만 작동합니다.
aws ec2 describe-security-groups --query "SecurityGroups[?IpPermissions[?contains(IpRanges[].Description, 'Hey there kaipee')]]"
다음과 같이 설명에 'kaipee'가 포함된 모든 보안 그룹을 표시하고 싶습니다.
aws ec2 describe-security-groups --query "SecurityGroups[?IpPermissions[?contains(IpRanges[].Description, 'kaipee')]]"
편집: 쿼리된 문자열의 결과와 모두 일치하는 GroupId, CirdIp 및 설명 필드의 세부 정보를 반환해야 합니다.
답변1
jq를 사용해도 될까요?
jq '.[][].IpPermissions[].IpRanges[] | select(.Description) | select(.Description | contains("kaipee"))'
답변2
JMESPath 쿼리를 사용하여 찾고 있는 SG를 필터링해 보셨나요? 제가 직접 몇 가지 테스트를 해봤는데 contains
직장에 가는 길을 찾을 수 없었습니다. 하지만 >
검색 문자열이 설명 시작 부분에 있지 않은 경우에도 작동하는 것 같습니다.
aws ec2 describe-security-groups --query "SecurityGroups[?Description > 'kaipee'].{Description: Description, GroupId: GroupId, IpRanges: IpPermissions[].IpRanges}"
도움이 되길 바랍니다.