SlideShare a Scribd company logo
Azure Event HubsでGraph変更通知を受け取る
2020.10 .NETラボ
誰?
@DevTakas
Angular / Azure / .NET Core / Azure DevOps / Microsoft Graph
Microsoft MVP OfficeDevelopment
誰?
ブログやってます
http://takasdev.hatenablog.com/
「はまったりひらめいたり…とか…」
Global Microsoft 365 Developer Bootcamp 2020 TOKYO開催
2020/11/9・10 の2夜連続開催
Connpassで参加者募集中です
おしながき
1. Graph変更通知の新機能について
2. 何が嬉しいのか
3. 実装してみよう
4. まとめ
(おさらい)Microsoft Graphとは
• Microsoftが提供するサービス・データに
アクセスできるエンドポイント
• TeamsのチャットやOutlookのイベント、Excelデータ等々…
• 単一エンドポイントhttps://graph.microsoft.comからアクセス
(おさらい)Microsoft Graph 変更通知とは
• Graphデータに変更が発生した時に任意のWebAPIを実行可能
• データがWebAPIに対して送られる
• 大抵は参照先の情報(ユーザーのIDなど)
• 昔の発表資料とか見てね!
• .NETラボ2020年4月
• https://dotnetlab.connpass.com/event/172038/
1. Graph変更通知の新機能について
-Event Hubsで変更通知を受け取れるように
• 「さまざまな方法で変更通知を受け取る」
• 上記のタイトルでプレビュー公開された
• 2020年10月現在の状態の情報です
• Azure Event Hubsを使用した変更通知が受け取れるようになった
1. Graph変更通知の新機能について
-webhookと何が違う?
• 通知URLの検証が必要なくなった
• 検証トークンの返却機能の実装が不要
• Azure Event Hubsを使用することになる
• Azure Key Vaultも必要となる
1. Graph変更通知の新機能について
-やりとりされるデータの形
• Graphの変更通知と同じ形式のJSONがやりとりされます
• なのでデータの形式は各リソースのドキュメントを参照に
2. 何が嬉しいのか
-今までの変更通知の問題点
• よくあるユースケース
• 更新が頻繁に発生するデータの変更を追跡したい
Microsoft
Graph
サービス
変更
変更
変更
変更
変更
変更
変更
変更
変更
2. 何が嬉しいのか
-今までの変更通知の問題点
• 大量の変更が発生するリソースの取り扱いはしんどい
• 大量の通信が発生する
• 大量の通信をさばける構成を作る必要がある
• 大量の通信をさばける実装が必要になる
Microsoft
Graph 共通通知先秒間超トランザクション
■必要要件
大量の通信さばけます
大量の送信さばけます
エラー時の復帰できます…etc
2. 何が嬉しいのか
-どうなる
• 改めてEvent Hubsを見てみる
Azure Event Hubs は、ビッグ データのストリーミング プラットフォームとなるイベント インジェスト サービスです。
1 秒間に何百万ものイベントを受信して処理することができます。
イベント ハブに送信されたデータは、任意のリアルタイム分析プロバイダーやバッチ処理/ストレージ アダプターを使用して、
変換および保存できます。
https://docs.microsoft.com/ja-jp/azure/event-hubs/event-hubs-about から引用
2. 何が嬉しいのか
-どうなる
• 大量のトラフィックをさばけるエントリポイントに直
• 大量トラフィック専門のPaaS
• 少なくともWebAppsやFunctionsを大量通信さばけるようにする必要
はなさそう
• 多くのデータを扱うことにはなるのでEventHubsから接続するサービ
スについてはデータの取扱に留意する必要はありそうだけど
3. 実装してみよう
-構成図
Azure AD User変更
変更通知
コンソール
Capture
Topic
• 更新あったらいろんなサービスに反映したい!って構成
• ローカルでも変更を引っ掛ける
• GraphのSubscription先がWebAPIの場合でもよく使う構成になると思います
Subscribe
3. 実装してみよう
-設定周り
• 作成するリソース
• Azure Event Hubs
• Azure Key Vault
• Azure Functions
• Azure Service Bus(Topicが使いたいのでStandard)
• Azure AD Application
3. 実装してみよう
-設定周り(Azure Event Hubs)
• Sendのアクセスポリシーの接続文字列を使用する
3. 実装してみよう
-設定周り(Azure Key Vault)
• SecretにEvent Hubsの接続文字列を格納する
3. 実装してみよう
-設定周り(Azure Key Vault)
• アクセスポリシーでGraph変更通知から
シークレットを参照できるようにする
3. 実装してみよう
-設定周り(Azure Key Vault)
• Graph変更通知がない場合は自分で
0bf30f3b-4a52-48df-9a82-234910c4a086 を追加する必要がある
• Microsoft Graph の変更追跡アプリケーションがない場合はどうなりますか?
• 0bf30…はGraph変更通知のアプリケーション識別子
3. 実装してみよう
-設定周り(Azure AD アプリケーション)
• SubscriptionにアクセスするためのAD アプリケーションの作成
• 今回はUserの変更をトリガーにするのでUser.Read.Allスコープを設定
3. 実装してみよう
-通信
• POST https://graph.microsoft.com/beta/subscriptions
• Body
{
"changeType": "updated",
"notificationUrl": "EventHub:https://<KeyVault>/secrets/<Secret>?tenantId=<Domain>",
"resource": "users",
”expirationDateTime”:“<3日以内>"
}
3. 実装してみよう
-通信
• 通信が成功したらテストのValueがEvent Hubs登録される
{
"value": [
{
"subscriptionId": "NA",
"subscriptionExpirationDateTime": "NA",
"clientState": "NA",
"changeType": "Validation: Testing client application …",
"resource": "NA",
"resourceData": {
"@odata.type": "NA",
"@odata.id": "NA",
"id": "NA"
}
}
],
"EventProcessedUtcTime": "2020-10-10T08:49:17.8804676Z",
"PartitionId": 0,
"EventEnqueuedUtcTime": "2020-10-10T05:49:40.5400000Z"
}
3. 実装してみよう
-デモ
4.まとめ
• 大量のデータが発生しやすい変更通知はEventHubsに流す
• EventHub: <接続文字列>な構成なので
他のリソースにもアクセスできるようになるかも?
• ドキュメントも「さまざまな」とつくくらいだし・・・
• EventGridとかQueueStorageとかつなげたいよね・・・
• 適当なPrefix試したけどやっぱだめだった
参考ページ
• さまざまな方法で変更通知を受け取る (プレビュー)
• https://docs.microsoft.com/ja-jp/graph/change-notifications-delivery
• サブスクリプション リソースの種類
• https://docs.microsoft.com/ja-jp/graph/api/resources/subscription?view=graph-rest-beta
• Azure Event Hubs - ビッグ データのストリーミング プラットフォームとなるイベント インジェスト サービス
• https://docs.microsoft.com/ja-jp/azure/event-hubs/event-hubs-about
• Azure/azure-sdk-for-net
• https://github.com/Azure/azure-sdk-for-net/tree/master/sdk/eventhub/Azure.Messaging.EventHubs/samples
• チュートリアル: Azure Portal とトピック/サブスクリプションを使用して在庫を更新する
• https://docs.microsoft.com/ja-jp/azure/service-bus-messaging/service-bus-tutorial-topics-subscriptions-portal

