Slide 1

Slide 1 text

Logic Apps/Flow Overview 2018/02/17 LogicFlow-ja 小尾 智之

Slide 2

Slide 2 text

Self Introduction Attribute1: VB / LogicApps-Flow-PowerApps @twit_ahf Attribute2: 提督 / 殿 / メガネ / クマ / プロレス / ヘルニア tomoyuki.obi http://el.jibun.atmarkit.co.jp/ahf Community: LogicFlow-ja / CLR/H Microsoft MVP for Microsoft Azure(2017.03 ~)

Slide 3

Slide 3 text

https://www.facebook.com/groups/logicflowja/

Slide 4

Slide 4 text

Agenda • LogicApps/Flow/PowerApps とは – LogicFlow 基本機能 – LogicApps と Flow の違い – HybridConnection と OnPremiss DataGateway – Enterprise Integration Pack • LogicFlow の各機能

Slide 5

Slide 5 text

LogicFlow is iPaas

Slide 6

Slide 6 text

iPaas = Integration Platform as a Service

Slide 7

Slide 7 text

> ≧ IFTTT は非常に多くのサービスと連携可能 間に制御を挟まないシンプル構成 IFTTT / Flow / LogicApps Flow / LogicApps はユーザーが制御を挟む余地がある サービス数はまだ限られている 一般ユーザー ITPro

Slide 8

Slide 8 text

Trigger Action Action LogicFlow の構造 発生したイベントをトリガで受け取り 後続のアクションで処理を行う

Slide 9

Slide 9 text

トリガが起動し条件を満たした 場合に限り後続のアクションが 実行される トリガの起動も 1 アクションと してカウントされる LogicFlow のトリガ

Slide 10

Slide 10 text

Plan / License

Slide 11

Slide 11 text

LogicApps 従量課金プラン https://azure.microsoft.com/ja-jp/pricing/details/logic-apps/ Flow とは課金単位が異なる

Slide 12

Slide 12 text

Logic Apps/Flow 仕様と制限 最大実行継続時間 90 日 ストレージリテンション期間 90 日 最小繰り返し時間 1 秒 最大繰り返し間隔 500 日 ForEach レコード数 100,000 Loop Until 回数 5,000 SplitOn 最大数 100,000 ForEach 並列処理数 20 アクション実行数(5分間) 100,000 同時呼出し数 2,500 エンドポイント同時受信数 1,000 エンドポイント読み取り可能呼出し数 60,000 エンドポイント起動可能呼出し数 45,000 ワークフローでのアクション数 250 ワークフロー内部でのネスト数 5 1リージョンでのワークフロー数 1,000 ワークフローごとのトリガ数 10 一つの式での最大文字数 8,192 アクション/トリガ名の文字数 80 コメントの文字数 256 パラメーター数 50 高スループットモード登場

Slide 13

Slide 13 text

1 Action 1 Action 1 Action 1 Flow LogicApps の課金単位 Flow の課金単位

Slide 14

Slide 14 text

Microsoft Flow 料金プラン 1 ユーザー 25 LogicFlow が定義可能 (リクエスト送付で拡張可能) https://flow.microsoft.com/ja-jp/pricing/

Slide 15

Slide 15 text

Flow プランでの機能制限 Premium 系コネクタは Plan1 / 2 でのみ利用可能

Slide 16

Slide 16 text

PowerApps 料金プラン

Slide 17

Slide 17 text

https://powerapps.microsoft.com/ja-jp/communityplan/ PowerApps コミュニティプラン 既にアカウントを所有していても作成可能

Slide 18

Slide 18 text

PowerApps と Flow のライセンス PowerApps ライセンスで作成できる LogicFlow は PowerApps トリガ限定 通常のトリガは Flow ライセンスで作成

Slide 19

Slide 19 text

PowerApps では 選択可能な CDS Flow では 選択できない事も

Slide 20

Slide 20 text

Mobile Application

Slide 21

Slide 21 text

Flow モバイルアプリ Flow ボタンはこのアプリより利用可能

Slide 22

Slide 22 text

Flow Button Trigger ボタンクリックにて LogicFlow が発動

Slide 23

Slide 23 text

