AWS CLI에서 명령 출력 제어 - AWS Command Line Interface

AWS CLI에서 명령 출력 제어

이 섹션에서는 AWS Command Line Interface(AWS CLI)의 출력을 제어하는 다양한 방법에 대해 설명합니다. 터미널에서 AWS CLI 출력을 사용자 지정하면 가독성을 개선하고 스크립팅 자동화를 간소화하며 대규모 데이터세트를 더 쉽게 탐색할 수 있습니다.

AWS CLI는 json, text, yaml,table을 비롯한 다양한 출력 형식을 지원합니다. 일부 서비스에는 데이터에 대한 서버 측 페이지 매김이 있으며, AWS CLI는 추가 페이지 매김 옵션을 위한 자체적인 클라이언트 측 기능을 제공합니다.

AWS CLI에는 개별적으로 또는 함께 사용하여 AWS CLI 출력을 필터링할 수 있는 서버 측 필터링과 클라이언트 측 필터링이 둘 다 있습니다.

민감한 출력

AWS CLI의 일부 작업은 환경 변수의 정보를 포함하여 민감한 것으로 간주될 수 있는 정보를 반환할 수 있습니다. 이러한 정보의 노출은 특정 시나리오에서 보안 위험을 나타낼 수 있습니다. 예를 들어, 이러한 정보는 지속적 통합 및 지속적 배포(CI/CD) 로그에 포함될 수 있습니다. 따라서 이러한 출력을 언제 로그의 일부로 포함할지 검토하고 필요하지 않은 경우 출력을 억제하는 것이 중요합니다.

민감한 데이터 보호에 대한 자세한 내용은 AWS CLI에서 데이터 보호 섹션을 참조하세요.

다음 모범 사례를 고려하세요.

  • AWS Secrets Manager와 같은 암호 저장소에서 프로그래밍 방식으로 암호를 검색하는 것을 좋습니다.

  • 빌드 로그의 내용을 검토하여 민감한 정보가 포함되어 있지 않은지 확인합니다. /dev/null로 파이핑하거나 출력을 bash 또는 PowerShell 변수로 캡처하여 명령 출력을 억제하는 등의 접근 방식을 고려합니다.

    다음은 오류가 아닌 출력을 /dev/null로 리디렉션하는 bash 예제입니다.

    $ aws s3 ls > /dev/null

    터미널의 출력을 억제하는 방법에 대한 자세한 내용은 사용 중인 터미널의 사용 설명서를 참조하세요.

  • 로그의 액세스 권한을 고려하여 사용 사례에 맞게 액세스 범위를 적절히 설정하세요.

서버 측 출력 옵션과 클라이언트 측 출력 옵션 비교

AWS CLI에는 개별적으로 또는 함께 사용하여 AWS CLI 출력을 필터링할 수 있는 서버 측 필터링과 클라이언트 측 필터링이 둘 다 있습니다. 서버 측 필터링이 먼저 처리되고 클라이언트 측 필터링에 대한 출력을 반환합니다. 서버 측 필터링은 서비스 API에서 지원됩니다. 클라이언트 측 필터링은 AWS CLI 매개 변수를 사용하여 --query 클라이언트에서 지원됩니다.

서버 측 출력 옵션은 AWS 서비스 API에서 직접 지원합니다. 필터링되거나 페이징된 데이터는 클라이언트로 전송되지 않으므로 HTTP 응답 시간이 빨라지고 대규모 데이터세트의 대역폭을 개선할 수 있습니다.

클라이언트 측 출력 옵션은 AWS CLI에서 만든 기능입니다. 모든 데이터가 클라이언트로 전송되면 AWS CLI가 표시되는 콘텐츠를 필터링하거나 페이지를 매깁니다. 클라이언트 측 작업으로는 대규모 데이터세트의 속도나 대역폭이 절약되지 않습니다.

서버 측 옵션과 클라이언트 측 옵션을 함께 사용하면 서버 측 작업이 먼저 완료된 후 클라이언트로 전송되어 클라이언트 측 작업이 진행됩니다. 이를 통해 서버 측 옵션의 잠재적인 속도 및 대역폭 절감 효과를 활용하는 동시에 추가 AWS CLI 기능을 사용하여 원하는 결과를 얻을 수 있습니다.