You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何通过AWS CLI过滤FSx存储虚拟机JSON输出为指定表格格式

问题描述

我通过AWS CLI获取了FSx存储虚拟机的JSON输出:

{"StorageVirtualMachines": [{"CreationTime": "2022-06-28T18:57:01.713000+05:30","Endpoints": {"Iscsi": {"DNSName": "iscsi.svm-010ea97h37n123456.fs-019f7g7g77948f88c.fsx.eu-west-1.amazonaws.com","IpAddresses": ["192.168.2.2","192.168.2.42"]},"Management": {"DNSName": "svm-010ea97h37n123456.fs-019f7g7g77948f88c.fsx.eu-west-1.amazonaws.com","IpAddresses": ["192.168.1.92"]},"Nfs": {"DNSName": "svm-010ea97h37n123456.fs-019f7g7g77948f88c.fsx.eu-west-1.amazonaws.com","IpAddresses": ["192.168.1.93"]}},"FileSystemId": "fs-019f7g7g77948f88c","Lifecycle": "CREATED","Name": "mysvm-fsxn_0001","ResourceARN": "arn:aws:fsx:eu-west-1:077831920798:storage-virtual-machine/fs-019f7g7g77948f88c/svm-010ea97h37n123456","StorageVirtualMachineId": "svm-010ea97h37n123456","Subtype": "DEFAULT","UUID": "66bb97d6-c7d7-11dc-1001-113072e8ap01"}]}

尝试执行以下命令过滤提取字段并以表格格式展示:

aws fsx describe-storage-virtual-machines --filters --query 'StorageVirtualMachines[*].{"SVM":Name,"DNS":DNSName}' --output table

结果中DNS字段为None,未达到预期效果。我期望提取出包含SVM名称、Management IpAddresses、Nfs IpAddresses、Iscsi IpAddresses的表格,格式如下:

------------------------------------------------------------------------------------------------------------------------------------+
|         DescribeStorageVirtualMachines         |
+------+-----------------------------------------+-----------------------------------------+-----------------------------------------+-------------------------------------+
|  DNS |                   SVM                   |Management IpAddresses                   | Nfs IpAddresses                         | Iscsi  IpAddresses
+------+-----------------------------------------+-----------------------------------------+-----------------------------------------+-------------------------------------+
|  None|                   mysvm-fsxn_0001       |192.168.1.92                             |192.168.1.93                             | 192.168.2.2,192.168.2.42
+------+-----------------------------------------+-----------------------------------------+-----------------------------------------+-------------------------------------+
解决方案

你之前的命令出错原因是:DNSName并非StorageVirtualMachines的直接属性,而是嵌套在Endpoints下的各个子节点(Management、Nfs、Iscsi)中;同时你需要提取的各个IpAddresses也需要通过正确的嵌套路径访问,并且可以用JMESPath的join函数把数组格式的IP转为逗号分隔的字符串。

使用以下命令可以得到你想要的表格:

aws fsx describe-storage-virtual-machines --query 'StorageVirtualMachines[*].{"SVM": Name, "Management IpAddresses": join(", ", Endpoints.Management.IpAddresses), "Nfs IpAddresses": join(", ", Endpoints.Nfs.IpAddresses), "Iscsi IpAddresses": join(", ", Endpoints.Iscsi.IpAddresses)}' --output table

如果确实需要保留DNS列(可选择某一节点的DNS,比如Management的),可以调整命令为:

aws fsx describe-storage-virtual-machines --query 'StorageVirtualMachines[*].{"DNS": Endpoints.Management.DNSName, "SVM": Name, "Management IpAddresses": join(", ", Endpoints.Management.IpAddresses), "Nfs IpAddresses": join(", ", Endpoints.Nfs.IpAddresses), "Iscsi IpAddresses": join(", ", Endpoints.Iscsi.IpAddresses)}' --output table

命令说明

  • join(", ", <数组字段>):将IP数组转为逗号加空格分隔的字符串,适配表格展示需求
  • Endpoints.Management.IpAddresses:正确访问嵌套在Endpoints下的Management节点IP列表
  • --output table:指定输出格式为表格

内容的提问来源于stack exchange,提问作者user2023

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.19 21:15:36