Amazon web services Aws cli命令替换

Amazon web services Aws cli命令替换,amazon-web-services,amazon-ec2,aws-cli,Amazon Web Services,Amazon Ec2,Aws Cli,我想列出卷的快照,但在输出中我还想看到该卷的名称(我是指标记)。 到目前为止,我正在使用: aws ec2 describe-snapshots 在回答中,我得到了如下信息: Snapshots: [ { "Description": "some description", "Encrypted": false, "OwnerId": "someownerid", "Progress": "100%", "

我想列出卷的快照,但在输出中我还想看到该卷的名称(我是指标记)。 到目前为止,我正在使用:

aws ec2 describe-snapshots
在回答中,我得到了如下信息:

Snapshots: [
    {
        "Description": "some description",
        "Encrypted": false,
        "OwnerId": "someownerid",
        "Progress": "100%",
        "SnapshotId": "snap-example",
        "StartTime": "start time",
        "State": "completed",
        "VolumeId": "volume id",
        "VolumeSize": 32
    }
]
但我希望输出中还有一个卷名:

Snapshots: [
    {
        "Description": "some description",
        "Encrypted": false,
        "OwnerId": "someownerid",
        "Progress": "100%",
        "SnapshotId": "snap-example",
        "StartTime": "start time",
        "State": "completed",
        "VolumeId": "volume id",
        "VolumeSize": 32,
        "VolumeName": "Volume Name" #additional key:val
    }
]

如果您指的是snapshot的name标记,那么可以使用aws sdk编写一个简单的python或ruby脚本。例如,列出快照id及其名称标记值的ruby代码如下所示:

require 'aws-sdk'

# provide region and credentials in parameter 
ec2 = Aws::EC2::Client.new

# paginate if you have a big list
resp = ec2.describe_snapshots

# iterate snapshots
resp.snapshots.each do |snapshot|
    # iterate tags and print if it has a name tag.
    snapshot.tags.each do |tag|
        # print whatever is required/available in the response structure
        puts "#{snapshot.snapshot_id} has the name tag with value #{tag.value}" if tag.key.casecmp? 'Name'
    end
end 

请参阅相应的语言api文档,以了解有关sdk和api调用用法的更多信息。请确保在使用之前设置sdk,它会根据您选择的语言而有所不同。例如,概述了设置ruby sdk的步骤。您可能还希望签出上述代码中使用的API引用

如果您指的是snapshot的name标记,那么可以使用aws sdk编写简单的python或ruby脚本。例如,列出快照id及其名称标记值的ruby代码如下所示:

require 'aws-sdk'

# provide region and credentials in parameter 
ec2 = Aws::EC2::Client.new

# paginate if you have a big list
resp = ec2.describe_snapshots

# iterate snapshots
resp.snapshots.each do |snapshot|
    # iterate tags and print if it has a name tag.
    snapshot.tags.each do |tag|
        # print whatever is required/available in the response structure
        puts "#{snapshot.snapshot_id} has the name tag with value #{tag.value}" if tag.key.casecmp? 'Name'
    end
end 

请参阅相应的语言api文档,以了解有关sdk和api调用用法的更多信息。请确保在使用之前设置sdk,它会根据您选择的语言而有所不同。例如,概述了设置ruby sdk的步骤。您可能还希望签出上述代码中使用的API引用

aws ec2对快照进行了描述,如果快照存在的话。 类似于此:

{
    "Description": "This snapshot is created by the AWS Backup service.",
    "Tags": [
        {
            "Value": "On",
            "Key": "Backup"
        },
        {
            "Value": "Jenkins_Machine",
            "Key": "Name"
        },
        {
            "Value": "*********",
            "Key": "aws:backup:source-resource"
        }
    ],
    "Encrypted": false,
    "VolumeId": "vol-*****",
    "State": "completed",
    "VolumeSize": 250,
    "StartTime": "2019-08-01T11:29:31.654Z",
    "Progress": "100%",
    "OwnerId": "******",
    "SnapshotId": "snap-******"
}
要查看名称(假设快照中有名称),请执行以下操作:

这将为您提供如下输出:

[
    {
        "State": "completed", 
        "Description": "This snapshot is created by the AWS Backup service.", 
        "Name": "Jenkins_Machine"
    }
]
字段被缩减,但您可以在查询结束时添加所需的字段,如下面的
…State:State,VolumeId:VolumeId}
,其中我新添加了VolumeId

如果删除
--snapshot id
参数,上述命令应返回所有快照,但是对于没有名称标记的快照,将打印
null

编辑: 正如@krishna_mee2004所指出的,OP可能正在寻找特定卷的快照。如果是这种情况,您仍然可以使用此命令执行此操作。过滤器选项可用于根据卷ID进行过滤


aws ec2描述快照--过滤器名称=卷id,值=vol-****--查询“快照[*]”。{Description:Description,Name:Tags[?Key=`Name`].Value |[0],State:State,VolumeId:VolumeId}
aws ec2描述快照是否存在。 类似于此:

{
    "Description": "This snapshot is created by the AWS Backup service.",
    "Tags": [
        {
            "Value": "On",
            "Key": "Backup"
        },
        {
            "Value": "Jenkins_Machine",
            "Key": "Name"
        },
        {
            "Value": "*********",
            "Key": "aws:backup:source-resource"
        }
    ],
    "Encrypted": false,
    "VolumeId": "vol-*****",
    "State": "completed",
    "VolumeSize": 250,
    "StartTime": "2019-08-01T11:29:31.654Z",
    "Progress": "100%",
    "OwnerId": "******",
    "SnapshotId": "snap-******"
}
要查看名称(假设快照中有名称),请执行以下操作:

这将为您提供如下输出:

[
    {
        "State": "completed", 
        "Description": "This snapshot is created by the AWS Backup service.", 
        "Name": "Jenkins_Machine"
    }
]
字段被缩减,但您可以在查询结束时添加所需的字段,如下面的
…State:State,VolumeId:VolumeId}
,其中我新添加了VolumeId

