보안 그룹 설명에 보안 문자열이 포함되어 있는지 aws cli를 통해 확인하는 방법은 무엇입니까?

보안 그룹 설명에 보안 문자열이 포함되어 있는지 aws cli를 통해 확인하는 방법은 무엇입니까?

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}"

도움이 되길 바랍니다.

관련 정보