エラー処理を含むAzure関数(PowerShell)があります。エラーが発生した場合は、私はいくつかの簡単なアクションを実行し、次に実行を停止したいと思いますが、これは機能しません。 PowerShellはexit 1
コマンドを無視しており、実行を継続しています。ローカルでテストするときexit 1
作品は、それは私が、私はこの問題を参照してくださいAzureの機能として、それを実行したときのみだとAzure 'exit'コマンドを無視して関数を実行する
try{
$metrics = Get-AzureMetrics -BearerToken $bearer_token -SubscriptionId $env:HC_SubscriptionId -ResourceGroup $env:HC_ResourceGroup -ResourceType $env:HC_ResourceType -ResourceName $env:HC_ResourceName
} catch {
$failure = $_.Exception.Message
Write-Output "[ERROR] Failed to GET metrics from Azure Monitor. $failure"
Invoke-LogToSplunk -EventHost "bvt-processevnts" -Source $env:HealthCheckFunctionName -Message "Failed to GET metrics from Azure Monitor. $failure" -Severity "ERROR" -SplunkUri $env:SplunkUrl -AccessToken $env:SplunkToken | Out-Null
exit 1
}
注意。私もReturn
とBreak
を試しましたが、それらのコマンドも無視されます。
私は$error_occurred = $true
でexit 1
を交換すると考えられ、その後、(下記参照)if
文で進行コマンドを入れ子にしました。しかし、将来的にはAzure機能を表示/編集する必要があるかもしれないチーム内では、長期的に管理するのが難しく、チームの他の人にはあまり明確ではないので、可能ならばこれを避けたい。
if (! ($error_occurred)) {
# Other commands
}
私の質問は(うまくいけば)簡単です。 Azure関数に実行を停止させる方法を教えてください。
ありがとうございました。私は何か類似していると考えていました。しかし、私はむしろ実行を止めることができます。だから、あそこにはAzure関数に準拠した方法があります。 –
私は自分の答えを変更しました。 Exitステートメントがtry、catchの内部にあるために動作していないのだろうかと思います。おそらく、私の2番目のコードが役に立つでしょう。 –
良い叫び声は、実際に実行を強制的に停止します。唯一の問題は今でも 'exit 1'でもあり、関数Appはまだ200を返し、成功を記録します。私はそこにあると思いますが、私は200を返さないように私のアプローチを変えなければなりません... –