2015年7月21日火曜日

Azure LogicApps で ApiApps を使うまで

少し前に CLR/H with Windows 女子部・JAZUG・JAWSUG な勉強会にて LT した、Azure LogicApps で遊ぼうな話題ですが、ある程度動かすまでできたので、そこに至るまでの手順をまとめておきます。

環境の構築はスルーしますので、それなりな環境を事前に作っておいてください。

サンプルで作っていたのは Twitter 関係なので、それなりなライブラリを利用するとかいろいろして API を作成します。

   1: public IEnumerable<ResponseTweet> Get()
   2:  {
   3:      (new Credentials()).CreateCredentials();
   4:  
   5:      var tweets = Timeline.GetHomeTimeline(100);
   6:      var res = new List<ResponseTweet>();
   7:      tweets
   8:          .ToList().ForEach(x => res.Add(new ResponseTweet()
   9:          {
  10:              TweetText = x.Text,
  11:              UserAccount = x.CreatedBy.UserIdentifier.ScreenName,
  12:              ID = x.Id
  13:          }));
  14:      return res;
  15:  }

例えばこんな感じで。

作成出来たらテストなのですが、今回は Debug/Release で挙動変わるとかもないので、通常通りローカルでテスト実行も可能ですが、本来であれば Azure 環境にデプロイした後にテストすることになるかと思います。

その場合は、Debug でデプロイした後に VS から接続してテストすることになります。

image

サーバーエクスプローラからは Azure 環境に直接接続するメニューが利用できますので、これを使って Debug デプロイしたものに対して接続します。

接続したら実際に実行するのですが、実行には SwaggerUI を利用します。

image

デバッグでもリリースでも、デプロイした後には IE なりブラウザが表示されることと思います。その際のアドレス末尾に /swagger/ と付与することで、Swagger UI が利用できます。この画面から、テストしたい API を選択、値を設定し実行(Try it OUT!)をクリックするとデバッグ実行が行われ、ブレークポイントをたててあれば VS に制御が戻ってきますのでデバッグすることが可能です。

ただし、ここでデバッグできるのは APIApps の中身についてのみで、返却した結果が LogicApps に戻されてからの動作はデバッグできないので注意してください。

と、いうのも現在謎挙動が一つあり、
「APIApps に対してマルチバイトな値を渡した場合、結果が返却されない」
というものがあります。

この確認方法としては、Azure Preview Portal から LogicApps の履歴を確認することになります。

image

実行された LogicApps はこのような形で実行された各回の履歴を参照できます。真ん中に表示されているのが、各 Step 毎の成否で、確認したい Step をクリックすると右端のように個別情報が追加表示されます。

この中で INPUTS LINK から確認できるのが、APIApps に渡された情報で OUTPUTS LINK から確認できるのが、APIApps から戻されている値となります。

image

正常な場合はこのように body 部に結果が設定されているのが確認できるのですが

image

謎挙動時はこのように body 部は空の状態となり、以後のロジックへは何も渡せずに Skip されてしまいます。

この部分の挙動は謎ですが、パラメータでシングルバイトな文字のみ渡していると問題なく動作しているので一応は LogicApps で APIApps を利用することが可能です。

0 件のコメント:

コメントを投稿