PowerApps モバイルアプリ 作成したアプリはメニュー上に ウィジェットとして配置可能

Slide 24

Slide 24 text

PowerApps Studio ブラウザ上または UWPアプリ

Slide 25

Slide 25 text

PowerApps アプリの作成 OneDrive 上の Excel ファイルへ データ登録や参照するアプリなら テンプレートのままでも十分な機能 テンプレートから作成または スクラッチで作成

Slide 26

Slide 26 text

PowerApps アプリの作成 PowerApps Studio 上ではインテリセンスなどが 用意されているので基本的には選択していくだけで 設定が可能 カメラやバーコードスキャナー 画像動画表示など一通りのコントロールを提供

Slide 27

Slide 27 text

Connectors

Slide 28

Slide 28 text

Enterprise Integration SNS Office365 / Dynamics365 Data Connect Web Service Azure Service Online Storage Notification Standard Connecter Cognitive Service Button Approval Batch

Slide 29

Slide 29 text

LogicFlow 基本構造 LogicFlow から呼び出される コネクタは API Management 配下に存在する API Management により リージョンごとの 利用可能・不可能を制御 アクションやトリガが発生した タイミングでコネクタの インスタンスが生成される https://logic-apis-westcentralus.azure-apim.net/apim/staffhub このような感じでコネクタが準備されている

Slide 30

Slide 30 text

LogicFlow 基本コネクタ スケジュール OpenAPI(Swagger) 定義された API 呼出 HTTPS リクエスト RSS FTP/SFTP HTTP/HTTPS WebHook Mail(SendGrid) SMTP 変数 制御 HTTP レスポンス データ操作 PowerApps プッシュ通知 Flow Button HTML-テキスト変換 PowerApps用プッシュ通知

Slide 31

Slide 31 text

条件判断 / Condition IF ~ THEN ~ ELSE(条件分岐) Switch Case(条件多分岐)

Slide 32

Slide 32 text

繰り返し / Loop Do Until ループ ループが一定時間内に終了しない場合に タイムアウトとする場合は ISO 8601 形式でタイムアウト条件を設定

Slide 33

Slide 33 text

繰り返し / Loop ForEach ループ 規定では 20 アクションの並列動作 operationOptions:Sequential で変更可能 デザイナ上だけで ネストしたループも作成可能

Slide 34

Slide 34 text

ブロック化 / Scope 処理のブロック化

Slide 35

Slide 35 text

実行条件の構成 / RunAfter ブロック化した場合は 「ブロック内部の処理が一つでも失敗したら」とい う条件で利用できる 直前のアクションが複数存在する場合は それぞれのアクションに対して条件指定可能

Slide 36

Slide 36 text

並列分岐 / RunAfter(2) デザイナー上から 並列動作させるアクションを直接設定可能 RunAfter 設定を変更し どのコネクタの後に実行するかを 設定している

Slide 37

Slide 37 text

変数/ Variables 初期化を先に実施する必要がある

Slide 38

Slide 38 text

データ操作 / Compose 関数で行っていたものが コネクタ化され簡易に利用可能

Slide 39

Slide 39 text

inputArguments.Select(Function(x) Return New With {Key x.orgArg1, Key x.orgArg2, Key Sum(x.orgArg3)} End Function).ToArray 選択/ Selecct 配列オブジェクトの再定義

Slide 40

Slide 40 text

再試行ポリシー/ Retry Policy 動作エラーになったものを 何回(Limit) どの程度の間隔で(Duration) 再実行するかを設定

Slide 41

Slide 41 text

補足)HTTP 系コネクタの仕様と制限 Request Response HTTP ステータス 200 が正常終了 202 は処理継続中として Retry-After ヘッダ値に基づいてポーリング Location ヘッダの値がある場合、再試行時にリクエストを投げる URL が変化 再試行ポリシーはアクションごとに設定可能 http://blogahf.blogspot.jp/2017/07/logicflow-http.html

Slide 42

Slide 42 text

CodeView 上で LogicFlow を直接記載 デザイナーでは未サポート 動作自体は問題なく可能 マルチトリガ / Multi Trigger

Slide 43

Slide 43 text

@triggerOutputs() 関数にて呼出時に付与されていた クエリパラメータを取得できる HTTP Request トリガにおけるクエリパラメータ @triggerOutputs()['queries']['test1'] などでパラメータを利用可能

Slide 44

Slide 44 text

Workflow Functions

Slide 45

Slide 45 text

演算子 / Operator . ? ‘ [] ?演算子は特に重要で 値がない事が想定される場合は 必ず使うのがよい

Slide 46

Slide 46 text

関数 / Workflow Functions Referencing functions Collection functions String functions Logical functions Conversion functions Math functions Date functions Workflow functions デザイナ上でインテリセンス等サポートはない https://docs.microsoft.com/ja-jp/azure/logic-apps/logic-apps-workflow-definition-language CodeView および関数ダイアログ上でサポートあり

Slide 47

Slide 47 text

Workflow Functions の書き方 最初の関数のみ @ をつける必要がある 文字列は ‘ でのみ囲める デザイナー上で記載する場合は「詳細設定」 LogicApps なら CodeView で記載するのを活用 ダイアログで指定する方が便利で楽

Slide 48

Slide 48 text

補足)デザイナー上でのダイアログ表示 ブラウザ上での表示解像度によっては ダイアログが表示されない デザイナー上での縮小ではなく ブラウザ自体で「縮小表示」すれば ダイアログ表示が可能

Slide 49

Slide 49 text

Workflow Functions のコネクタ対応 一部関数はコネクタとして提供も行っている

Slide 50

Slide 50 text

Azure API App 同一サブスクリプション上に ある API Apps を呼出可能 トリガ/アクション 両方を利用可能

Slide 51

Slide 51 text