More Related Content

PPTX
Microsoft Graphの変更通知で遊ぶ
PDF
Event Report - Microsoft Ignite2017
PPTX
Microsoft Graphことはじめ クエリパラメータ編
PPTX
Microsoft Graphを使ってアプリケーションを作った時の話
PPTX
Microsoft Graph完全に理解した気がしてた
PDF
データから価値を生み続けるには
PDF
クラウドを使ったデザイン データ活用 - Autodesk Forge ご紹介 @ デブサミ 2016
PDF
VS Code & Flaskで作るCloud NativeアプリとDevOps
Microsoft Graphの変更通知で遊ぶ
Event Report - Microsoft Ignite2017
Microsoft Graphことはじめ クエリパラメータ編
Microsoft Graphを使ってアプリケーションを作った時の話
Microsoft Graph完全に理解した気がしてた
データから価値を生み続けるには
クラウドを使ったデザイン データ活用 - Autodesk Forge ご紹介 @ デブサミ 2016
VS Code & Flaskで作るCloud NativeアプリとDevOps

What's hot (12)

PDF
Ignite 2021秋 recap - 開発者向け新機能紹介
PDF
[Cloud OnAir] G Suite って何が便利なの?Google AI を活用した働き方とは?今さら聞けない G Suite の最新便利機能をユ...
PPTX
いまできるデータ分析を Power BI ではじめよう
PDF
[HAKODATE Developer Conference 2018] 「Azure Functions」で始めるサーバーレス アプリケーション開発
PPTX
View and Data API のご紹介 @ WebGL Meetup #2
PPTX
Microsoft Graphのことはじめ
PDF
[Cloud OnAir] G Suite の最新機能アップデート 2018年12月18日放送
PDF
Power Automate with kintone
PDF
2021 01-30 Visual Studio 2019 知っているか!?この機能 in BuriKaigi2021
PPTX
TeamsのチャネルとやりとりするWeb Applicationを作ったお話
PPTX
開発者におくる Power BI を使う時に考えるべきアーキテクチャ ~ データを溜めるのは誰だ? ~
PDF
[AC11] サーバー管理よ、サヨウナラ。サーバーレスアーキテクチャの意義と実践
Ignite 2021秋 recap - 開発者向け新機能紹介
[Cloud OnAir] G Suite って何が便利なの?Google AI を活用した働き方とは?今さら聞けない G Suite の最新便利機能をユ...
いまできるデータ分析を Power BI ではじめよう
[HAKODATE Developer Conference 2018] 「Azure Functions」で始めるサーバーレス アプリケーション開発
View and Data API のご紹介 @ WebGL Meetup #2
Microsoft Graphのことはじめ
[Cloud OnAir] G Suite の最新機能アップデート 2018年12月18日放送
Power Automate with kintone
2021 01-30 Visual Studio 2019 知っているか!?この機能 in BuriKaigi2021
TeamsのチャネルとやりとりするWeb Applicationを作ったお話
開発者におくる Power BI を使う時に考えるべきアーキテクチャ ~ データを溜めるのは誰だ? ~
[AC11] サーバー管理よ、サヨウナラ。サーバーレスアーキテクチャの意義と実践
Ad

