Получить время создания группы ресурсов Azure

Намерение: узнайте, когда группа ресурсов была создана впервые. Организация-клиент хочет отчитываться и действовать в соответствии с отметками времени создания группы ресурсов. Это будет использоваться в сценариях автоматизации.

К сожалению, для групп ресурсов нет свойства метка времени создания. Использование Get-AzureRmResourceGroup возвращает такие объекты:

ResourceGroupName : eastus2-something-rg
Location          : eastus2
ProvisioningState : Succeeded
Tags              :
ResourceId        : /subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/eastus2-something-rg

Эта функция имеет был запрошен, но не набрал много голосов.

Как получить метку времени создания для группы ресурсов?


person rcabr    schedule 01.06.2018    source источник


Ответы (2)


Действительно, группы ресурсов не имеют отметки времени создания.

Но операции управления записываются в журналы, и эти журналы можно получить с помощью команды Get-AzureRmLog.

Вот инструкция PowerShell, которая просматривает группы ресурсов подписки и находит те, которые были созданы n или более дней назад (из это суть):

$days = 7
$pointInTime = [DateTime]::Now.AddDays(-$days);
$horizon = $pointInTime.AddDays(-$days);

"===Removing resource groups created between $horizon and $pointInTime==="

# Get potential log entries
$logs = @()
$logs += Get-AzureRmLog -StartTime $horizon -EndTime $pointInTime -Status "Succeeded" -ResourceProvider "Microsoft.Resources" -WarningAction "SilentlyContinue" `
    | Select-Object ResourceGroupName, ResourceId, @{Name="EventNameValue"; Expression={$_.EventName.Value}}, @{Name="OperationNameValue"; Expression={$_.OperationName.Value}}, EventTimestamp, @{Name="HttpVerb"; Expression={$_.HttpRequest.Method}} `
    | Where-Object -FilterScript {$_.EventNameValue -EQ "EndRequest" -and $_.OperationNameValue -eq "Microsoft.Resources/subscriptions/resourcegroups/write" -and $_.HttpVerb -eq "PUT"} `
    | Select-Object -ExpandProperty ResourceGroupName -Unique

"Expired resource groups (created BEFORE $pointInTime) -> $logs"

# Get recent log entries to remove from the list
$nologs = @()
$nologs += Get-AzureRmLog -StartTime $pointInTime -Status "Succeeded" -ResourceProvider "Microsoft.Resources" -WarningAction "SilentlyContinue" `
| Select-Object ResourceGroupName, ResourceId, @{Name="EventNameValue"; Expression={$_.EventName.Value}}, @{Name="OperationNameValue"; Expression={$_.OperationName.Value}}, EventTimestamp, @{Name="HttpVerb"; Expression={$_.HttpRequest.Method}} `
| Where-Object -FilterScript {$_.EventNameValue -EQ "EndRequest" -and $_.OperationNameValue -eq "Microsoft.Resources/subscriptions/resourcegroups/write" -and $_.HttpVerb -eq "PUT"} `
| Select-Object -ExpandProperty ResourceGroupName -Unique

"Resource groups created AFTER $pointInTime -> $nologs"

# remove any that were found to have recent creation
$rgs = $logs | Where-Object {$nologs -notcontains $_} | Select-Object @{Name="ResourceGroupName"; Expression={$_}} | Get-AzureRmResourceGroup -ErrorAction "SilentlyContinue"

"Existing resource groups to delete -> $($rgs | Select-Object -ExpandProperty ResourceGroupName)"

$rgs | Remove-AzureRmResourceGroup -Force -AsJob

Он возвращает список заданий, которые выполняются для удаления групп ресурсов (это может занять некоторое время в зависимости от их содержимого).

person rcabr    schedule 01.06.2018
comment
Журналы аудита Azure содержат данные только за 90 дней. Есть ли способ получить данные (например, время создания RG) для RG, созданного где-то в прошлом году ?? - person Manjunath Rao; 04.06.2018
comment
Вы можете запросить развертывания. Группы RG не записываются в журнал развертывания, но, возможно, вы можете использовать самый ранний ресурс, развернутый в группе RG. Кроме того, развертывания можно удалить, так что вы тоже рискуете. - person rcabr; 04.06.2018

Эта информация доступна через ARM, но вы должны вызывать API напрямую, а не с помощью командлетов PS Get-AzureRmResourceGroup (или Get-AzResourceGroup).

См. Удаление всех ресурсов в группе ресурсов Azure, возраст которых превышает x дней

По сути, вам нужно добавить $ expand = createdTime в параметры запроса, то есть:

GET https://management.azure.com/subscriptions/1237f4d2-3dce-4b96-ad95-677f764e7123/resourcegroups?api-version=2019-08-01&%24expand=createdTime
person kwill    schedule 12.10.2020