8
6

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

【Azure】Azure Logic Appsを用いてSlackへメッセージを投稿する。

Posted at

1. はじめに

1-1 ご挨拶

初めまして、井村と申します。
お仕事でAzure Loic Appsを利用することになりました。初めて触るリソースの為、動作確認と備忘録として投稿します。

1-2 対象読者

  • Azureに興味がある

1-3 Azure Logic Appsとは?

Azure上で利用するローコード/ノーコードサービスです。ビジュアル デザイナーを使用してアプリ、データ、サービス、システムを統合および管理するワークフローをすばやく構築できます。基本的にコネクタと呼ばれるコンポーネントをつなぎ合わせて利用します。Azureにはたくさんのコネクタが用意されています。カスタムコネクタも作成できます。

1-4 システム構成と検証の流れ

システム構成図.png

上記がシステム構成図です。検証としては以下の通り。

  1. ユーザーがファイルをStorage account(コンテナー)へ格納
  2. Azure Logic AppsがStorage account(コンテナー)にファイルが格納されたことを検知
  3. Azure Logic AppsからSlackへメッセージ投稿&Outlookにメール

2. 構築

2-1 Slackのアカウント作成

こちらからSlackのアカウントを作成します。今回はフリープランで問題ございません。
案件でSlackを利用する事はありますが、個人でアカウント作成するのは初めてになります。なので、エビデンスを残します。

slack1.png

今回は「Google」アカウントで作成します。

slack2.png

続けます。

アカウントが作成されましたので、ワークスペースを作成します。

slack4.png

チーム名を決めます。

slack5.png

招待はスキップします。

slack6.png

チャンネル名を決定します。

slack7.png

無事にできました。

slack8.png

2-2 Outlookのアカウント作成

こちらからOutlookのアカウントを作成します。

2-3 Azure Storage Account及びAzure Logic Appsの作成

Azure portalからぽちぽちでも良いのですが、今回はTerraformで作成します。

main.tf
main.tf

# プロバイダー定義
terraform {
  required_providers {
    azurerm = {
      source  = "hashicorp/azurerm"
      version = "=3.0.0"
    }
  }
}

provider "azurerm" {
  features {}
}

# 変数宣言
locals {
    common = "imura"
    location = "japaneast"
    date = formatdate("YYYYMMDD", timestamp())
}

# リソースグループの作成
resource "azurerm_resource_group" "rg" {
  name     = "rg-${local.common}"
  location = local.location
}

# Logic Appsの作成
resource "azurerm_logic_app_workflow" "logic" {
  name                = "logic-${local.common}"
  location            = azurerm_resource_group.rg.location
  resource_group_name = azurerm_resource_group.rg.name
  identity {
    type = "SystemAssigned"
  }
}

# Storage Accountの作成
resource "azurerm_storage_account" "st" {
  name                     = "st${local.common}${local.date}"
  resource_group_name      = azurerm_resource_group.rg.name
  location                 = azurerm_resource_group.rg.location
  account_tier             = "Standard"
  account_replication_type = "LRS"
}

# コンテナーの作成
resource "azurerm_storage_container" "container" {
  name                  = "container-${local.common}"
  storage_account_name  = azurerm_storage_account.st.name
  container_access_type = "private"
}

# Azure Logic Apps→Storage Account (Storage Blob Data Reader権限)
resource "azurerm_role_assignment" "rbac" {
  scope                = azurerm_storage_account.st.id
  role_definition_name = "Storage Blob Data Reader"
  principal_id         = azurerm_logic_app_workflow.logic.identity[0].principal_id
}

コードにコメント入れていますので、最低限の解説だけ入れます。
ストレージアカウント名は一意である必要があるため、サフィックスにとりあえずの日付関数を使用。
ファイルを格納するコンテナーはStorage account上に作成します。
一番下のリソースブロックはAzure Logic AppsがStorage accountにアクセスすための権限付与になります。

Azure CLI
# Azureへログイン
az login

# Terraformの実行
terraform init
terraform plan
terraform apply

正常終了したら、リソースグループ配下にAzure Logic AppsとStorage accountが作成されます。

rg.png

Storage account内のコンテナー確認。

st1.png

権限確認。

st2.png

2-4 ワークフローの作成

それではメインのAzure Logic Appsでワークフローを作成します。
左ペインの開発ツールから「ロジックアプリデザイナー」を選択します。
※各画面の文字が小さくてごめんなさい。

logic01.png

「空のロジックアプリ」を選択します。

logic02.png

検索窓に「Storage」と入力。トリガーから「BLOBが追加または変更されたとき」を選択します。

logic03.png

接続名は「AzureLogicAppsConnection(※任意)」、認証の種類は「Logic AppsのマネージドID」として、「作成」をクリックします。

logic04.png

「ストレージアカウント名またはBLOBエンドポイント」、「コンテナー」は作成したリソースを記述します。他の値は任意となります。今回は「項目を確認する頻度」は10分にします。各値を埋めたら、「新しいステップ」をクリックします。

logic05.png

検索窓に「Slack」と入力。アクションから「メッセージの投稿」を選択します。

logic06.png

「サインイン」をクリックします。

logic07.png

作成したSlackのURLを入力し、「続行する」をクリックします。

ご自身のアカウントでサインインします。

「許可する」をクリックします。

許可されるとロジックアプリデザイナーで変化があります。各情報を入力します。

logic11.png

「チャネル名」は作成したチャネルを選択します。「メッセージテキスト」はフリーフォーマットで記入でき、作成したBlobの情報も取得可能です。

logic12.png

「Add new parameter」にて「ボット名」を選択します。

logic13.png

上記完了したら、「新しいステップ」をクリックします。

logic14.png

検索窓に「Outlook」と入力。アクションから「メールの送信」を選択します。

logic15.png

「サインイン」をクリックします。

logic16.png

利用するアカウントを選択します。

必須事項を入力します。

logic18.png

必須事項を入力後、左上の「保存」をクリックします。

logic19.png

左上の「トリガーの実行」-「実行」をクリックします。

logic20.png

以上で構築完了です。

3. 検証

それでは検証を始めます。
「項目を確認する頻度」を10分にしたので10分毎にトリガーが動いています。
直近のトリガーは15時16分に動いていることが確認できます。

logic21.png

3-1 Storage accountへファイルのアップロード

ファイルをアップロードします。時間は15時17分です。

logic22.png

3-2 Azure Logic Appsの確認

最新の15時26分で成功が表示されました。
※15時26分のスキップ済みのログを調査しました。ストレージアカウントの情報を取得し、メール送信時に一部処理がスキップしたようでした。よくわからん。。

logic23.png

実行履歴の確認すると約1秒で完了しました。

WS000026.JPG

3-3 Slackの確認

Slackにメッセージが投稿されていることが確認できました。受信日時は15時26分です。

logic25.png

3-4 Outlookの確認

メールも確認できました。受信日時は15時26分です。

logic24.png

最後にリソースグループを確認します。各リソースとのAPI接続リソースが作成されています。以上で検証完了です。

logic26.png

4. 終わりに

本記事を最後まで読んで頂きましてありがとうございます。
今まで食わず嫌いのAzure Logic Appsでしたが、簡単なアプリなら短時間で作成できますね。ノーコード/ローコード市場規模が毎年右肩上がりなのがうなずけます。

5. 参考記事

8
6
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
8
6

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?