Submit Search
Upload
Azure Functionsを業務利用する時の勘所
•
Download as PPTX, PDF
•
3 likes
•
3,351 views
裕之 木下
Follow
第20回勉強会 きたアズ登壇資料
Read less
Read more
Technology
Report
Share
Report
Share
1 of 23
Download now
Recommended
Cloud runのオートスケールを検証してみる
Cloud runのオートスケールを検証してみる
虎の穴 開発室
細かすぎて伝わらないかもしれない Azure Container Networking Deep Dive
細かすぎて伝わらないかもしれない Azure Container Networking Deep Dive
Toru Makabe
Kubernetes 疲れに Azure Container Apps はいかがでしょうか?(江東区合同ライトニングトーク 発表資料)
Kubernetes 疲れに Azure Container Apps はいかがでしょうか?(江東区合同ライトニングトーク 発表資料)
NTT DATA Technology & Innovation
Google Cloud のネットワークとロードバランサ
Google Cloud のネットワークとロードバランサ
Google Cloud Platform - Japan
GNU AGPLv3について(On GNU AGPLv3)
GNU AGPLv3について(On GNU AGPLv3)
真行 八田
BigQuery Query Optimization クエリ高速化編
BigQuery Query Optimization クエリ高速化編
sutepoi
Ingress on Azure Kubernetes Service
Ingress on Azure Kubernetes Service
Toru Makabe
SageMakerを使った異常検知
SageMakerを使った異常検知
Ryohei Yamaguchi
Recommended
Cloud runのオートスケールを検証してみる
Cloud runのオートスケールを検証してみる
虎の穴 開発室
細かすぎて伝わらないかもしれない Azure Container Networking Deep Dive
細かすぎて伝わらないかもしれない Azure Container Networking Deep Dive
Toru Makabe
Kubernetes 疲れに Azure Container Apps はいかがでしょうか?(江東区合同ライトニングトーク 発表資料)
Kubernetes 疲れに Azure Container Apps はいかがでしょうか?(江東区合同ライトニングトーク 発表資料)
NTT DATA Technology & Innovation
Google Cloud のネットワークとロードバランサ
Google Cloud のネットワークとロードバランサ
Google Cloud Platform - Japan
GNU AGPLv3について(On GNU AGPLv3)
GNU AGPLv3について(On GNU AGPLv3)
真行 八田
BigQuery Query Optimization クエリ高速化編
BigQuery Query Optimization クエリ高速化編
sutepoi
Ingress on Azure Kubernetes Service
Ingress on Azure Kubernetes Service
Toru Makabe
SageMakerを使った異常検知
SageMakerを使った異常検知
Ryohei Yamaguchi
どうやって決める?kubernetesでのシークレット管理方法(Cloud Native Days 2020 発表資料)
どうやって決める?kubernetesでのシークレット管理方法(Cloud Native Days 2020 発表資料)
NTT DATA Technology & Innovation
第15回JSSUG「Azure SQL Database 超入門」
第15回JSSUG「Azure SQL Database 超入門」
裕之 木下
Azure Blob Storageへの様々なアクセス方法を比べてみた JAZUG12周年イベント
Azure Blob Storageへの様々なアクセス方法を比べてみた JAZUG12周年イベント
Shingo Kawahara
M04_失敗しないための Azure Virtual Desktop 設計ガイド
M04_失敗しないための Azure Virtual Desktop 設計ガイド
日本マイクロソフト株式会社
ゲームアーキテクチャパターン (Aurora Serverless / DynamoDB)
ゲームアーキテクチャパターン (Aurora Serverless / DynamoDB)
Amazon Web Services Japan
Java開発の強力な相棒として今すぐ使えるGroovy
Java開発の強力な相棒として今すぐ使えるGroovy
Yasuharu Nakano
OpenID Connect入門
OpenID Connect入門
土岐 孝平
Guide To AGPL
Guide To AGPL
Mikiya Okuno
Kongの概要と導入事例
Kongの概要と導入事例
briscola-tokyo
Dockerを支える技術
Dockerを支える技術
Etsuji Nakai
Python 3.9からの新定番zoneinfoを使いこなそう
Python 3.9からの新定番zoneinfoを使いこなそう
Ryuji Tsutsui
AWS エンジニア育成における効果的なトレーニング活用のすすめ
AWS エンジニア育成における効果的なトレーニング活用のすすめ
Trainocate Japan, Ltd.
Azure Infrastructure as Code 体験入隊
Azure Infrastructure as Code 体験入隊
Toru Makabe
Kubernetesでの性能解析 ~なんとなく遅いからの脱却~(Kubernetes Meetup Tokyo #33 発表資料)
Kubernetesでの性能解析 ~なんとなく遅いからの脱却~(Kubernetes Meetup Tokyo #33 発表資料)
NTT DATA Technology & Innovation
Azure AD とアプリケーションを SAML 連携する際に陥る事例と対処方法について
Azure AD とアプリケーションを SAML 連携する際に陥る事例と対処方法について
Shinya Yamaguchi
AWS Organizations連携サービスの罠(Security JAWS 第26回 発表資料)
AWS Organizations連携サービスの罠(Security JAWS 第26回 発表資料)
NTT DATA Technology & Innovation
イマドキ!ユースケース別に見るAWS IoT への接続パターン
イマドキ!ユースケース別に見るAWS IoT への接続パターン
seiichi arai
Keycloakの実際・翻訳プロジェクト紹介
Keycloakの実際・翻訳プロジェクト紹介
Hiroyuki Wada
Azure API Management 俺的マニュアル
Azure API Management 俺的マニュアル
貴志 上坂
PostgreSQLをKubernetes上で活用するためのOperator紹介!(Cloud Native Database Meetup #3 発表資料)
PostgreSQLをKubernetes上で活用するためのOperator紹介!(Cloud Native Database Meetup #3 発表資料)
NTT DATA Technology & Innovation
俺的 Build 2020 Update まとめ
俺的 Build 2020 Update まとめ
Yui Ashikaga
Azureのざっくり利用料金を毎日Slackに通知する
Azureのざっくり利用料金を毎日Slackに通知する
Shingo Kawahara
More Related Content
What's hot
どうやって決める?kubernetesでのシークレット管理方法(Cloud Native Days 2020 発表資料)
どうやって決める?kubernetesでのシークレット管理方法(Cloud Native Days 2020 発表資料)
NTT DATA Technology & Innovation
第15回JSSUG「Azure SQL Database 超入門」
第15回JSSUG「Azure SQL Database 超入門」
裕之 木下
Azure Blob Storageへの様々なアクセス方法を比べてみた JAZUG12周年イベント
Azure Blob Storageへの様々なアクセス方法を比べてみた JAZUG12周年イベント
Shingo Kawahara
M04_失敗しないための Azure Virtual Desktop 設計ガイド
M04_失敗しないための Azure Virtual Desktop 設計ガイド
日本マイクロソフト株式会社
ゲームアーキテクチャパターン (Aurora Serverless / DynamoDB)
ゲームアーキテクチャパターン (Aurora Serverless / DynamoDB)
Amazon Web Services Japan
Java開発の強力な相棒として今すぐ使えるGroovy
Java開発の強力な相棒として今すぐ使えるGroovy
Yasuharu Nakano
OpenID Connect入門
OpenID Connect入門
土岐 孝平
Guide To AGPL
Guide To AGPL
Mikiya Okuno
Kongの概要と導入事例
Kongの概要と導入事例
briscola-tokyo
Dockerを支える技術
Dockerを支える技術
Etsuji Nakai
Python 3.9からの新定番zoneinfoを使いこなそう
Python 3.9からの新定番zoneinfoを使いこなそう
Ryuji Tsutsui
AWS エンジニア育成における効果的なトレーニング活用のすすめ
AWS エンジニア育成における効果的なトレーニング活用のすすめ
Trainocate Japan, Ltd.
Azure Infrastructure as Code 体験入隊
Azure Infrastructure as Code 体験入隊
Toru Makabe
Kubernetesでの性能解析 ~なんとなく遅いからの脱却~(Kubernetes Meetup Tokyo #33 発表資料)
Kubernetesでの性能解析 ~なんとなく遅いからの脱却~(Kubernetes Meetup Tokyo #33 発表資料)
NTT DATA Technology & Innovation
Azure AD とアプリケーションを SAML 連携する際に陥る事例と対処方法について
Azure AD とアプリケーションを SAML 連携する際に陥る事例と対処方法について
Shinya Yamaguchi
AWS Organizations連携サービスの罠(Security JAWS 第26回 発表資料)
AWS Organizations連携サービスの罠(Security JAWS 第26回 発表資料)
NTT DATA Technology & Innovation
イマドキ!ユースケース別に見るAWS IoT への接続パターン
イマドキ!ユースケース別に見るAWS IoT への接続パターン
seiichi arai
Keycloakの実際・翻訳プロジェクト紹介
Keycloakの実際・翻訳プロジェクト紹介
Hiroyuki Wada
Azure API Management 俺的マニュアル
Azure API Management 俺的マニュアル
貴志 上坂
PostgreSQLをKubernetes上で活用するためのOperator紹介!(Cloud Native Database Meetup #3 発表資料)
PostgreSQLをKubernetes上で活用するためのOperator紹介!(Cloud Native Database Meetup #3 発表資料)
NTT DATA Technology & Innovation
What's hot
(20)
どうやって決める?kubernetesでのシークレット管理方法(Cloud Native Days 2020 発表資料)
どうやって決める?kubernetesでのシークレット管理方法(Cloud Native Days 2020 発表資料)
第15回JSSUG「Azure SQL Database 超入門」
第15回JSSUG「Azure SQL Database 超入門」
Azure Blob Storageへの様々なアクセス方法を比べてみた JAZUG12周年イベント
Azure Blob Storageへの様々なアクセス方法を比べてみた JAZUG12周年イベント
M04_失敗しないための Azure Virtual Desktop 設計ガイド
M04_失敗しないための Azure Virtual Desktop 設計ガイド
ゲームアーキテクチャパターン (Aurora Serverless / DynamoDB)
ゲームアーキテクチャパターン (Aurora Serverless / DynamoDB)
Java開発の強力な相棒として今すぐ使えるGroovy
Java開発の強力な相棒として今すぐ使えるGroovy
OpenID Connect入門
OpenID Connect入門
Guide To AGPL
Guide To AGPL
Kongの概要と導入事例
Kongの概要と導入事例
Dockerを支える技術
Dockerを支える技術
Python 3.9からの新定番zoneinfoを使いこなそう
Python 3.9からの新定番zoneinfoを使いこなそう
AWS エンジニア育成における効果的なトレーニング活用のすすめ
AWS エンジニア育成における効果的なトレーニング活用のすすめ
Azure Infrastructure as Code 体験入隊
Azure Infrastructure as Code 体験入隊
Kubernetesでの性能解析 ~なんとなく遅いからの脱却~(Kubernetes Meetup Tokyo #33 発表資料)
Kubernetesでの性能解析 ~なんとなく遅いからの脱却~(Kubernetes Meetup Tokyo #33 発表資料)
Azure AD とアプリケーションを SAML 連携する際に陥る事例と対処方法について
Azure AD とアプリケーションを SAML 連携する際に陥る事例と対処方法について
AWS Organizations連携サービスの罠(Security JAWS 第26回 発表資料)
AWS Organizations連携サービスの罠(Security JAWS 第26回 発表資料)
イマドキ!ユースケース別に見るAWS IoT への接続パターン
イマドキ!ユースケース別に見るAWS IoT への接続パターン
Keycloakの実際・翻訳プロジェクト紹介
Keycloakの実際・翻訳プロジェクト紹介
Azure API Management 俺的マニュアル
Azure API Management 俺的マニュアル
PostgreSQLをKubernetes上で活用するためのOperator紹介!(Cloud Native Database Meetup #3 発表資料)
PostgreSQLをKubernetes上で活用するためのOperator紹介!(Cloud Native Database Meetup #3 発表資料)
Similar to Azure Functionsを業務利用する時の勘所
俺的 Build 2020 Update まとめ
俺的 Build 2020 Update まとめ
Yui Ashikaga
Azureのざっくり利用料金を毎日Slackに通知する
Azureのざっくり利用料金を毎日Slackに通知する
Shingo Kawahara
Container x azure x kubernetes
Container x azure x kubernetes
Yasuaki Matsuda
Cosmos DB Consistency Levels and Introduction of TLA+
Cosmos DB Consistency Levels and Introduction of TLA+
Takekazu Omi
Start learning Azure Cosmos DB with Azure Synapse Link
Start learning Azure Cosmos DB with Azure Synapse Link
Oshitari_kochi
Azure Fundamental
Azure Fundamental
Yui Ashikaga
Windows Azure Programming
Windows Azure Programming
Visual Studio Users Group Japan
Azure Cosmos DB を使った クラウドネイティブアプリケーションの 設計パターン
Azure Cosmos DB を使った クラウドネイティブアプリケーションの 設計パターン
Kazuyuki Miyake
Tech Night Recap Sapporo - Ignite & .NET Conf -.pptx
Tech Night Recap Sapporo - Ignite & .NET Conf -.pptx
Yasuaki Matsuda
[Japan Tech summit 2017] CLD 021
[Japan Tech summit 2017] CLD 021
Microsoft Tech Summit 2017
[DO13] 楽天のクラウドストレージ使いこなし術 Azure と OSS で少しずつ進めるレガシー脱却
[DO13] 楽天のクラウドストレージ使いこなし術 Azure と OSS で少しずつ進めるレガシー脱却
de:code 2017
[Microsoft Tech Summit 2018] Azure Machine Learning サービスと Azure Databricks で実...
[Microsoft Tech Summit 2018] Azure Machine Learning サービスと Azure Databricks で実...
Naoki (Neo) SATO
AzureStorageのオブジェクトレプリケートを試してみた
AzureStorageのオブジェクトレプリケートを試してみた
裕之 木下
Azure Function GAした!Visual Studio Tools for Azure Functions もプレビューだ!
Azure Function GAした!Visual Studio Tools for Azure Functions もプレビューだ!
Yasuaki Matsuda
Azure Blockchain Service ハンズオン ~ Logic App 統合編 ~
Azure Blockchain Service ハンズオン ~ Logic App 統合編 ~
Takunori Minamisawa
IaC事始め Infrastructure as Code やってみる?
IaC事始め Infrastructure as Code やってみる?
大使 梶原
build2017のazure関連情報まとめ
build2017のazure関連情報まとめ
裕之 木下
今こそ知りたい!Microsoft Azureの基礎
今こそ知りたい!Microsoft Azureの基礎
Trainocate Japan, Ltd.
Real World Azure RBAC
Real World Azure RBAC
Toru Makabe
はじめての Azure 開発
はじめての Azure 開発
Yoshitaka Seo
Similar to Azure Functionsを業務利用する時の勘所
(20)
俺的 Build 2020 Update まとめ
俺的 Build 2020 Update まとめ
Azureのざっくり利用料金を毎日Slackに通知する
Azureのざっくり利用料金を毎日Slackに通知する
Container x azure x kubernetes
Container x azure x kubernetes
Cosmos DB Consistency Levels and Introduction of TLA+
Cosmos DB Consistency Levels and Introduction of TLA+
Start learning Azure Cosmos DB with Azure Synapse Link
Start learning Azure Cosmos DB with Azure Synapse Link
Azure Fundamental
Azure Fundamental
Windows Azure Programming
Windows Azure Programming
Azure Cosmos DB を使った クラウドネイティブアプリケーションの 設計パターン
Azure Cosmos DB を使った クラウドネイティブアプリケーションの 設計パターン
Tech Night Recap Sapporo - Ignite & .NET Conf -.pptx
Tech Night Recap Sapporo - Ignite & .NET Conf -.pptx
[Japan Tech summit 2017] CLD 021
[Japan Tech summit 2017] CLD 021
[DO13] 楽天のクラウドストレージ使いこなし術 Azure と OSS で少しずつ進めるレガシー脱却
[DO13] 楽天のクラウドストレージ使いこなし術 Azure と OSS で少しずつ進めるレガシー脱却
[Microsoft Tech Summit 2018] Azure Machine Learning サービスと Azure Databricks で実...
[Microsoft Tech Summit 2018] Azure Machine Learning サービスと Azure Databricks で実...
AzureStorageのオブジェクトレプリケートを試してみた
AzureStorageのオブジェクトレプリケートを試してみた
Azure Function GAした!Visual Studio Tools for Azure Functions もプレビューだ!
Azure Function GAした!Visual Studio Tools for Azure Functions もプレビューだ!
Azure Blockchain Service ハンズオン ~ Logic App 統合編 ~
Azure Blockchain Service ハンズオン ~ Logic App 統合編 ~
IaC事始め Infrastructure as Code やってみる?
IaC事始め Infrastructure as Code やってみる?
build2017のazure関連情報まとめ
build2017のazure関連情報まとめ
今こそ知りたい!Microsoft Azureの基礎
今こそ知りたい!Microsoft Azureの基礎
Real World Azure RBAC
Real World Azure RBAC
はじめての Azure 開発
はじめての Azure 開発
More from 裕之 木下
Azureもくもく会@東京のいままでとこれからと
Azureもくもく会@東京のいままでとこれからと
裕之 木下
Client Side Balzorでツールを作ってみた
Client Side Balzorでツールを作ってみた
裕之 木下
Azure DevOpsで技術同人誌作成
Azure DevOpsで技術同人誌作成
裕之 木下
ノンコーディングでLineBotを作る MS FLOW編
ノンコーディングでLineBotを作る MS FLOW編
裕之 木下
クラウドで動画配信
クラウドで動画配信
裕之 木下
「Azure durable functions」の概要
「Azure durable functions」の概要
裕之 木下
Azureコスト管理機能のお話
Azureコスト管理機能のお話
裕之 木下
Xamrin de live2d
Xamrin de live2d
裕之 木下
Azure vs aws比較 エンコード ace用
Azure vs aws比較 エンコード ace用
裕之 木下
azure functionsでlinebotを作ってみた
azure functionsでlinebotを作ってみた
裕之 木下
azure functionsとcsx
azure functionsとcsx
裕之 木下
ノンプログラミングで楽したい
ノンプログラミングで楽したい
裕之 木下
azure botserviceをもっと身近に
azure botserviceをもっと身近に
裕之 木下
azure障害は忘れたころにやってくる
azure障害は忘れたころにやってくる
裕之 木下
明日から役立つazure①
明日から役立つazure①
裕之 木下
昨今のpaas事情
昨今のpaas事情
裕之 木下
懲りずにazure functionsでlinebotを作ってみた
懲りずにazure functionsでlinebotを作ってみた
裕之 木下
More from 裕之 木下
(17)
Azureもくもく会@東京のいままでとこれからと
Azureもくもく会@東京のいままでとこれからと
Client Side Balzorでツールを作ってみた
Client Side Balzorでツールを作ってみた
Azure DevOpsで技術同人誌作成
Azure DevOpsで技術同人誌作成
ノンコーディングでLineBotを作る MS FLOW編
ノンコーディングでLineBotを作る MS FLOW編
クラウドで動画配信
クラウドで動画配信
「Azure durable functions」の概要
「Azure durable functions」の概要
Azureコスト管理機能のお話
Azureコスト管理機能のお話
Xamrin de live2d
Xamrin de live2d
Azure vs aws比較 エンコード ace用
Azure vs aws比較 エンコード ace用
azure functionsでlinebotを作ってみた
azure functionsでlinebotを作ってみた
azure functionsとcsx
azure functionsとcsx
ノンプログラミングで楽したい
ノンプログラミングで楽したい
azure botserviceをもっと身近に
azure botserviceをもっと身近に
azure障害は忘れたころにやってくる
azure障害は忘れたころにやってくる
明日から役立つazure①
明日から役立つazure①
昨今のpaas事情
昨今のpaas事情
懲りずにazure functionsでlinebotを作ってみた
懲りずにazure functionsでlinebotを作ってみた
Recently uploaded
TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案
TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案
sugiuralab
論文紹介:Semantic segmentation using Vision Transformers: A survey
論文紹介:Semantic segmentation using Vision Transformers: A survey
Toru Tamaki
TSAL operation mechanism and circuit diagram.pdf
TSAL operation mechanism and circuit diagram.pdf
taisei2219
論文紹介:Automated Classification of Model Errors on ImageNet
論文紹介:Automated Classification of Model Errors on ImageNet
Toru Tamaki
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...
Toru Tamaki
SOPを理解する 2024/04/19 の勉強会で発表されたものです
SOPを理解する 2024/04/19 の勉強会で発表されたものです
iPride Co., Ltd.
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)
Hiroki Ichikura
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介
Yuma Ohgami
Recently uploaded
(8)
TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案
TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案
論文紹介:Semantic segmentation using Vision Transformers: A survey
論文紹介:Semantic segmentation using Vision Transformers: A survey
TSAL operation mechanism and circuit diagram.pdf
TSAL operation mechanism and circuit diagram.pdf
論文紹介:Automated Classification of Model Errors on ImageNet
論文紹介:Automated Classification of Model Errors on ImageNet
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...
SOPを理解する 2024/04/19 の勉強会で発表されたものです
SOPを理解する 2024/04/19 の勉強会で発表されたものです
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介
Azure Functionsを業務利用する時の勘所
1.
Azure Functionsを業務利用する時の勘所 2018年9月29日 JAZUG札幌支部 第20回勉強会登壇
2.
自己紹介 2 ・名前 : 木下
裕之 ・HN:kingkino ・Twitter:@kingkinoko ・FaceBook:kino.king.37 ・Azure暦:7年 ・Microsoft MVP for Microsoft Azure ・MCSE : Cloud Platform and Infrastructure 2017 ・Azureもくもく会@東京 主催 ・好きなAzureサービス Azure Storage、Azure MediaService Azure Functions
3.
注意事項 3 ※この資料は2018年9月29日時点での情報を元に作成しています 更新が早いのですぐに古い情報になりますため予めご了承ください
4.
謝辞 4 ※本スライドは文字多めです
5.
Azure Functions使ってますか? 5 Azure Functionsの歴史を振り返ってみましょう。 ・2016年4月のbuildでPublic
Previewとして公開 ・2016年11月16日にGA(General Available) ・2017年1月Precompiled Functionsをサポート ・2017年8月VS2017 PreviewでIDEによる開発サポート ・2018年8月にAzure Functions Runtime2.0の大幅更改 ・2018年9月にAuzre Functions V2がGA GAしてから約2年、お仕事で使う機会も増えてきたと思いま す。V2もGAしたので、ここでV1の機能を振り返りつつ業務 利用した時の話をしようと思います。
6.
本日お話する機能について 6 タイプ トリガー 入力
出力 備考 Blob Storage ○ ○ ○ Cosmos DB ○ ○ ○ Event Grid ○ Event Hubs ○ ○ 外部ファイル ○ ○ DropBoxやGoogleドライブなどのファイル管理システム ※V2には移行されない模様 外部テーブル ○ ○ MySQLやDB2等のDBシステム ※V2には移行されない模様 HTTP ○ ○ Mobile Apps ○ ○ Notification Hubs ○ ※V2には移行されない模様 Queue Storage ○ ○ SendGrid ○ Service Bus ○ ○ Table Storage ○ ○ Timer ○ Twilio ○ Webhook ○ ○ ※V2には移行されない模様 C#でPrecompiled版をメインに下記の表の赤い部分について話します
7.
AzureFunctionsとBlob 7 タイプ トリガー 入力
出力 備考 Blob Storage ○ ○ ○ [FunctionName("Function1")] public static void Run( [BlobTrigger("samples/{name}",Connection = "AzureStorage")]Stream myBlob, string name, TraceWriter log) { log.Info($"C# Blob trigger function Processed blobn Name:{name} n Size: {myBlob.Length} Bytes"); } ■ BlobTriggerの入力バインド種類 ・string ・TextReader ・Stream ・ICloudBlob ・CloudBlockBlob ・CloudPageBlob ・CloudAppendBlob ・Byte[] ・JSON としてシリアル化可能な POCO ■ BlobAttributeのバインド種類 ・string ・TextReader ・Stream ・ICloudBlob ・CloudBlockBlob ・CloudPageBlob ・CloudBlobContainer ・CloudBlobDirectory ・IEnumerable<CloudBlockBlob> ・IEnumerable<CloudPageBlob> ■ BlobTriggerの出力バインド種類 ・TextWriter ・out string ・out Byte[] ・CloudBlobStream ・Stream ・CloudBlobContainer ・CloudBlobDirectory ・ICloudBlob ・CloudBlockBlob ・CloudPageBlob ・CloudAppendBlob
8.
AzureFunctionsとBlob 8 [FunctionName("Function1")] public static void
Run( [BlobTrigger("samples/{name}",Connection = "AzureStorage")]Stream myBlob, string name, TraceWriter log) ■ AzureStorageの接続文字列 下記の接続文字列を直接埋め込むかアプリ設定に外出しして設定します DefaultEndpointsProtocol=https;AccountName={ストレージアカウント名};AccountKey={Key} [FunctionName("Function1")] [StorageAccount("AzureStorage")] public static void Run( [BlobTrigger("samples/{name}")]Stream myBlob, string name, TraceWriter log) StorageAccountAttributeで設定することも可能です。 この場合は設定した関数全体で利用することができます。
9.
AzureFunctionsとBlob 9 ■ AzureStorageの接続文字列 [FunctionName("Function1")] [StorageAccount("AzureStorage01")] public static
void Run01( [BlobTrigger("samples/{name}",Connection = "AzureStorage02")]Stream myBlob, [Blob("samples-demo-out/{DateTIme}")]CloudBlockBlob outBlob, string name, TraceWriter log) StorageAccountAttributeとBlobTriggerAttributeやBlobAttributeに別々にConnectionを設定した場合 は個別に設定したほうが優先されます。 上記の例だとBlobTriggerAttributeは[AzrueStorage02]のAzureStorageを参照します。 BlobAttributeはConnectionを設定していないので[AzrueStorage01]のAzureStorageを参照します。
10.
AzureFunctionsとBlob 10 [FunctionName("Function1")] [StorageAccount(“AzureStorage01”)] public static void
Run( [BlobTrigger("samples/{name}")]Stream myBlob, [Blob("samples-in/temaplate.xlsx")]CloudBlobStream inBlob string name, TraceWriter log) ■ Blobインプットバインディングとフィルタ 上記の例で①はAzrueStorage01ストレージにあるSamplesコンテナにblobが作成されたタイミングで Triggerし作成されたファイルをStream形式で取得しています。 ②はBlobAttributeを利用してsamples-inコンテナにある[template.xlsx]blobをのCloudBlobStream形式 で取得しています。 ファイル名にフィルタしてTriggerする条件をファイル名でコントロールすことが可能です。 例えば“samples/{name}.jpg”と設定しておけば拡張子がjpgのファイルの時にTriggerされます。 Blobのインプットバインディングは対象コンテナにBlob数が多くなると起動が遅くなるため注意が必要で す。トリガー用のコンテナと保存用のコンテナを別に用意して、トリガー用コンテナから保存用コンテナ にBlobを移動させるようにしましょう。 ① ②
11.
AzureFunctionsとBlob 11 [FunctionName("Function1")] [StorageAccount("AzureStorage")] public static void
Run01( [BlobTrigger("samples/{name}")]Stream myBlob, [Blob("samples-out/{DateTime}")]CloudBlockBlob outBlob, string name, TraceWriter log) { outBlob.UploadFromStream(myBlob); } ■ Blobアウトプットバインディング 上記の例ではAzureStorageのSamplesコンテナに任意のBlobが作成されたらStream形式で取得し samples-outコンテナに現在日付でBlob名を置き換えて保存します。 アウトプットバインディングを設定すると出力先の情報がバインドされます。 {DateTime}の個所は{rand-guid}と置き換えると現在日付ではなくGUIDになります。 {DateTime} : 2018-09-20T18-00-00Z {rand-guid} : 62473a8d-e1f5-4c35-8841-5dad1f67075b
12.
AzureFunctionsとBlob 12 ■ バインディングのメリット 通常では上記のように記載しないとAzureStorageBlobにはアクセス出来ませんがバインディングを利用す れば上記のコードを1行で表現してBlobにアクセスできます。 バインディングを利用することで記述量が少なくなるのはメリットです。 var accountName
= "teststorage"; var accessKey = "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"; var credential = new StorageCredentials(accountName, accessKey); var storageAccount = new CloudStorageAccount(credential, true); CloudBlobClient blobClient = storageAccount.CreateCloudBlobClient(); CloudBlobContainer container = blobClient.GetContainerReference("samples"); CloudBlockBlob blob = container.GetBlockBlobReference("name");
13.
AzureFunctionsとBlob 13 ■バインディングのデメリット AzureFunctionsのV1はWindowsAzureStorageバージョン7.2.1が設定されているため、このバージョン を越えるAzureStorageをNugetするとバインディングが正常に起動しなくなります。 下記のようなエラーが出たときはAzureStorageのバージョンを確認しましょう。 因みにFunctionsのV2は8.6.0に設定されています。 またAttributeと型の組み合わせによって同じようなエラーがでます。 その時はエラー内容をよく読んでAttributeと型の組み合わせを確認しましょう。
14.
AzureFunctionsとQueueStorage 14 タイプ トリガー 入力
出力 備考 Queue Storage ○ ○ [FunctionName("Function2")] public static void Run( [QueueTrigger("myqueue-items", Connection = "AzureStorage")]string myQueueItem, TraceWriter log) { log.Info($"C# Queue trigger function processed: {myQueueItem}"); } ■ QueueTrigger QueueTriggerはAzrueStorageQueueにキューイングされるとトリガーされます。 上記の例ではAzureStorageのmyqueue-itemsキューにキューイングされるとトリガーされキューに入力 されている情報を取得します。 QueueStorageにキューイングされた情報はランダムに処理されるために順序制約がありません。FIFO を実現したい場合はServiceBusQueueを利用するのが通例ですが費用が高くなります。また、 ServiceBusQueueでもエラーが起きたときは順序保証がされません。
15.
AzureFunctionsとQueueStorage 15 ■ QueueTriggerとアウトプットバインディング [FunctionName("Function1")] [return: Queue("myqueue-items",
Connection = "AzureStorage")] public static string Run([QueueTrigger("myqueue-items", Connection = "AzureStorage")]string myQueueItem, TraceWriter log) { log.Info($"C# Queue trigger function processed: {myQueueItem}"); return myQueueItem; } アウトプットバインディングできるのはJsonとしてシリアル化可能なオブジェクト、string、Byte[]、 CloudQueueMessageになります。上記の例ではmyqueue-itemsにキューイングした値をmyqueue- itemsにアウトプットする内容になっています。これは悪い例でキューイングの無限ループになります。 別のストレージのQueueに出力するようにすればQueueによるDurableFunctionsでいうところの FunctionChainのような動きを実現できるますが、Functionsで実装するのは大変なので DurableFucntionsを利用したほうが良い場合の方が多いです。
16.
AzureFunctionsとTimer 16 タイプ トリガー 入力
出力 備考 Timer ○ ■ Cronの設定 LinuxのCrond式と違って秒単位まで明示的に記述する必要があります。 Cron式は[TimerTrigger(”%TimerCron%”)]と記述することで外出しすることが可能です。 例) “TimerCron” : “0 */5 * * * *” Cronの設定に不慣れな場合はCheatSheetがあるので参考にしながら設定しましょう。 Azure Functions – Time Trigger (CRON) Cheat Sheet https://codehollow.com/2017/02/azure-functions-time-trigger-cron-cheat-sheet/ [FunctionName("TimerTrigger")] public static void Run( [TimerTrigger("0 */5 * * * *")]TimerInfo myTimer, TraceWriter log) { log.Info($"C# Timer trigger function executed at: {DateTime.Now}"); }
17.
AzureFunctionsとTimer 17 ■ 実行時間のローカライズ Cronの実行時間は基本的にUTC時間で実行されます。 TimeZoneを設定すればローカライズ時間で実行することが可能です。 TimeZoneの設定を利用する場合は「WEBSITE_TIME_ZONE」を利用します。 例)日本時間に合わせる場合 ”WEBSITE_TIME_ZONE”
: “Tokyo Standard Time” TimeZoneの種類については下記のサイトを参照してください。 https://docs.microsoft.com/en-us/previous-versions/windows/it-pro/windows-vista/cc749073(v=ws.10) 実行時間の設定時に-9時間して設定するという労力を減らせるので便利ですが、 きちんとWEBSITE_TIME_ZONEが設定されていないとUTC時間で実行されて障害の元になるので注意し ましょう。
18.
Disable Attributeのお話 18 Disable Attributeを利用することでトリガーの実行制御を行うことができます。 但し、トリガーによってはDisable
Attributeが効かないトリガーもあります。 タイプ Disable 備考 Blob Storage 有効 HTTP 無効 HTTPトリガーはDisableがTrue,False限らずに有効にならない。 Queue Storage 有効 Timer 一部有効 Azureポータルからの実行はDisableが効かない。 逆に効かない方が検証がしやすいのでありがたい。 TimerトリガーのAuzreポータル実行やHTTPトリガーの実行から、明示的に実行する場合はDisable Attributeが効かないと推測されます。 [FunctionName(“Function1")] [Disable(“FunctionDisable”)] (アプリ設定に外出し 例 “FunctionDisable” : true) public static void Run02(...
19.
Disable Attributeのお話 19 Disable Attributeが効果を発揮するのはバージョニングの時です。 Deploy用SlotのFunctionsをDisable
Attributeでコントロールして非稼働状態にします。 アプリ設定に外出しにしておくとコントロールが容易になります。 Deploy Slot Production Slot Disable : True (非稼働) Disable : False (稼働) Version2.0 Version2.0 Version1.0 Version1.0 Version2.0 Deploy SWAP デプロイ後に非稼働のた めProduction SlotのV1と 同時に実行されない スワップ後に非稼働のた めProduction SlotのV2と 同時に実行されない
20.
Disable Attributeのお話 20 Precompiledの場合、AzurePortal側での表示がすべて無効になる現象があります。 アプリ設定に外出しにするためのKEY名がfunction.jsonに記載されますが、Disabledプロパティがbool 型のためTrue/False以外の値を設定されるとポータル上では無効と表示されるようです。 機能に影響はないので問題はありません。
21.
実際に業務で作成して運用している Excel帳票を定期的に出力するFunctionsのお話 21 今時Excel帳票と思われるかもしれませんがまだまだ要望としてはあります。 要件としては定期バッチで出力タイミングの異なる7種類のエクセルを出力するです。 今回の要件をFunctionsで実現するために考慮したのは下記の項目です。 ■FunctionsはV1を採用 ■TimerTriggerで出力エクセル帳票毎にFunctionsを作成 ■Cron式はアプリ設定でコントロールするために外出し ■バージョニングを行うためDisable Attributeを実装 ■Disableの設定はアプリ設定でコントロールするために外出し ■エクセルテンプレートはAzureStorageで更新管理を行う ■エクセルテンプレートはBlobのインプットバインディングで読み込む ■出力するエクセル帳票は条件によって出しわけるためアウトプットバインディングは使用しない ■VisualStudio2017を利用しPrecompiled Functionsで実装 ■CI/CDをVSTS(Azure
DevOps)で運用 ■メモリの使用量を考慮してFunctionsはAppServiceプランを採用 実行は深夜が多いのでリソースの効率化も考慮して管理画面で利用しているAppServiceに相乗り
22.
実際に業務で作成して運用している Excel帳票を定期的に出力するFunctionsのお話 22 TimerTrigger TimerTrigger TimerTrigger OutputA
OutputB OutputC TemplateA TemplateB TemplateC TimerTrigger TimerTrigger TimerTrigger DeploySlot SWAP VSTSで CI/CD Azure Storage Explore VSで実装 管理画面からダウンロード Template用ストレージ 出力用ストレージ 業務データストア ProductionSlot Input Binding
23.
まとめ 23 Functionsは使い方を知れば知るほど便利になっていきます。 MSDNを熟読し実装に工夫をすれば幸せになれます。 V2もGAしたのでガンガン使っていきましょう!
Download now