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
Azure Functionsを使ってSlackに通知をしてみよう
Search
Sponsored
·
Ship Features Fearlessly
Turn features on and off without deploys. Used by thousands of Ruby developers.
→
Shintaro Kanno
July 06, 2022
Programming
590
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
Azure Functionsを使ってSlackに通知をしてみよう
7/6(水) 「Serverless LT初心者向け LT大会 #23 + 楽しいチーム開発の施策とは?」発表資料
Shintaro Kanno
July 06, 2022
More Decks by Shintaro Kanno
See All by Shintaro Kanno
アトミックデザイン入門
shintaro8
0
330
gRPCミドルウェアを作ってみよう
shintaro8
1
640
Goの並行処理に入門しよう
shintaro8
0
160
Other Decks in Programming
See All in Programming
進化を続けるGo toolsの現在地 / The Current State of Ever-Evolving Go Tools
hond0413
0
260
初めての模倣学習とVLA
natsutan
0
260
ドリフトを絶対に許さない(?)CDK運用 / CDK Ops with Zero Tolerance for Drifts (?)
akihisaikeda
1
230
Detecting Compromised CI with eBPF and Cilium Tetragon
lizrice
0
260
PyConJP2026_wat_Python × Signal Processing: How to Draw Pictures with Sound Using Spectrogram Art
wat
0
450
片田舎のおっさん、 Swift Buildのダイアモンド問題解決の不具合修正PRを出すが、解決方法がキャッシュをしないようにすることであり、ビルド時間が伸びると言われてマージされないので高速化もする/swiftbuild
yimajo
0
290
Dockerfile CMD for Node.js
grazie1999
0
120
<title><a id="</title>君はこのHTMLをパースできるか"></a></title> #雑LT_study
pizzacat83
0
180
30年振りにコンパイラの定数整数除算を改善した
herumi
9
4.2k
MySQLとPostgreSQLって何が違うの?
akagami
0
140
バグを直したら useEffect が消えた
colorful12
3
700
レビュー履歴をAIに食わせて、 Compose移行を加速するs
shihochan
0
220
Featured
See All Featured
Heart Work Chapter 1 - Part 1
lfama
PRO
8
36k
Large-scale JavaScript Application Architecture
addyosmani
515
110k
The Art of Delivering Value - GDevCon NA Keynote
reverentgeek
16
2.1k
How to Get Subject Matter Experts Bought In and Actively Contributing to SEO & PR Initiatives.
livdayseo
0
180
Leveraging LLMs for student feedback in introductory data science courses - posit::conf(2025)
minecr
1
360
Bootstrapping a Software Product
garrettdimon
PRO
306
120k
職位にかかわらず全員がリーダーシップを発揮するチーム作り / Building a team where everyone can demonstrate leadership regardless of position
madoxten
64
56k
Paper Plane (Part 1)
katiecoart
PRO
1
10k
The SEO Collaboration Effect
kristinabergwall1
1
530
Practical Orchestrator
shlominoach
191
12k
Let's Do A Bunch of Simple Stuff to Make Websites Faster
chriscoyier
508
140k
RailsConf & Balkan Ruby 2019: The Past, Present, and Future of Rails at GitHub
eileencodes
141
35k
Transcript
Azure Functions を使ってSlack に通知をしてみよう
自己紹介 名前 官野 慎太朗 ( かんの しんたろう) 業務 都内IT 企業にてWeb
系の開発業務に従事。 技術経験 Golang, JavaScript/TypeScript, MySQL, PostgreSQL, docker/kubernetes, etc…
目次 1. Azure Functions とは 2. 今回使用する技術について 3. Slack Webhook
URL の取得 4. Function App の設定 5. ローカル上でのプログラム実装 6. Function App へのデプロイ
Azure Functions とは Azure(Microsoft 社) が提供するサービスの一種。 クラウド上にプログラムを実装することができる。 類似サービス:AWS Lambda, GCP
Cloud Function
今回使用する技術 Azure Functions Core Tools JavaScript Slack Webhook URL Weather
Forecast API (Open-Meteo 社)
Slack Webhook URL の取得 Slack 連携には Incoming Webhook URL の発行が必要
Slack app directory の Custom Integrations > Incoming WebHooks より任意のWorkspace の Webhook URL 発行可能。 Incoming WebHooks よりWeb hook URL を作成 ` ` ` ` ` `
Function App の設定 Azure Portal 上でFunction App を構築 今回の名称は azure-weather
環境変数にSlack Webhook URL を設定 ` `
ローカル上でのプログラム実装 ローカルに空の az-function というディレクトリを作成 az-function 内で func new を実行 runtime
は node 使用する言語は JavaScript template は TimerTrigger Function Name は weather 対話形式で関数を作成 ` ` ` ` ` ` ` ` ` ` ` ` ` `
初期ディレクトリ構成 今回手を加えるのは index.js と function.json ` ` ` ` |-
.vscode |- extention.json |- weather |- function.json ←★ |- index.js ←★ |- readme.md |- .gitignore |- host.json |- local.setting.json |- package-lock.json |- package.json
実装部分 axios と @slack/webhook を使用 func start でローカル実行 ` `
` ` ` ` const axios = require('axios'); const { IncomingWebhook } = require('@slack/webhook'); module.exports = async function (context, myTimer) { // ~~~~~~ 以下実装部分 ~~~~~~ const response = await axios.get('https://api.open-meteo.com/v1/forecast?latitude=35.6785&longitude=139.6823&hourly=te const webhook = new IncomingWebhook(process.env.WEBHOOK) await webhook.send({ text: ` 現在の気温は${response.data.current_weather.temperature} です。`, channel: "#demo", username: "Azure Functions", }) // ~~~~~~ 実装部分ここまで ~~~~~~ };
Function App へのデプロイ function.json を編集 実行間隔を5 分おきに設定 scriptFile を index.js
に指定 package.json をweather に移動 azure-weather に weather ディレクトリをデプロイ 実行コマンド: func azure functionapp publish azure-weather function.json 内部 weaher 内の最終的な構成 ` ` ` ` ` ` ` ` ` ` ` ` { "bindings": [ { "name": "myTimer", "type": "timerTrigger", "direction": "in", "schedule": "0 */5 * * * *" } ], |- weather |- function.json |- index.js |- readme.md |- package.json ← 上の階層から移動
デプロイ後のazure-weather Functions に weather が存在 5 分おきに現在の気温をSlack へ通知 デプロイされたweather Slack
への気温の通知 ` `