61
Codeless / Serverless Flow Develop 2017/10/07 小尾 智之

codeless/serverless develop

Embed Size (px)

Citation preview

Codeless / Serverless Flow Develop

2017/10/07

小尾智之

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

• LogicFlow とは

– LogicFlow 基本機能

– LogicFlow の各機能

• LogicFlow による API サーバー構築

トリガ

アクション

LogicFlow の基本形

イベントをトリガで受け取り後続のアクションで処理を行うサーバーレスなもの

LogicApps 従量課金プラン

LogicApps AppService プラン

https://azure.microsoft.com/ja-jp/pricing/details/logic-apps/

Flow とは課金単位が異なる

LogicApps 新従量課金プラン

現在は一部リージョン限定

LogicApps 仕様と制限

最大実行継続時間 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

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 コミュニティプラン

既にアカウントを所有していても作成可能

Enterprise Integration

SNS

Office365 / Dynamics365

Data Connect

Web Service

Azure Service

Online Storage

NotificationStandard Connecter

Cognitive Service

Button

Approval Batch

Enterprise Integration

SNS

Office365 / Dynamics365

Data Connect

Web Service

Azure Service

Online Storage

NotificationStandard Connecter

Cognitive Service

Button

Approval Batch

LogicApps Only

Enterprise Integration

SNS

Office365 / Dynamics365

Data Connect

Web Service

Azure Service

Online Storage

NotificationStandard Connecter

Cognitive Service

Button

Approval Batch

Flow Only

Commin soon・・・?

LogicFlow 基本コネクタ

スケジュール

OpenAPI(Swagger) 定義されたAPI 呼出

HTTPS リクエスト

RSSFTP/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)再実行するかを設定

CodeView 上で LogicFlow を直接記載

デザイナーでは未サポート

動作自体は問題なく可能

マルチトリガ / Multi Trigger

演算子 / 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 のコネクタ対応

一部関数はコネクタとして提供も行っている

Develop API Server with LogicFlow

Request コネクタ

SAS 付の URL が自動生成される

POST 以外の動詞も可能

相対パスを設定が可能クエリパラメータが可能

受け取る JSON データのスキーマを指定

@triggerOutputs() 関数にて呼出時に付与されていたクエリパラメータを取得できる

HTTP Request トリガにおけるクエリパラメータ

@triggerOutputs()['queries']['test1']などでパラメータを利用可能

Request コネクタの問題点

SAS 付 URL のためアクセスできれば誰でも利用可能

生成される URL がいかにも Azure な URL

LogicFlow 自体にユーザー認証の仕組みは提供されていない

ユーザー認証がない

Function Apps Proxy と API Management Services

どちらも LogicFlow を呼び出すプロキシとして利用可能

Function Apps Proxy

プレビュー機能のためFunction Settings で有効にする

特定のメソッドで呼び出された際にAPI を呼び出すことが可能

App Service 認証を利用してAPI のユーザー認証が可能

AAD や MS アカウントの MS サービスやTwitter や Google アカウントなどの外部サービスも利用可能

利用条件の表示や匿名ユーザー対応などFunction Apps Proxy より細かい対応が可能

API Management でのユーザー認証

OAuth2.0 や OpenID を利用して外部プロバイダでの認証も可能

Function Apps Proxy のカスタムドメイン設定

SSL も利用可能http://blogahf.blogspot.jp/2017/07/azure-function-apps-proxies-ssl.html

API Management は高機能なだけに価格も高レベル・・・

LogicApps のセキュリティ

LogicFlow にアクセスできるIP アドレスの制限を指定可能

LogicApps の呼び出し元 IP アドレス

LogicAppsからアクセスした場合の IP アドレス

Log Analytics

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

Azure API Apps

同一サブスクリプション上にある 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 のみ)

Azure Functions App にほしいトリガーがない場合

LogicApps のトリガでトラップしFunctions App を呼び出す

カスタムコネクタ

既存 API 定義を簡易に利用できるようにカスタムコネクタとして登録可能

Hybrid Connection

(ServiceBus – Relay)

OnPremiss Data Gateway

(ServiceBus – Queue)

OnPremiss DataGateway

対象コネクタ

DataGateway はメッセージをポーリングする方式でやり取りを行う(リアルタイム性は若干落ちる)

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

DataGateway 利用ポート

TCP 443 (既定値) / 5671 / 5672 / 9350 ~ 9354

データ送信のみで受信は必要ない

HTTPS を強要する場合は config ファイルの書き換えかインストーラから設定

https://msdn.microsoft.com/ja-jp/library/hh169248(v=nav.90).aspx

SQL Database コネクタによる取得

SQL 文を直接記載することはできないがOdata Expression による記述が可能

Others…

フロントプロキシ

インフラ

オンプレミス

Azure や他サービス

Microsoft サービス

LogicApps の高可用性対応

API Management リダイレクト先の調整

ServiceBus メッセージング形式の構築

Hot-Cold 的に構築動作中のリージョンで障害発生時にCOLD 側へ切り替えさせる(ARM 操作で可能)

常に全てのリージョンで動作するよう構築LogicApps の課金としては変化なし(トリガで対象データなしは無課金)

LogicApps Ludicrous Mode

高パフォーマンス用 LogicApps

16ユニット以上の構成

高スケール対応が可能

LogicApps 上に仕込みは済んでいるのでそう遠くない時期に公開予定

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