2018年1月19日金曜日

LogicFlow のエラー処理あれこれ

LogicFlow に限らずエラー処理はほとんどの場合必要です。たとえエラー発生時に何も処理を行う必要がなくとも、エラーが起きたことを知る必要はあります。LogicFlow でどういった対応がとれるかをまとめてみました。

現在 LogicFlow で実施できるエラー処理は次のパターンです。

  • 実行条件を「エラー時」としたアクションの設定
  • アラートルールで Action Failed を指定した監視

1:エラー時に実行するアクションの設定

LogicFlow で利用するアクションは、実行条件の設定を行うことが可能です。「成功時」「失敗時」「スキップ時」「タイムアウト時」の 4 種類を組み合わせて指定が可能で、エラー処理を行う場合は「失敗時」を含むことになります。

image

この実行条件は、直前のアクションに対して判定を行いますので、処理のどこかでエラーが発生した場合、のようにはそのままだと利用できません。このような場合には「スコープ」を使って、複数のアクションを一つのアクションにまとめてしまう必要があります。

image

上記の例だと、HTTP アクション一つしかないのでちょっとアレですが、実際にはここに複数のアクションを設定し、一つのスコープに含ませる形をとります。

image

通常時、エラー発生時、など同時には実行しないケースがある場合は、並列処理としてわけてしまうのも一つの手だと思います。

まとめると、この方法は「エラーが発生した際に同時に何かしらの処理が必要な場合」に利用するのが適していると思います。単純にログ出力とかではなく、1アクションに対して何らかのリカバリ的な処理が必要なケースとかでしょうか。

2:アラートルールで Action Failed を指定

もう一つの方法は、エラー処理というとちょっとニュアンスが異なります。LogicApps 限定となりますが、Azure の機能として指定した条件に合致した場合にアラートを発行する、という機能がありそれを利用した方法となります。

image

アラートルールを選択後に、メトリックアラートの追加をクリックします。

image

このような表示がされて、アラートを発生させる条件を設定していきます。

image

条件となるのは「メトリック」「条件」「閾値」です。ここで Action Failed を指定すると「何かしらのアクションが失敗した場合」にアラートを発生させることができます。

アラートが発生した場合にどうするか、については、画面下部の「Webhook」か「アクションの実行」を利用します。Webhook でアラート発生時に特定の API を呼び出したり、アクションの実行で特定の LogicApps を呼び出す指定が可能です。

実際にどのようなデータが流れてくるか、ですがキャプチャしたサンプルを張り付けておきます。

image

このなかで Description として「しっぱいしました」という日本語が記載されていますが、これはアラートルールの「説明」欄に記載したものが、そのまま連携されてきます。Condition の値も、アラートルールの条件で設定したものが連携されています。そのため細かいエラー内容を把握するという使い方はできません。LogicApps で何かしらのエラーが発生したのを検知するまでは可能です。

まとめると、アラートルールでのエラー対応は、「一つの LogicApps でエラーが発生したかを検知」するもので、細かいエラー対応ではなく、全体を通してリカバリを行うなど先の実行条件よりも大きなくくりでエラー対応を行う場合に適していると思います。

プログラム言語を利用した開発では、Try~Catch などで行うものと、バッチ処理が失敗したときのものなど、場面場面によってエラー処理も様々あると思いますが、LogicFlow においても同様に対象となる処理の粒度によって方法を使い分けるのがよさそうです。

0 件のコメント:

コメントを投稿