2016年3月12日土曜日

Azure LogicApps で外部 HTTP サービスを呼び出す

Azure LogicApps は既存サービスを色々組み合わせることで、比較的楽に目的を達成するアプリを作成することができますが、その際に色々と気を付けなくてはならない点があります。

外部サービスを呼び出すためのコネクタは HTTP コネクタか HTTP + swagger コネクタになります。swagger による API 設定がないサービスの場合は HTTP コネクタを利用することになります。

HTTP コネクタでは、通常の HTTP 呼出しを行いますので、サービスの呼出し以外にも Web サイトの取得など、HTTP アクセス全般が可能となっています。

image

このように、HTTP アクセス時の動詞指定や、ヘッダ、ボディに設定する情報を記載できるようになっています。もちろんここでは、ここまでに利用しているコネクタが提供している値を利用できますので、上記の例のようにTwitter Connector が提供する値をそのまま利用することも可能ですし、編集して渡すことも可能です。

image

対して swagger が存在する場合は HTTP + swagger コネクタを利用します。こちらの場合は、まず提供されている swagger doc のアドレスを指定します。ですが、ここには一つ注意する点があります。

昨今のセキュリティ事情もあり、API は呼び出し可能なアドレスを定義する CORS というものがあるのですが、そこに LogicApps の呼び出し元となるアドレスを指定する必要があります。ですが、このアドレスは Azure App Services を良く知っている人でなければ探すことすらできないという代物で、私は見つけられませんでした。

特に Azure APIApps として同じサブスクリプションに作成しているものであっても、この CORS 設定は必要となっているので注意が必要です。

image

そこで教えてくれたのは、われらがしばやん先生!さすがこのあたりの挙動についても、すぐ調べられることができるあたり、さすがです!このアドレスを CORS として設定することで、LogicApps からの呼出しに応答できるようになります。

image

無事に swagger で定義された内容を取得できると、コネクタの表示が変わり、定義にそった入力欄が表示されます。ここで値を記述、または指定することで API に対して値を受け渡すことが可能です。

image

LogicApps 上でコネクタを選択する際、同じサブスクリプションにある APIApps は選択しやすいように、「Show APIs for Services in my subscription」を選ぶことで自分がアップしているもののみに、選択肢を限定することができます。

image

このような形でコネクタを利用することで、外部サービスや、同じサブスクリプションに用意した Azure ApiApps を呼び出すことが可能です。

0 件のコメント:

コメントを投稿