aws ec2는 보안 그룹 설명 + awk sed

aws ec2는 보안 그룹 설명 + awk sed

이것이 가장 효율적인 접근 방식은 아니라고 확신하지만 이 aws 명령의 결과 형식을 지정하는 데 도움이 필요합니다.

aws ec2 describe-security-groups --group-ids sg-xxxxxxxxxxxxx --region=us-east-1 --profile=default | sed -n '/\"FromPort\"\: 22\,/,/\"ToPort\": 22\,/p'

결과에는 포트 22와 관련된 데이터가 표시됩니다. 결과의 예는 다음과 같습니다.

                        {
                            "CidrIp": "1.2.3.4/32"
                        },
                        {
                            "CidrIp": "5.6.7.8/32"
                        },
                        {
                            "Description": "test1",
                            "CidrIp": "4.3.2.1/32"
                        },
                        {
                            "Description": "test2",
                            "CidrIp": "8.7.6.5/32"
                        },

앞서 살펴보았듯이 일부 항목에는 설명이 포함되어 있을 수 있지만 다른 항목에는 설명이 포함되어 있지 않을 수도 있습니다.

결과 형식을 다음과 같이 지정하고 싶습니다.

1.2.3.4/32
5.6.7.8/32
4.3.2.1/32 <tab> test1
8.7.6.5/32 <tab> test2

aws 명령에 --filters를 추가하려고 시도했지만 원하는 출력을 얻는 최선의 방법이 명확하지 않습니다. 도와주셔서 감사합니다!

답변1

AWS CLI를 사용하고 있으므로 필요한 형식 지정 및 출력을 얻으려면 --query및/또는 플래그를 사용하는 것이 좋습니다.--filter

AWS CLI는 서버 측 및 클라이언트 측 필터링을 제공합니다..

--filter플래그는 데이터 세트가 큰 경우 HTTP 응답 시간을 향상시키는 데 도움이 될 수도 있는 서버 측 필터링을 제공하지만, 이 --query플래그는 사용할 수 있는 보다 강력한 클라이언트 측 필터링을 제공합니다.JMES 경로 구문플래그를 사용하여 --query필터링 합니다.

--query다음은 원하는 출력을 얻기 위해 이 플래그를 사용하는 예 입니다 .

--query참고: +를 조합하여 사용 --filter하거나 단독으로 사용하여 --query슬라이스하고 깍둑썰기하는 방법에는 여러 가지가 있습니다 .

aws ec2 describe-security-groups --group-ids sg-xxxxxxxxx --filter 'Name=ip-permission.from-port,Values=[22]' 'Name=ip-permission.to-port,Values=[22]' --query 'SecurityGroups[*].IpPermissions[?FromPort == `22` && ToPort == `22`].IpRanges[*].[CidrIp,Description]' --region <AWS_REGION> --profile <PROFILE> --output text

각 API 메서드는 서버측 응답에서 "검색"할 수 있는 특정 필터를 제공하므로 API 호출에 대한 설명서를 참조하세요.

또한 --output text무엇이 사용되는지 기록해 두십시오. 이는 탭 대신 공백일 뿐이지만 실제로 찾고 있는 형식으로 출력되는 것입니다.

EC2 SG API에서 제공하는 필터(예 ip-permission.to-port: )를 사용하고 있음을 알 수 있습니다. 또한 위 명령에 사용된 백틱을 참고하세요. 내 Mac에서는 제대로 작동합니다.

관련 정보