[英]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.