簡體   English   中英

AWS CLI命令替換

[英]Aws cli command substitution

我想列出卷的快照,但是在輸出中,我還要看到該卷的名稱(我的意思是標簽)。 到目前為止,我正在使用:

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
    }
]

如果您指的是快照的名稱標簽,則可以使用aws sdk編寫一個簡單的python或ruby腳本。 例如,一個列出快照ID及其名稱標簽值的紅寶石代碼如下所示:

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的步驟。 您可能還需要檢出上述代碼使用的describe_snaphots的API參考。

如果存在快照aws ec2 describe-snapshots確實會返回 aws ec2 describe-snapshots上的標簽 類似於以下內容:

{
    "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-******"
}

為了能夠看到名稱(假設您的快照中有快照),請執行以下操作:

aws ec2 describe-snapshots --snapshot-id snap-**** --query 'Snapshots[*].{Description:Description,Name:Tags[?Key==`Name`].Value|[0],State:State}'

這應該給你這樣的輸出:

[
    {
        "State": "completed", 
        "Description": "This snapshot is created by the AWS Backup service.", 
        "Name": "Jenkins_Machine"
    }
]

字段已減少,但是您可以在查詢末尾添加所需的字段,例如...State:State,VolumeId:VolumeId} ,在其中我新添加了VolumeId。

如果刪除--snapshot-id參數,則上面的命令應返回所有快照,但是對於沒有Name標簽的快照將顯示null

編輯:正如@ krishna_mee2004所指出的,OP可能正在尋找特定卷的快照。 如果是這種情況,您仍然可以使用此命令進行操作。 過濾器選項可用於基於卷ID進行過濾。

aws ec2 describe-snapshots --filters Name=volume-id,Values=vol-***** --query 'Snapshots[*].{Description:Description,Name:Tags[?Key==`Name`].Value|[0],State:State,VolumeId:VolumeId}'

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM