Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
LogicFlow Overview + α
Search
Ahf
February 18, 2018
Technology
1
620
LogicFlow Overview + α
2018/02/17 LogicFlow-ja offline #2 で利用した概要説明スライド
Ahf
February 18, 2018
Tweet
Share
Other Decks in Technology
See All in Technology
IBC 2024 動画技術関連レポート / IBC 2024 Report
cyberagentdevelopers
PRO
0
110
ISUCONに強くなるかもしれない日々の過ごしかた/Findy ISUCON 2024-11-14
fujiwara3
8
870
【若手エンジニア応援LT会】ソフトウェアを学んできた私がインフラエンジニアを目指した理由
kazushi_ohata
0
150
B2B SaaSから見た最近のC#/.NETの進化
sansantech
PRO
0
840
オープンソースAIとは何か? --「オープンソースAIの定義 v1.0」詳細解説
shujisado
9
1k
VideoMamba: State Space Model for Efficient Video Understanding
chou500
0
190
適材適所の技術選定 〜GraphQL・REST API・tRPC〜 / Optimal Technology Selection
kakehashi
1
630
ExaDB-D dbaascli で出来ること
oracle4engineer
PRO
0
3.9k
テストコード品質を高めるためにMutation Testingライブラリ・Strykerを実戦導入してみた話
ysknsid25
7
2.6k
エンジニア人生の拡張性を高める 「探索型キャリア設計」の提案
tenshoku_draft
1
130
The Rise of LLMOps
asei
7
1.6k
DynamoDB でスロットリングが発生したとき_大盛りver/when_throttling_occurs_in_dynamodb_long
emiki
1
370
Featured
See All Featured
Unsuck your backbone
ammeep
668
57k
Making Projects Easy
brettharned
115
5.9k
KATA
mclloyd
29
14k
Intergalactic Javascript Robots from Outer Space
tanoku
269
27k
How GitHub (no longer) Works
holman
310
140k
5 minutes of I Can Smell Your CMS
philhawksworth
202
19k
Into the Great Unknown - MozCon
thekraken
32
1.5k
The Web Performance Landscape in 2024 [PerfNow 2024]
tammyeverts
0
96
The Straight Up "How To Draw Better" Workshop
denniskardys
232
140k
CSS Pre-Processors: Stylus, Less & Sass
bermonpainter
356
29k
Why You Should Never Use an ORM
jnunemaker
PRO
54
9.1k
YesSQL, Process and Tooling at Scale
rocio
169
14k
Transcript
Logic Apps/Flow Overview 2018/02/17 LogicFlow-ja 小尾 智之
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 ~)
https://www.facebook.com/groups/logicflowja/
Agenda • LogicApps/Flow/PowerApps とは – LogicFlow 基本機能 – LogicApps と
Flow の違い – HybridConnection と OnPremiss DataGateway – Enterprise Integration Pack • LogicFlow の各機能
LogicFlow is iPaas
iPaas = Integration Platform as a Service
> ≧ IFTTT は非常に多くのサービスと連携可能 間に制御を挟まないシンプル構成 IFTTT / Flow / LogicApps
Flow / LogicApps はユーザーが制御を挟む余地がある サービス数はまだ限られている 一般ユーザー ITPro
Trigger Action Action LogicFlow の構造 発生したイベントをトリガで受け取り 後続のアクションで処理を行う
トリガが起動し条件を満たした 場合に限り後続のアクションが 実行される トリガの起動も 1 アクションと してカウントされる LogicFlow のトリガ
Plan / License
LogicApps 従量課金プラン https://azure.microsoft.com/ja-jp/pricing/details/logic-apps/ Flow とは課金単位が異なる
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 高スループットモード登場
1 Action 1 Action 1 Action 1 Flow LogicApps の課金単位
Flow の課金単位
Microsoft Flow 料金プラン 1 ユーザー 25 LogicFlow が定義可能 (リクエスト送付で拡張可能) https://flow.microsoft.com/ja-jp/pricing/
Flow プランでの機能制限 Premium 系コネクタは Plan1 / 2 でのみ利用可能
PowerApps 料金プラン
https://powerapps.microsoft.com/ja-jp/communityplan/ PowerApps コミュニティプラン 既にアカウントを所有していても作成可能
PowerApps と Flow のライセンス PowerApps ライセンスで作成できる LogicFlow は PowerApps トリガ限定
通常のトリガは Flow ライセンスで作成
PowerApps では 選択可能な CDS Flow では 選択できない事も
Mobile Application
Flow モバイルアプリ Flow ボタンはこのアプリより利用可能
Flow Button Trigger ボタンクリックにて LogicFlow が発動
PowerApps モバイルアプリ 作成したアプリはメニュー上に ウィジェットとして配置可能
PowerApps Studio ブラウザ上または UWPアプリ
PowerApps アプリの作成 OneDrive 上の Excel ファイルへ データ登録や参照するアプリなら テンプレートのままでも十分な機能 テンプレートから作成または スクラッチで作成
PowerApps アプリの作成 PowerApps Studio 上ではインテリセンスなどが 用意されているので基本的には選択していくだけで 設定が可能 カメラやバーコードスキャナー 画像動画表示など一通りのコントロールを提供
Connectors
Enterprise Integration SNS Office365 / Dynamics365 Data Connect Web Service
Azure Service Online Storage Notification Standard Connecter Cognitive Service Button Approval Batch
LogicFlow 基本構造 LogicFlow から呼び出される コネクタは API Management 配下に存在する API Management
により リージョンごとの 利用可能・不可能を制御 アクションやトリガが発生した タイミングでコネクタの インスタンスが生成される https://logic-apis-westcentralus.azure-apim.net/apim/staffhub このような感じでコネクタが準備されている
LogicFlow 基本コネクタ スケジュール OpenAPI(Swagger) 定義された API 呼出 HTTPS リクエスト RSS
FTP/SFTP HTTP/HTTPS WebHook Mail(SendGrid) SMTP 変数 制御 HTTP レスポンス データ操作 PowerApps プッシュ通知 Flow Button HTML-テキスト変換 PowerApps用プッシュ通知
条件判断 / Condition IF ~ THEN ~ ELSE(条件分岐) Switch Case(条件多分岐)
繰り返し / Loop Do Until ループ ループが一定時間内に終了しない場合に タイムアウトとする場合は ISO 8601
形式でタイムアウト条件を設定
繰り返し / Loop ForEach ループ 規定では 20 アクションの並列動作 operationOptions:Sequential で変更可能
デザイナ上だけで ネストしたループも作成可能
ブロック化 / Scope 処理のブロック化
実行条件の構成 / RunAfter ブロック化した場合は 「ブロック内部の処理が一つでも失敗したら」とい う条件で利用できる 直前のアクションが複数存在する場合は それぞれのアクションに対して条件指定可能
並列分岐 / RunAfter(2) デザイナー上から 並列動作させるアクションを直接設定可能 RunAfter 設定を変更し どのコネクタの後に実行するかを 設定している
変数/ Variables 初期化を先に実施する必要がある
データ操作 / Compose 関数で行っていたものが コネクタ化され簡易に利用可能
inputArguments.Select(Function(x) Return New With {Key x.orgArg1, Key x.orgArg2, Key Sum(x.orgArg3)}
End Function).ToArray 選択/ Selecct 配列オブジェクトの再定義
再試行ポリシー/ Retry Policy 動作エラーになったものを 何回(Limit) どの程度の間隔で(Duration) 再実行するかを設定
補足)HTTP 系コネクタの仕様と制限 Request Response HTTP ステータス 200 が正常終了 202 は処理継続中として
Retry-After ヘッダ値に基づいてポーリング Location ヘッダの値がある場合、再試行時にリクエストを投げる URL が変化 再試行ポリシーはアクションごとに設定可能 http://blogahf.blogspot.jp/2017/07/logicflow-http.html
CodeView 上で LogicFlow を直接記載 デザイナーでは未サポート 動作自体は問題なく可能 マルチトリガ / Multi Trigger
@triggerOutputs() 関数にて呼出時に付与されていた クエリパラメータを取得できる HTTP Request トリガにおけるクエリパラメータ @triggerOutputs()['queries']['test1'] などでパラメータを利用可能
Workflow Functions
演算子 / Operator . ? ‘ [] ?演算子は特に重要で 値がない事が想定される場合は 必ず使うのがよい
関数 / 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 および関数ダイアログ上でサポートあり
Workflow Functions の書き方 最初の関数のみ @ をつける必要がある 文字列は ‘ でのみ囲める デザイナー上で記載する場合は「詳細設定」
LogicApps なら CodeView で記載するのを活用 ダイアログで指定する方が便利で楽
補足)デザイナー上でのダイアログ表示 ブラウザ上での表示解像度によっては ダイアログが表示されない デザイナー上での縮小ではなく ブラウザ自体で「縮小表示」すれば ダイアログ表示が可能
Workflow Functions のコネクタ対応 一部関数はコネクタとして提供も行っている
Azure API App 同一サブスクリプション上に ある API Apps を呼出可能 トリガ/アクション 両方を利用可能
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<IHttpActionResult> 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/
Azure Function App LogicFlow デザイナー上で 直接 FunctionApp を記述可能 (ただし js
のみ)
カスタムコネクタ LogicApps は LogicApps Connector から Flow はカスタムコネクタから 既存 API
を登録可能
Hybrid Connection (ServiceBus – Relay) OnPremiss Data Gateway (ServiceBus –
Queue) OnPremiss DataGateway 対象コネクタ DataGateway はメッセージを ポーリングする方式でやり取りを行う (リアルタイム性は若干落ちる) 要 Office365/Flow Premium ライセンス
•ルートフォルダ:接続先 PC でのローカルパス (共有はかけなくても大丈夫) •認証タイプ:Windows 認証 •ユーザー名:(マシン名)¥(アカウント) を入力 AD アカウントではないので注意!
•パスワード:パスワードを入力 •ゲートウェイ:インストールしたゲートウェイを選択
DataGateway 利用ポート TCP 443 (既定値) / 5671 / 5672 /
9350 ~ 9354 データ送信のみで受信は必要ない HTTPS を強要する場合は config ファイルの書き換えかインストーラから設定
Enterprise Integration 統合アカウント ファイルからのエンコード ファイルへのデコード XML の検証 XML 変換 EDIFACT
AS2 X12 特定プロトコルの コネクタは用意済 Visual Studio に EIP 拡張機能をインストール VS 上でスキーマやマップの定義を行い Azure へアップロードが必要 Liquid での変換
BizTalk Server Architecture BizTalk Server Architecture BizTalk Service Architecture BizTalk
の「オーケストレーション」部分を Enterprise Integration Pack として提供
Configuration
LogicApps ブレード上の設定項目 基本情報や アカウントへの権限付与 デザイナーやコード表示 バージョン履歴に LogicApps で利用してい る接続管理 EIP
やアクセス制御 テンプレート化 動作している LogicApps の監視設定
各アクションが実行された、 エラーになったなどが グラフィカルに確認できる 実行履歴 / History
トリガの履歴では正常・失敗 それぞれの状態を確認できる
バージョン履歴 / Version 編集履歴より 過去のバージョンへ 戻すことが可能 履歴表示時に 「昇格」 で復元される
テンプレート生成 / Template Template 化することで Github などからの デプロイも可能
エクスポート LogicApps → Flow/PowerApps 用に エクスポート可能
Flow/PowerApps → LogicApps 用も エクスポート可能
Azure Monitor(Alert) の LogicApps 呼出し Azure の各種サービスでAlert が発生した際に 実行する LogicApps
を指定できる Alert ルールはメトリックとして定義可能 Flow で定義した LogicFlow を呼出したい際は Webhook として Request コネクタで 生成された URL を指定することで可能 (ブレード上 LogicApps 呼出がない際も同様) 発生した Alert の集約も非常に簡単に行える
Activity Log Alert では直接 LogicApps 指定が なく Webhook での指定が可能
LogicApps の呼び出し元 IP アドレス LogicAppsからアクセスした 場合の IP アドレス
LogicApps のセキュリティ LogicFlow にアクセスできる IP アドレスの制限を指定可能
Flow のセキュリティ 複数の環境を作成して ユーザーを切り分ける (5環境まで) 接続可能なコネクタルールを定義し 不用意にデータ流出を行えなくする
Log Analytics 細かい設定なしで LogicApps のログ情報を OMS へと連携が可能
OMS の機能が単独公開されるようになり ポータルから直接作成可能に!
Limited
ボタン / Button Flow モバイルアプリ導入で利用可能 端末 / Web サイトより実行可能 作成したボタントリガはメニュー上に
ウィジェットとして配置することが可能
bttn flic
通知 / Notification Flow モバイルアプリ導入で利用可能 自分の端末へのプッシュ通知 / メールによる通知 PowerApps で利用可能(ブラウザ上では未対応)
アプリケーション単位での通知(特定ユーザーも可)
Common Data Service(CDS) PowerApps で参照可能(Flow では Premium 必要) CDS の設定などには
Plan2 契約が必要 利用頻度の 高そうなものは 全て定義済み テーブル定義を 考えずに DB を 利用できる
承認 / Approval Flow Premium(または Office365 FreePlan) で可能 活用するには Office365
ユーザーが必要 Flow モバイルアプリ または Flow ウェブサイト上で承認行為が可能
Appendix
LogicApps の高可用性対応 API Management リダイレクト先の調整 ServiceBus メッセージング形式の構築 Hot-Cold 的に構築 動作中のリージョンで障害発生時に
COLD 側へ切り替えさせる 常に全てのリージョンで動作するよう構築 LogicApps の課金としては変化なし (トリガで対象データなしは無課金)
PowerApps/Flow が向いている領域 • ネイティブアプリを作るまでもないちょっとした事のシステム化 • 日頃の作業を少しだけ便利に • 一部メンバー間に限定して実施したい • 社内用、部門用システムを短期間で用意したい
• スマートフォンを安価に活用したい LogicApps が向いている領域 • API をできるだけ簡単に用意し公開したい • EOS/EDI などデータ連携や変換が多くなる時に • コードを書いて負債を増やしたくない • コードを書かなくてもできる事でコードを書きたくない 「やればできる」と「適している」は別
Let’s develop without coding, and Welcome to Serverless !
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
EventGrid with LogicFlow
EventGrid とは • 低コストで自動スケーリングするイベント配信機構 • 大量イベントメッセージも問題なし • Azure Subscription や
ResourceGroup の変更をキャッチ • メッセージの順番が重要な場合には不向き – その場合は EventHub – EventHub 以外は順番を保証していない
https://docs.microsoft.com/ja-jp/azure/event-grid/overview
イベント発生側 イベント受信側 イベントの集約
None
EventGrid のトリガは 2 種類 「要求」に含まれている EventGrid トリガ (LogicApps のみ) WebHook
用 URL が 生成されるだけなので Subscription 等は設定必要
EventGrid コネクタのトリガ EventGrid Subscription を 自動で生成し すぐに受信可能な状態 (Topic 不要)
これだけ見ると 別コネクタ
Azure Subscription や Azure Resource Group の 変更検知は EventGrid Subscription
の設定で可能 内部的には HTTP Request コネクタが生成した URL を EventGrid Subscription の WebHook 先に 設定している
通知できるイベント種類 Azure Subscription Resource Group での 通知対象は 「リソースの変更」と 「リソースの削除」
EventGrid コネクタは • Azure Subsription • Azure Resource Groups •
EventGrid Topics • Eventhub Namespaces • IoTHubs • Storage Accounts • Azure Container Registry に現時点で対応 通知できるイベント種類
リソースの変更で察知できるもの Azure 上で新規作成が 可能なもの プラットフォーム上での 操作がほとんど検知できる
リソースの作成/更新/削除を検知 監視の作成/更新/削除を実施など 付随する管理業務を自動化
Resource の取得や操作は ARM コネクタから実施可能 Managed REST API 経由の Resource 操作も可能
ARM コネクタは ・生成/更新 ・削除 ・取得(リスト取得) ・プロバイダ操作実行 が可能
VM の起動など Resource Provider 操作も可能 現状の設定一覧として Resource 一覧も取得可能
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 )