Similar to Azure Event HubsでGraph変更通知を受け取る (20)

PPTX
Intelligent cloud with Microsoft Graph.
PDF
サーバーレスやマイクロサービスへの"チャレンジ"を後押ししてくれるセッションを紹介
PPTX
僕はあなたを監視する(MS Graph Subscriptionのβで公開されたpresencesを使おう!)
PDF
[Japan M365 Dev UG] Teams Toolkit v4 を使ってみよう!
PDF
[Japan Tech summit 2017] APP 003
PPTX
Logic Apps/Flow Update Summary
PPTX
Data & AI Update 情報 - 2020年4月版
PDF
Docker on azure!進化していくcontainerを覗いてみよう!
PDF
Microsoft Build 2020: Azure IoT 関連最新情報
PDF
Tech summitの歩き方 azure編
PDF
Azure Machine Learning Build 2020
PPTX
Office アドインの紹介
PDF
.NET の今と今後に思うこと (Tokyo Ver.)
PDF
Azure Functions と Serverless - 概要と企業向け Tips
PDF
Microsoft Build 2021をさらに楽しむためのおすすめセッション/サンプル コード Powered by Microsoft MVPs
PDF
JPC2016: MTA-01: デジタル トランスフォーメーションを支えるクラウド選定の新基準 –インテリジェント クラウドへの道–
PPTX
Office ScriptsとPower Automate連携による業務効率化
PDF
Skype for Business + Bot + Graph API
PDF
【Japan Partner Conference 2019】遂に来た! フルマーネージド Azure Red Hat OpenShift で実現する O...
PPTX
Windows 365 Enterprise に触れてみよう
Intelligent cloud with Microsoft Graph.
サーバーレスやマイクロサービスへの"チャレンジ"を後押ししてくれるセッションを紹介
僕はあなたを監視する(MS Graph Subscriptionのβで公開されたpresencesを使おう!)
[Japan M365 Dev UG] Teams Toolkit v4 を使ってみよう!
[Japan Tech summit 2017] APP 003
Logic Apps/Flow Update Summary
Data & AI Update 情報 - 2020年4月版
Docker on azure!進化していくcontainerを覗いてみよう!
Microsoft Build 2020: Azure IoT 関連最新情報
Tech summitの歩き方 azure編
Azure Machine Learning Build 2020
Office アドインの紹介
.NET の今と今後に思うこと (Tokyo Ver.)
Azure Functions と Serverless - 概要と企業向け Tips
Microsoft Build 2021をさらに楽しむためのおすすめセッション/サンプル コード Powered by Microsoft MVPs
JPC2016: MTA-01: デジタル トランスフォーメーションを支えるクラウド選定の新基準 –インテリジェント クラウドへの道–
Office ScriptsとPower Automate連携による業務効率化
Skype for Business + Bot + Graph API
【Japan Partner Conference 2019】遂に来た! フルマーネージド Azure Red Hat OpenShift で実現する O...
Windows 365 Enterprise に触れてみよう
Ad

More from DevTakas (11)

PPTX
Microsoft Graph Toolkitで手軽にM365フロント開発
PPTX
Azure Artifactsを触ってみよう
PPTX
Azure Web PubSub Serviceを触ってみた
PPTX
Microsoft Graph Toolkitを使ってGraph開発を体験しよう
PPTX
Azure ADアプリケーションを使用した認証のあれやこれ ASP.NET Core編
PPTX
Azure ADアプリケーションを使用した認証のあれやこれ
PPTX
ASP.NET Core WebAPIでODataを使おう
PPTX
msal.js v2を触る
PPTX
Azure AD Application を使用した認証のアレコレ
PPTX
AzureADの認証で失敗した話
PDF
msal.jsを使う
Microsoft Graph Toolkitで手軽にM365フロント開発
Azure Artifactsを触ってみよう
Azure Web PubSub Serviceを触ってみた
Microsoft Graph Toolkitを使ってGraph開発を体験しよう
Azure ADアプリケーションを使用した認証のあれやこれ ASP.NET Core編
Azure ADアプリケーションを使用した認証のあれやこれ
ASP.NET Core WebAPIでODataを使おう
msal.js v2を触る
Azure AD Application を使用した認証のアレコレ
AzureADの認証で失敗した話
msal.jsを使う

Azure Event HubsでGraph変更通知を受け取る