OpenAPI API Apps での OpenAPI(Swagger)設定 によりダイアログでの表示など カスタマイズ可能 メソッドなどへ属性を付与してデザイナ上の表示を指定 T-Rex ライブラリも利用可能(https://github.com/nihaue/TRex) [HttpPost, Route] [Metadata("Create Message", "Creates a new message absolutely nowhere")] [SwaggerResponse(HttpStatusCode.OK, Type = typeof(SampleOutputMessage))] public async Task Post([FromBody] [Metadata("Sample Input", "A sample input message")] SampleInputMessage sampleInput) { return await SampleOutputMessage.FromInputAsync(sampleInput); } 参考)https://flow.microsoft.com/ja-jp/documentation/customapi-how-to-swagger/

Slide 52

Slide 52 text

Azure Function App LogicFlow デザイナー上で 直接 FunctionApp を記述可能 (ただし js のみ)

Slide 53

Slide 53 text

カスタムコネクタ LogicApps は LogicApps Connector から Flow はカスタムコネクタから 既存 API を登録可能

Slide 54

Slide 54 text

Hybrid Connection (ServiceBus – Relay) OnPremiss Data Gateway (ServiceBus – Queue) OnPremiss DataGateway 対象コネクタ DataGateway はメッセージを ポーリングする方式でやり取りを行う (リアルタイム性は若干落ちる) 要 Office365/Flow Premium ライセンス

Slide 55

Slide 55 text

•ルートフォルダ:接続先 PC でのローカルパス (共有はかけなくても大丈夫) •認証タイプ:Windows 認証 •ユーザー名:(マシン名)¥(アカウント) を入力 AD アカウントではないので注意! •パスワード:パスワードを入力 •ゲートウェイ:インストールしたゲートウェイを選択

Slide 56

Slide 56 text

DataGateway 利用ポート TCP 443 (既定値) / 5671 / 5672 / 9350 ~ 9354 データ送信のみで受信は必要ない HTTPS を強要する場合は config ファイルの書き換えかインストーラから設定

Slide 57

Slide 57 text

Enterprise Integration 統合アカウント ファイルからのエンコード ファイルへのデコード XML の検証 XML 変換 EDIFACT AS2 X12 特定プロトコルの コネクタは用意済 Visual Studio に EIP 拡張機能をインストール VS 上でスキーマやマップの定義を行い Azure へアップロードが必要 Liquid での変換

Slide 58

Slide 58 text

BizTalk Server Architecture BizTalk Server Architecture BizTalk Service Architecture BizTalk の「オーケストレーション」部分を Enterprise Integration Pack として提供

Slide 59

Slide 59 text

Configuration

Slide 60

Slide 60 text

LogicApps ブレード上の設定項目 基本情報や アカウントへの権限付与 デザイナーやコード表示 バージョン履歴に LogicApps で利用してい る接続管理 EIP やアクセス制御 テンプレート化 動作している LogicApps の監視設定

Slide 61

Slide 61 text

各アクションが実行された、 エラーになったなどが グラフィカルに確認できる 実行履歴 / History

Slide 62

Slide 62 text

トリガの履歴では正常・失敗 それぞれの状態を確認できる

Slide 63

Slide 63 text

バージョン履歴 / Version 編集履歴より 過去のバージョンへ 戻すことが可能 履歴表示時に 「昇格」 で復元される

Slide 64

Slide 64 text

テンプレート生成 / Template Template 化することで Github などからの デプロイも可能

Slide 65

Slide 65 text

エクスポート LogicApps → Flow/PowerApps 用に エクスポート可能

Slide 66

Slide 66 text

Flow/PowerApps → LogicApps 用も エクスポート可能

Slide 67

Slide 67 text

Azure Monitor(Alert) の LogicApps 呼出し Azure の各種サービスでAlert が発生した際に 実行する LogicApps を指定できる Alert ルールはメトリックとして定義可能 Flow で定義した LogicFlow を呼出したい際は Webhook として Request コネクタで 生成された URL を指定することで可能 (ブレード上 LogicApps 呼出がない際も同様) 発生した Alert の集約も非常に簡単に行える

Slide 68

Slide 68 text

Activity Log Alert では直接 LogicApps 指定が なく Webhook での指定が可能

Slide 69

Slide 69 text

LogicApps の呼び出し元 IP アドレス LogicAppsからアクセスした 場合の IP アドレス

Slide 70

Slide 70 text

LogicApps のセキュリティ LogicFlow にアクセスできる IP アドレスの制限を指定可能

Slide 71

Slide 71 text

Flow のセキュリティ 複数の環境を作成して ユーザーを切り分ける (5環境まで) 接続可能なコネクタルールを定義し 不用意にデータ流出を行えなくする

Slide 72

Slide 72 text

Log Analytics 細かい設定なしで LogicApps のログ情報を OMS へと連携が可能

Slide 73

Slide 73 text

OMS の機能が単独公開されるようになり ポータルから直接作成可能に!

Slide 74

Slide 74 text

Limited

Slide 75

Slide 75 text

ボタン / Button Flow モバイルアプリ導入で利用可能 端末 / Web サイトより実行可能 作成したボタントリガはメニュー上に ウィジェットとして配置することが可能

Slide 76

Slide 76 text

bttn flic

Slide 77

Slide 77 text

通知 / Notification Flow モバイルアプリ導入で利用可能 自分の端末へのプッシュ通知 / メールによる通知 PowerApps で利用可能(ブラウザ上では未対応) アプリケーション単位での通知(特定ユーザーも可)

Slide 78

Slide 78 text

Common Data Service(CDS) PowerApps で参照可能(Flow では Premium 必要) CDS の設定などには Plan2 契約が必要 利用頻度の 高そうなものは 全て定義済み テーブル定義を 考えずに DB を 利用できる

Slide 79

Slide 79 text

承認 / Approval Flow Premium(または Office365 FreePlan) で可能 活用するには Office365 ユーザーが必要 Flow モバイルアプリ または Flow ウェブサイト上で承認行為が可能

Slide 80

Slide 80 text

Appendix

Slide 81

Slide 81 text

LogicApps の高可用性対応 API Management リダイレクト先の調整 ServiceBus メッセージング形式の構築 Hot-Cold 的に構築 動作中のリージョンで障害発生時に COLD 側へ切り替えさせる 常に全てのリージョンで動作するよう構築 LogicApps の課金としては変化なし (トリガで対象データなしは無課金)

Slide 82

Slide 82 text

PowerApps/Flow が向いている領域 • ネイティブアプリを作るまでもないちょっとした事のシステム化 • 日頃の作業を少しだけ便利に • 一部メンバー間に限定して実施したい • 社内用、部門用システムを短期間で用意したい • スマートフォンを安価に活用したい LogicApps が向いている領域 • API をできるだけ簡単に用意し公開したい • EOS/EDI などデータ連携や変換が多くなる時に • コードを書いて負債を増やしたくない • コードを書かなくてもできる事でコードを書きたくない 「やればできる」と「適している」は別

Slide 83

Slide 83 text

Let’s develop without coding, and Welcome to Serverless !

Slide 84

Slide 84 text

Appendix • LogicFlow-ja ( https://www.facebook.com/groups/logicflowja/ ) • LogicFlow を扱っている Blog – nrjlog ( http://zuvuyalink.net/nrjlog/ ) – てすとぶろぐ ( http://blogahf.blogspot.jp/ ) • Azure LogicApps ( https://blogs.msdn.microsoft.com/logicapps/ ) • Flow – Blog (https://flow.microsoft.com/en-us/blog/) • PowerApps – Blog (https://powerapps.microsoft.com/en-us/blog/) • Twitter Hashtag – LogicApps → #LogicApps – Flow → #MicrosoftFlow

Slide 85

Slide 85 text

EventGrid with LogicFlow

Slide 86

Slide 86 text

EventGrid とは • 低コストで自動スケーリングするイベント配信機構 • 大量イベントメッセージも問題なし • Azure Subscription や ResourceGroup の変更をキャッチ • メッセージの順番が重要な場合には不向き – その場合は EventHub – EventHub 以外は順番を保証していない

Slide 87

Slide 87 text

https://docs.microsoft.com/ja-jp/azure/event-grid/overview

Slide 88

Slide 88 text

イベント発生側 イベント受信側 イベントの集約

Slide 89

Slide 89 text

No content

Slide 90

Slide 90 text

EventGrid のトリガは 2 種類 「要求」に含まれている EventGrid トリガ (LogicApps のみ) WebHook 用 URL が 生成されるだけなので Subscription 等は設定必要

Slide 91

Slide 91 text

EventGrid コネクタのトリガ EventGrid Subscription を 自動で生成し すぐに受信可能な状態 (Topic 不要)

Slide 92

Slide 92 text

これだけ見ると 別コネクタ

Slide 93

Slide 93 text

Azure Subscription や Azure Resource Group の 変更検知は EventGrid Subscription の設定で可能 内部的には HTTP Request コネクタが生成した URL を EventGrid Subscription の WebHook 先に 設定している

Slide 94

Slide 94 text

通知できるイベント種類 Azure Subscription Resource Group での 通知対象は 「リソースの変更」と 「リソースの削除」

Slide 95

Slide 95 text

EventGrid コネクタは • Azure Subsription • Azure Resource Groups • EventGrid Topics • Eventhub Namespaces • IoTHubs • Storage Accounts • Azure Container Registry に現時点で対応 通知できるイベント種類

Slide 96

Slide 96 text

リソースの変更で察知できるもの Azure 上で新規作成が 可能なもの プラットフォーム上での 操作がほとんど検知できる

Slide 97

Slide 97 text

リソースの作成/更新/削除を検知 監視の作成/更新/削除を実施など 付随する管理業務を自動化

Slide 98

Slide 98 text

Resource の取得や操作は ARM コネクタから実施可能 Managed REST API 経由の Resource 操作も可能

Slide 99

Slide 99 text

ARM コネクタは ・生成/更新 ・削除 ・取得(リスト取得) ・プロバイダ操作実行 が可能

Slide 100

Slide 100 text

VM の起動など Resource Provider 操作も可能 現状の設定一覧として Resource 一覧も取得可能

Slide 101

Slide 101 text

Appendix • Azure Resoruce Manager のプロバイダ操作 ( https://docs.microsoft.com/ja-jp/azure/active-directory/role- based-access-control-resource-provider- operations#microsoftcompute ) • Azure Resource Manager コネクタ ( https://docs.microsoft.com/ja- jp/connectors/arm/#invoke_resource_operation ) • Resource Manager REST API ( https://docs.microsoft.com/ja-jp/azure/azure-resource- manager/resource-manager-rest-api )