在 AWS CLI 中控制命令输出 - AWS Command Line Interface

本文档仅适用于 AWS CLI 版本 1。有关 AWS CLI 版本 2 的相关文档,请参阅版本 2 用户指南

在 AWS CLI 中控制命令输出

本部分介绍控制 AWS Command Line Interface (AWS CLI) 的输出的不同方式。在终端中自定义 AWS CLI 输出可以提高可读性,简化脚本自动化,并为浏览大型数据集提供便利。

AWS CLI 支持多种输出格式,包括 jsontext、 和 table。有些服务在服务器端对数据进行了分页

最后,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 功能来获得所需的输出。