在 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 提供支持。客户端筛选使用 --query
参数由 AWS CLI 客户端提供支持。
服务器端输出选项是 AWS 服务 API 直接支持的功能。任何经过筛选或分页的数据都不会发送到客户端,这可以缩短 HTTP 响应时间,并为较大的数据集提高带宽。
客户端输出选项是由 AWS CLI 创建的功能。所有数据都发送到客户端,然后 AWS CLI 会对显示的内容进行筛选或分页。对于较大的数据集,客户端操作不会加快速度或节省带宽。
当服务器端和客户端选项同时使用时,服务器端操作会首先完成,然后发送到客户端进行客户端操作。这利用了服务器端选项可以加快速度和节省带宽的特点,同时使用其他 AWS CLI 功能来获得所需的输出。