Имена тегов экземпляра AWS ec2 Powershell - PullRequest
0 голосов
/ 24 сентября 2018

Я пытаюсь получить идентификатор тома экземпляра EC2 на основе буквы тега, что я могу сделать хорошо, но затем я хочу получить тег с именем name, который является описанием экземпляра EC2, чтобы я мог тогдасоздайте моментальный снимок на основе идентификатора тома и присвойте ему описание экземпляра EC2

#gets current date
$backupDate = Get-Date -f 'yyyy-MM-dd'

#Retrieve all volumes that should be backed up based on the Key called Backup with the Value of D
$backupVolumes = Get-Ec2Volume -ProfileName qa | ? { $.Tags.Key -eq "Backup" -and $.Tags.Value -eq "D" } | select -expand VolumeId

#This gets all instances running and lists them
$instanceName = Get-EC2Tag -ProfileName qa | ? { $.ResourceType -eq 'instance' -and $.Key -eq 'Name'}

#Backup each volume and apply tag information to the volume and snapshot
Foreach ($backupVolume in $backupVolumes)
{
    $snapshot = New-Ec2snapshot -ProfileName qa -VolumeId $backupvolume -Description "Backup for $instanceName - $backupDate"
}

Выше я пытаюсь запустить выше, поэтому первая строка захватывает volumeid на основе значения тега Dзатем вторая строка захватывает имя экземпляра, но я хочу, чтобы оно получало только имя экземпляра на основе указанного идентификатора тома, поэтому я могу передать его в цикл Foreach и установить -Description

1 Ответ

0 голосов
/ 24 сентября 2018

Код для получения тега Name из экземпляра должен находиться внутри цикла, затем он получает тег, связанный с каждым томом:

Я также изменил способ фильтрациииспользование -Filter вместо where более эффективно, так как оно возвращает отфильтрованные данные напрямую.

$backupDate = Get-Date -f 'yyyy-MM-dd'
$backupVolumes = Get-Ec2Volume -Filter @{ Name='tag:Backup';Value='D'}

foreach ($backupVolume in $backupVolumes) {
    $instanceId = $backupVolume.Attachment.instanceid
    $volumeId = $backupvolume.VolumeId
    $instanceName = Get-EC2Tag -Filter @{ Name='resource-id';Value=$instanceid} | Where-Object Key -EQ Name | Select-Object -ExpandProperty Value

    New-EC2Snapshot -VolumeId $volumeId -Description "Backup for $instanceName - $backupDate" -WhatIf
}

Примечание: вам нужно будет добавить ProfileName обратно туда, где это необходимо, и удалить WhatIf так как это необходимо только для проверки кода.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...