在 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 提供支持。客户端筛选使用 --query 参数由 AWS CLI 客户端提供支持。

服务器端输出选项是 AWS 服务 API 直接支持的功能。任何经过筛选或分页的数据都不会发送到客户端,这可以缩短 HTTP 响应时间,并为较大的数据集提高带宽。

客户端输出选项是由 AWS CLI 创建的功能。所有数据都发送到客户端,然后 AWS CLI 会对显示的内容进行筛选或分页。对于较大的数据集,客户端操作不会加快速度或节省带宽。

当服务器端和客户端选项同时使用时,服务器端操作会首先完成,然后发送到客户端进行客户端操作。这利用了服务器端选项可以加快速度和节省带宽的特点,同时使用其他 AWS CLI 功能来获得所需的输出。