Azure Logic AppsからPowerShellを実行する
いわさです。
Azure Logic Apps でPowerShellスクリプトを実行したいシーンがありました。
しかし、LogicAppsコネクタからPowerShellをコード実行は出来ません。
今回は、PowerShell実行タスクとなるサービスのコネクタを設定して試しました。
Azure Functions と Azure Automation です。
Azure Functionsの作成
ラインタイムスタックはPowerShell Coreを選択します。
現時点でオペレーティングシステムはWindowsしか選択できず、プランはApp Serviceプランしか選択できません。(東日本)
HTTP triggerテンプレートのデフォルトスクリプトを今回は使用します。
Azure Automation Runbookの作成
次に、Automation Runbookを作成します。
Runbookの種類で"PowerShell"を選択します。
スクリプト作成後にテストしてみます。
"テストウインドウ"を選択します。
動きましたね。
作成後、"公開"を忘れないようにしてください。
Azure Logic Appsの作成
今回はTwitter投稿をトリガーにしてみます。
Logic AppsからTwitterへのアクセス許可を行います。
私のTwitterアカウントで"hoge"とツイートすると、PowerShellを実行するようにしてみました。
PowerShellスクリプトはFunctionsはデフォルトのログが出るだけのもので、Automationも"hoge"と出力するだけのものです。
フロー上で並列でアクション作成を行います。
アクションで検索すると、Azure Function呼び出しと、Azure Automationジョブ作成のコネクタが選択でき、先程作成したリソースを選択できるので設定してください。
ツイートしてみます。ほげ。
3回ツイートしました。
まずは、LogicAppsの実行履歴を確認してみましょう。
Logic Appsのフローが3回実行されています。
PowerShell実行環境はどうでしょうか。
Azure Functionsの実行履歴を確認してみます。
3回実行されていて、PowerShellスクリプトで出力しているログが出力ウインドウに表示されていました。
Azure Automationのジョブ履歴も見てみます。
こちらも3回実行されており、ログ出力されていました。
さいごに
今回はパラメータの受け渡し等の無い単純なパターンを試してみました。
出力結果をLogicAppsに返すにはキューなど別のリソースを介して別のフローを実行する形になると思いますが、それはまた別の機会にやってみたいと思います。