如果删除
--snapshot id
参数,上述命令应返回所有快照,但是对于没有名称标记的快照,将打印
null

编辑: 正如@krishna_mee2004所指出的,OP可能正在寻找特定卷的快照。如果是这种情况,您仍然可以使用此命令执行此操作。过滤器选项可用于根据卷ID进行过滤


aws ec2描述快照--过滤器名称=卷id,值=vol-****--查询'快照[*.{Description:Description,Name:Tags[?Key=`Name`].Value |[0],State:State,VolumeId:VolumeId}'

没有
VolumeName
属性。您是指卷的
Name
标记吗?您必须为每个快照合并调用以下内容的结果:
aws ec2 descripe tags--filters Name=resource id,Values=snap-1234
。或者考虑在Python中编写一个小脚本。jARMOD过滤器将只给匹配值的快照提供结果。而实际的CLI输出包括标记,因此请参见下面我的答案,以了解如何提取这些标记。@Yogesh\u D您是对的,谢谢。我在
描述快照的输出中看到零个标记,并假设它们没有被报告。没有
VolumeName
属性。您是指卷的
Name
标记吗?您必须为每个快照合并调用以下内容的结果:
aws ec2 descripe tags--filters Name=resource id,Values=snap-1234
。或者考虑在Python中编写一个小脚本。jARMOD过滤器将只给匹配值的快照提供结果。而实际的CLI输出包括标记,因此请参见下面我的答案,以了解如何提取这些标记。@Yogesh\u D您是对的,谢谢。我在我的
描述快照的输出中看到零个标记,并假设它们没有被报告。我相信他们想要创建快照的卷的名称。在这种情况下,至少需要2个命令(描述快照和描述卷)才能获取所有信息。如果卷不存在,脚本应该能够工作。更简单的方法是用Python或NodeJS之类的编程语言编写脚本。@krishna_mee2004,重读这个问题也许你是对的。让我更新一下答案,您仍然可以使用一个命令来执行此操作。我相信他们想要创建快照的卷的名称。在这种情况下,至少需要2个命令(描述快照和描述卷)才能获取所有信息。如果卷不存在,脚本应该能够工作。更简单的方法是用Python或NodeJS之类的编程语言编写脚本。@krishna_mee2004,重读这个问题也许你是对的。让我更新答案,您仍然可以使用一个命令来完成此操作。