当资源组上有删除锁时,如何使用 Powershell 停止 Azure 数据工厂的存储事件触发器?
Posted
技术标签:
【中文标题】当资源组上有删除锁时,如何使用 Powershell 停止 Azure 数据工厂的存储事件触发器?【英文标题】:How to stop a Storage Event Trigger of Azure Data Factory using Powershell when there is a Delete lock on the Resource group? 【发布时间】:2022-01-23 00:47:56 【问题描述】:我想在使用 ARM 部署/Azure DevOps 对工厂进行修改之前停止数据工厂上的存储事件触发器。我的资源组上有一个删除锁,当我尝试使用 powershell (Stop-AzDataFactoryV2Trigger) 停止触发器时导致以下错误:
Error Code: BadRequest
Error Message: The scope '/subscriptions/XXX/resourceGroups/XXX/providers/Microsoft.Storage/storageAccounts/XXX/providers/Microsoft.EventGrid/eventSubscriptions/XXX'
cannot perform delete operation because following scope(s) are locked: '/subscriptions/XXX/resourceGroups/XXX'. Please remove the lock and try again.
有什么方法可以让我的 ADF 部署无需移除此删除锁?
【问题讨论】:
【参考方案1】:以下示例脚本可用于在部署前停止触发器。
if ($predeployment -eq $true)
#Stop all triggers
Write-Host "Stopping deployed triggers`n"
$triggersToStop | ForEach-Object
if ($_.TriggerType -eq "BlobEventsTrigger" -or $_.TriggerType -eq "CustomEventsTrigger")
Write-Host "Unsubscribing" $_.Name "from events"
$status = Remove-AzDataFactoryV2TriggerSubscription -ResourceGroupName $ResourceGroupName -DataFactoryName $DataFactoryName -Name $_.Name
while ($status.Status -ne "Disabled")
Start-Sleep -s 15
$status = Get-AzDataFactoryV2TriggerSubscriptionStatus -ResourceGroupName $ResourceGroupName -DataFactoryName $DataFactoryName -Name $_.Name
Write-Host "Stopping trigger" $_.Name
Stop-AzDataFactoryV2Trigger -ResourceGroupName $ResourceGroupName -DataFactoryName $DataFactoryName -Name $_.Name -Force
如需了解更多信息,请关注官方文档中的Pre- and Post-deployment script。
【讨论】:
对我的情况没有帮助,因为资源组级别有一个删除锁。停止存储事件触发器本质上是删除事件订阅,而删除锁不允许这种情况发生。感谢您提出的答案,但也感谢任何其他解决方案。【参考方案2】:经过一番研究和挖掘,我发现这个问题的直接答案是当整个资源组上存在删除锁时,无法在数据工厂上启动/停止存储事件触发器. 这是因为每当启动或停止存储事件触发器时,都会在资源组中创建和删除事件订阅(它是一种资源),但如果设置了删除锁,则不会发生这种删除。
但是,解决此要求的解决方法很少:
-
在资源级别而不是资源级别具有删除锁
组级别。
将数据工厂和存储帐户移动到不同的资源组
没有删除锁。
在部署 ADF 之前删除“删除锁”并在之后重新创建
部署。为此,用于执行部署的服务主体
应该具有更新/删除锁所需的权限。
如果有人对此问题有直接的解决方案,我很乐意接受它作为答案。谢谢。
【讨论】:
以上是关于当资源组上有删除锁时,如何使用 Powershell 停止 Azure 数据工厂的存储事件触发器?的主要内容,如果未能解决你的问题,请参考以下文章
如何在不卸载powershell的情况下,有效禁用/启用powershel
当作者试图进入写锁时如何避免阻塞 ReaderWriterLockSlim 读者