Azure 逻辑应用程序 - 如何重新启动我的操作失败?

Azure Logic App - How can I re-started my operations failed?

我的 Azure 逻辑应用程序中有很多操作失败。 我看到如果您在 Azure 门户上单击单个操作,您可以重新启动 操作:

是否可以select 所有这些失败的操作,并重新运行一起? 非常感谢大家

如果您想重新提交一个或多个失败、成功或仍然 运行 的逻辑应用程序运行,您可以从运行仪表板批量重新提交逻辑应用程序。

关于如何使用这个功能,你可以参考这篇文章:Monitor logic apps with Azure Monitor logs. Under the tile View logic app run information,你可以找到重新提交的描述。

除了从运行仪表板批量重新提交逻辑应用程序之外,您还可以使用 PowerShell 命令。看看下面的脚本,它可以自动列出失败的逻辑应用运行s识别触发器通过输入 ResourceGroupName 负责操作重新启动应用程序您可以根据需要更改其中的一些位。 (跳过交互并再次重新启动应用程序) 我只是展示它以供理解。

Using: Get-AzLogicApp, Get-AzLogicAppRunHistory , Get-AzLogicAppRunAction, Get-AzLogicAppTrigger and Start-AzLogicApp cmdlets.

使用 Az PowerShell 6.2 模块的脚本:Az.LogicApp [将下面复制到文件,比如重启。ps1 和 运行] 确保您将 $rg 分配给您实际的 AzResourceGroup 名称

$rg = "MyResourceGrp"

#get logic apps
$logicapps = Get-AzLogicApp -ResourceGroupName $rg

Write-Host "logicapps:" -ForegroundColor "Yellow" 
write-output $logicapps.Name

#list all logicapp runs failed
$failedruns = @(foreach($name in $logicapps.Name){

    Get-AzLogicAppRunHistory -ResourceGroupName $rg -Name $name | Where {$_.Status -eq 'Failed'}
   
})

Write-Host "failedruns:" -ForegroundColor "Yellow" 
Write-Output $failedruns.Name | select -Unique
Write-Host "failedruns: LogicAppNames" -ForegroundColor "Yellow" 
Write-Output $failedruns.Workflow.Name | select -Unique

#list all logicappRunsActions failed

foreach($i in $logicapps){

    foreach($y in $failedruns){

        if ($i.Version -eq $y.Workflow.Name) {
            $resultsB = Get-AzLogicAppRunAction -ResourceGroupName $rg -Name $i.Name -RunName $y.Name -FollowNextPageLink | Where {$_.Status -eq 'Failed'}
        }
    }
}


foreach($item in $resultsB){
    Write-Host "Action:" $item.Name " " -NoNewline "Time:" $item.EndTime 
    Write-Output " "
}


#get logicapp triggers

foreach($ii in $logicapps){

    foreach($yy in $failedruns){

        if ($ii.Version -eq $yy.Workflow.Name) {
            $triggers = Get-AzLogicAppTrigger -ResourceGroupName $rg -Name $ii.Name
        }

    
    }
}

Write-Host "triggers:" -ForegroundColor "Yellow" 
Write-Output $triggers.Name

#start logic apps with triggers
Write-Host "Starting logic apps....." -ForegroundColor "green"

foreach($p in $logicapps){

    foreach($tri in $triggers){

        if ($p.Version -eq $triggers.Workflow.Name) {
            Start-AzLogicApp -ResourceGroupName $rg -Name $p.Name -TriggerName $tri.Name
        }
    }
}


$verify = Read-Host "Verify ruuning app? y or n"

if ($verify -eq 'y') {

    $running = @(foreach($name2 in $logicapps.Name){

        Get-AzLogicAppRunHistory -ResourceGroupName $rg -Name $name2 | Where {$_.Status -eq 'Running' -or $_.Status -eq 'Waiting'}
    })
    Write-Host $running
    
}

else {
    Write-Host "Bye!"
}

虽然我的LogicApp又失败了,但是可以看到是脚本及时触发的

注意: 如果您的逻辑应用程序触发器需要输入或操作(与重复或计划不同),请相应地编辑或更改 Start-AzLogicApp 命令以成功执行。

这里我考虑所有逻辑应用程序都已启用(使用 -State Enabled)参数用于 Get-AzLogicApp 命令,如果你想 运行 只有当前启用的应用程序。

示例:Get-AzLogicApp -ResourceGroupName "rg" | where {$_.State -eq 'Enabled'}

2. 您还可以尝试在工作流中对触发器进行高级设置。比如重试策略。

如果由于间歇性问题而失败,您可以指定它以自定义间隔重试。

你可以submit a feedback or Upvote a similar Feedback : ability-to-continue-from-a-particular-point-as-in

参考:help topics for the Logic Apps cmdlets