Azure Storage BlobをMicrosoft CDNで使っている際に、Blobが更新されたらCDNをパージするようにしたい。
Azure Automationを作成する
作成したAzureAutomationにRunbookを作成する
作成したRunbookにWebhookを追加する
ストレージアカウント(v2)のイベントサブスクリプションでRunbookのWebhook URLに通知する
Runbookには以下のスクリプトをかく
<#
.DESCRIPTION
CDNをパージする
.NOTES
AUTHOR: iwate
LASTEDIT: Nov 11, 2024
#>
param(
[Parameter(Mandatory = $false)]
[object] $WebhookData
)
$Prefix = "https://<storage_account_name>.blob.core.windows.net/"
Import-Module -Name Az.Cdn
if ($WebhookData) {
if (-not $WebhookData.RequestBody) {
$WebhookData = (ConvertFrom-Json -InputObject $WebhookData)
}
$Payload = ConvertFrom-Json -InputObject $WebhookData.RequestBody
$ContentUrl = $Payload.data.url
if ($ContentUrl.StartsWith($Prefix)) {
$ContentPath = $ContentUrl.Substring($Prefix.Length - 1)
try
{
"Logging in to Azure..."
Connect-AzAccount -Identity
}
catch {
Write-Error -Message $_.Exception
throw $_.Exception
}
Clear-AzCdnEndpointContent -NoWait -EndpointName "<endpoint name>" -ProfileName "<profile name>" -ResourceGroupName "<rg name>" -SubscriptionId "<subscription id>" -ContentPath $ContentPath
}
}
参考文献
https://learn.microsoft.com/ja-jp/azure/automation/automation-webhooks?tabs=portal