Qiita Teams that are logged in
You are not logged in to any team

Log in to Qiita Team
Community
OrganizationEventAdvent CalendarQiitadon (β)
Service
Qiita JobsQiita ZineQiita Blog
12
Help us understand the problem. What is going on with this article?

More than 3 years have passed since last update.

@yotan

Azure Logic Appsを利用してみる

はじめに

AzureのPaaSサービスであるLogic Appsが2016年7月にGAしました。
今回はLogic Appsの基本機能だけを使ってSlackへの通知をやってみました。

構成

image

オンプレ側には会社で余っているRaspberry Pi 2 Model Bにraspbianを入れています。
今回はAzure Service Busへの送信にはPythonを使ってみます。

AzureはLogic Appsと、メッセージのやり取りを行うService Busがあります。

Logic Appsにはソーシャルへの通知先としてTwitterやSlack等が選べるのですが、今回はSlackを選択しました。

Python側の準備

rapbianには既にPythonはインストール済みで、各種モジュールを追加するpipコマンドも入っているので、後は以下のコマンドを入れてAzure SDKの利用準備をすればOKです。

$ sudo pip install azure

上記コマンドで、Python用のAzure SDKがインストールされ、利用可能となります。

Logic Appsの作成

ポータル画面からさくっと作成します。
最近、東日本、西日本リージョンでも使えるようになりました。
image

Service Busの作成

こちらもポータル画面からさくっと作成します。
価格プランは検証目的なので一番安いBasic、リージョンは東日本で作成しました。

image

Queueの作成

キューの名前はpythontest、他の項目は検証目的なのでデフォルトのまま作成します。

image

アクセス権の設定

作成したキューのShared access policiesを設定します。
ポリシー名「user」に対してキューの送信と参照権限を与えます。

image

作成されたShared access policiesのPolicy name(user)とPRIMARY KEYの内容はPython側のコードに埋め込むため控えておきます。
CONNECTION STRING-PRIMARY KEYの内容はLogic Apps側で必要になりますので、こちらも控えておきます。

image

Logic Appsのロジック作成

デプロイして最初にLogic Appsの「編集」を押すとLogic Appsデザイナーが開くので、今回は「空のLogicApp」を選択します。
デザイナー画面が開くので、先ずはService Bus Queueのトリガー設定。
「Service Bus - When a message is received in a queue」を選んで、接続名は適当に。接続文字列は、先ほど作ったSercice BusのCONNECTION STRINGを入力するのですが、そのCONNECTION STARINGの中の要素の内最後にある「EntityPath」は除きます。
(Endpoint,ShareAccessKeyName,SharedAccessKeyだけ含めます)

image

続いて「キュー名」にはService Busに作成したキューの名前を入れ、頻度と間隔は適当に設定します。

image

次にアクションを追加します。
「+新しいステップ」から「アクションの追加」をクリック。
image

Slackを選択すると、追加されました。

image

その後Slackへのサインインが完了するとSlackへ投稿するチャンネル名と、投稿するメッセージを入力することができます。
今回はMESSAGE TEXT欄は簡単に画面上からService Busから送られてきたコンテンツ内容をそのまま使うことにします。

image

最後に「保存」を忘れないようにしましょう。
image

Python送信側

送信側のプログラム例です。
service_namespaceには作成したService Busの名前を入れます。
share_access_key_nameとshared_access_key_valueには先程控えたPolicy nameとPRIMARY KEYの内容をペーストします。
bus_service.send_eventの第一引数は先程作成したキューの名前(pythontest)を設定します。

sender.py
# -*- coding: utf-8 -*-

import json
from azure.servicebus import ServiceBusService, Message, Queue

if __name__ == '__main__':
        bus_service = ServiceBusService(
          service_namespace='ktkrqiitatest',
          shared_access_key_name='user',
          shared_access_key_value='XXXXXXXXXXXXXXXXXXXXXXXXXX')

        msg = Message('Hello! World')

        bus_service.send_event('pythontest', msg)

プログラムの実行

それではPythonスクリプトを実行してみます。

$ python sender.py

ポータル画面上で正常に実行されたのを確認します。

image

ちゃんとSlackの#logicappstestチャンネルにもBOTからの通知メッセージが届きました!

image

おわりに

今回は非常に簡単な仕組みでAzure Logic Appsを使ってみましたが、Azure側は全てUI操作だけで完結できました。
凝った分岐やアクションを組む場合には直接JSONのコードを編集する必要がありますが、その辺りはまた別の機会に試してみたいと思います。

12
Help us understand the problem. What is going on with this article?
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
12
Help us understand the problem. What is going on with this article?