AWS CLI でのコマンド出力の制御 - AWS Command Line Interface

AWS CLI でのコマンド出力の制御

このセクションでは、AWS Command Line Interface (AWS CLI) からの出力を制御するさまざまな方法を示します。ターミナルで AWS CLI 出力をカスタマイズすると、読みやすさが向上し、スクリプト自動化が合理化され、大規模なデータセットを簡単に操作できるようになります。

AWS CLI は、jsontextyamltable を含む複数の出力フォーマットをサポートしています。一部のサービスでは、データに対してサーバー側でページ分割が行われており、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 機能を使用して必要な出力を取得できます。