首页 > 解决方案 > 导出有关 AWS 卷的信息

问题描述

我想将 EC2 控制台的卷部分中显示的列表导出为 CSV(或至少是文本),并且我正在尝试使用 CLI。

我无法使用Filter Expression正确获取标签信息:

me@home:/$ aws ec2 describe-volumes --query 'Volumes[*].Tags[?Key=='Name'].Value'
[
    [],
    [],
    [],
//...
    []
]

在这里,我希望有一个列表,其中有时包含标签的值,Name用于拥有它的列和[]那些没有的列。

可以肯定的是,我检查了并且确实有带有该键的标签(但并非总是如此):

me@home:/$ aws ec2 describe-volumes --query 'Volumes[*].Tags[*].Key'
[
    [
        "kubernetes.io/created-for/pvc/name",
        "Team",
        "env",
        "kubernetes.io/created-for/pvc/namespace",
        "Name",
        "kubernetes.io/cluster/DW",
        "Software",
        "Env",
        "kubernetes.io/created-for/pv/name"
    ],
    [
        "env",
        "Software",
        "eks:nodegroup-name",
        "Team",
        "eks:cluster-name"
    ],
    [
        "Name",
        "Software",
        "Team",
        "kubernetes.io/created-for/pvc/name",
        "kubernetes.io/cluster/DW",
        "kubernetes.io/created-for/pv/name",
        "env",
        "Env",
        "kubernetes.io/created-for/pvc/namespace"
    ],
//...
]

那么,我怎样才能正确获取这些信息呢?

标签: amazon-web-servicesaws-cliamazon-ebsjmespath

解决方案


一件事是你正在用你的 JMESPath 表达式中的那些打破 shell 引号。

您应该使用文字表达式,而不是

aws ec2 describe-volumes --query 'Volumes[*].Tags[?Key==`Name`].Value'

或对 shellquery选项值使用双引号

aws ec2 describe-volumes --query "Volumes[*].Tags[?Key=='Name'].Value"

推荐阅读