Private/Get-AWSDiskData.ps1

function Get-AWSDiskData {
    [CmdletBinding()]
    param(
        [string]$Region
    )

    Assert-CommandAvailable `
        -CommandName 'Get-EC2Volume' `
        -InstallHint "Install the AWS.Tools.EC2 module with: Install-Module AWS.Tools.EC2 -Scope CurrentUser"

    $volumes = if ([string]::IsNullOrWhiteSpace($Region)) {
        Get-EC2Volume -ErrorAction Stop
    } else {
        Get-EC2Volume -Region $Region -ErrorAction Stop
    }

    foreach ($volume in $volumes) {
        $nameTag = $volume.Tags |
            Where-Object { $_.Key -eq 'Name' } |
            Select-Object -First 1 -ExpandProperty Value

        $resolvedName = if ([string]::IsNullOrWhiteSpace($nameTag)) {
            $volume.VolumeId
        } else {
            $nameTag
        }

        $attachedInstanceId = if ($volume.Attachments -and $volume.Attachments.Count -gt 0) {
            $volume.Attachments[0].InstanceId
        } else {
            $null
        }

        $params = @{
            Name     = $resolvedName
            Provider = 'AWS'
            Region   = $volume.AvailabilityZone
            Status   = $volume.State.Value
            Size     = "$($volume.Size) GB"
            Metadata = @{
                VolumeId   = $volume.VolumeId
                VolumeType = $volume.VolumeType.Value
                Encrypted  = $volume.Encrypted
                InstanceId = $attachedInstanceId
            }
        }

        if ($volume.CreateTime) { $params.CreatedAt = $volume.CreateTime }

        ConvertTo-CloudRecord @params
    }
}