AWS CLI --output text输出一二级JSON字段如何单行展示
问题根因
你写的JMESPath查出来的结果是嵌套数组结构:前两个一级字段是普通字符串,第三个元素是包裹着验证状态、验证方式的二维数组。AWS CLI的text输出模式碰到嵌套数组就会自动拆成新行打印,所以才会出现字段分两行显示的问题。
解决方法
调整JMESPath查询逻辑,把所有要输出的字段全展平成一维顶层数组,不要保留嵌套结构即可。
单证书查询直接用下面的命令,通过数组下标取DomainValidationOptions下的对应字段,不会生成嵌套数组:
aws acm describe-certificate \ --certificate-arn arn:aws:acm:region:aws-account_id:certificate/xxxx \ --query 'Certificate.[DomainName, NotAfter, DomainValidationOptions[0].ValidationStatus, DomainValidationOptions[0].ValidationMethod]' \ --output text
执行后输出和预期效果完全一致:
foo.bar.com 2022-06-18T23:59:59+00:00 FAILED DNS
批量拉取百条证书的优化方案
不需要循环调用describe-certificate单条查询,直接用list-certificates一次性拉取全量证书列表效率更高,参考命令:
aws acm list-certificates \ --query 'CertificateSummaryList[].[DomainName, NotAfter, ValidationStatus, ValidationMethod]' \ --output text
- 如果需要过滤特定密钥类型的证书,可以加
--includes参数指定要匹配的密钥类型 - 如果证书配置了多个SAN备用域名,
DomainValidationOptions数组会存储所有域名的验证记录,上述单证书查询命令里的[0]只会取主域名对应的验证条目,需要输出所有SAN域名对应信息的话,再调整JMESPath做数组展开即可
内容的提问来源于stack exchange,提问作者YAZ84
相关产品推荐
相关产品推荐

