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
Black Belt Online Seminar Amazon Cognito
Black Belt Online Seminar Amazon Cognito
Amazon Web Services Japan
Azure 仮想マシンにおける運用管理・高可用性設計のベストプラクティス
Azure 仮想マシンにおける運用管理・高可用性設計のベストプラクティス
Yusuke Oi
Db2 v11.5.4 高可用性構成 & HADR 構成パターンご紹介
Db2 v11.5.4 高可用性構成 & HADR 構成パターンご紹介
IBM Analytics Japan
Amazon S3を中心とするデータ分析のベストプラクティス
Amazon S3を中心とするデータ分析のベストプラクティス
Amazon Web Services Japan
AWS Black Belt Online Seminar 2018 AWS Well-Architected Framework
AWS Black Belt Online Seminar 2018 AWS Well-Architected Framework
Amazon Web Services Japan
RDB技術者のためのNoSQLガイド NoSQLの必要性と位置づけ
RDB技術者のためのNoSQLガイド NoSQLの必要性と位置づけ
Recruit Technologies
SaaS テナント毎のコストを把握するための「AWS Application Cost Profiler」のご紹介
SaaS テナント毎のコストを把握するための「AWS Application Cost Profiler」のご紹介
Amazon Web Services Japan
BigData Architecture for Azure
BigData Architecture for Azure
Ryoma Nagata
Recommended
Black Belt Online Seminar Amazon Cognito
Black Belt Online Seminar Amazon Cognito
Amazon Web Services Japan
Azure 仮想マシンにおける運用管理・高可用性設計のベストプラクティス
Azure 仮想マシンにおける運用管理・高可用性設計のベストプラクティス
Yusuke Oi
Db2 v11.5.4 高可用性構成 & HADR 構成パターンご紹介
Db2 v11.5.4 高可用性構成 & HADR 構成パターンご紹介
IBM Analytics Japan
Amazon S3を中心とするデータ分析のベストプラクティス
Amazon S3を中心とするデータ分析のベストプラクティス
Amazon Web Services Japan
AWS Black Belt Online Seminar 2018 AWS Well-Architected Framework
AWS Black Belt Online Seminar 2018 AWS Well-Architected Framework
Amazon Web Services Japan
RDB技術者のためのNoSQLガイド NoSQLの必要性と位置づけ
RDB技術者のためのNoSQLガイド NoSQLの必要性と位置づけ
Recruit Technologies
SaaS テナント毎のコストを把握するための「AWS Application Cost Profiler」のご紹介
SaaS テナント毎のコストを把握するための「AWS Application Cost Profiler」のご紹介
Amazon Web Services Japan
BigData Architecture for Azure
BigData Architecture for Azure
Ryoma Nagata
SD-WAN docs for aws event
SD-WAN docs for aws event
akira suzuki
Microsoft Azure Storage 概要
Microsoft Azure Storage 概要
Takeshi Fukuhara
20210216 AWS Black Belt Online Seminar AWS Database Migration Service
20210216 AWS Black Belt Online Seminar AWS Database Migration Service
Amazon Web Services Japan
週末趣味のAWS VPC Traffic Mirroring
週末趣味のAWS VPC Traffic Mirroring
Namba Kazuo
マイクロサービス化設計入門 - AWS Dev Day Tokyo 2017
マイクロサービス化設計入門 - AWS Dev Day Tokyo 2017
Yusuke Suzuki
20210526 AWS Expert Online マルチアカウント管理の基本
20210526 AWS Expert Online マルチアカウント管理の基本
Amazon Web Services Japan
20200219 AWS Black Belt Online Seminar オンプレミスとAWS間の冗長化接続
20200219 AWS Black Belt Online Seminar オンプレミスとAWS間の冗長化接続
Amazon Web Services Japan
DevOps with Database on AWS
DevOps with Database on AWS
Amazon Web Services Japan
Hybrid Azure AD Join 動作の仕組みを徹底解説
Hybrid Azure AD Join 動作の仕組みを徹底解説
Yusuke Kodama
第15回JSSUG「Azure SQL Database 超入門」
第15回JSSUG「Azure SQL Database 超入門」
裕之 木下
データ活用を加速するAWS分析サービスのご紹介
データ活用を加速するAWS分析サービスのご紹介
Amazon Web Services Japan
Microsoft Azure Overview - Japanses version
Microsoft Azure Overview - Japanses version
Takeshi Fukuhara
20190723 AWS Black Belt Online Seminar AWS CloudHSM
20190723 AWS Black Belt Online Seminar AWS CloudHSM
Amazon Web Services Japan
AWS初心者向けWebinar AWSとのネットワーク接続入門
AWS初心者向けWebinar AWSとのネットワーク接続入門
Amazon Web Services Japan
The Twelve-Factor Appで考えるAWSのサービス開発
The Twelve-Factor Appで考えるAWSのサービス開発
Amazon Web Services Japan
Azure Monitor Logで実現するモダンな管理手法
Azure Monitor Logで実現するモダンな管理手法
Takeshi Fukuhara
サポート エンジニアが語る、Microsoft Azure を支えるインフラの秘密
サポート エンジニアが語る、Microsoft Azure を支えるインフラの秘密
ShuheiUda
ぱぱっと理解するSpring Cloudの基本
ぱぱっと理解するSpring Cloudの基本
kazuki kumagai
Kubernetes Service Account As Multi-Cloud Identity / Cloud Native Security Co...
Kubernetes Service Account As Multi-Cloud Identity / Cloud Native Security Co...
Preferred Networks
AKS と ACI を組み合わせて使ってみた
AKS と ACI を組み合わせて使ってみた
Hideaki Aoyagi
俺的 Build 2020 Update まとめ
俺的 Build 2020 Update まとめ
Yui Ashikaga
Azureのざっくり利用料金を毎日Slackに通知する
Azureのざっくり利用料金を毎日Slackに通知する
Shingo Kawahara
More Related Content
What's hot
SD-WAN docs for aws event
SD-WAN docs for aws event
akira suzuki
Microsoft Azure Storage 概要
Microsoft Azure Storage 概要
Takeshi Fukuhara
20210216 AWS Black Belt Online Seminar AWS Database Migration Service
20210216 AWS Black Belt Online Seminar AWS Database Migration Service
Amazon Web Services Japan
週末趣味のAWS VPC Traffic Mirroring
週末趣味のAWS VPC Traffic Mirroring
Namba Kazuo
マイクロサービス化設計入門 - AWS Dev Day Tokyo 2017
マイクロサービス化設計入門 - AWS Dev Day Tokyo 2017
Yusuke Suzuki
20210526 AWS Expert Online マルチアカウント管理の基本
20210526 AWS Expert Online マルチアカウント管理の基本
Amazon Web Services Japan
20200219 AWS Black Belt Online Seminar オンプレミスとAWS間の冗長化接続
20200219 AWS Black Belt Online Seminar オンプレミスとAWS間の冗長化接続
Amazon Web Services Japan
DevOps with Database on AWS
DevOps with Database on AWS
Amazon Web Services Japan
Hybrid Azure AD Join 動作の仕組みを徹底解説
Hybrid Azure AD Join 動作の仕組みを徹底解説
Yusuke Kodama
第15回JSSUG「Azure SQL Database 超入門」
第15回JSSUG「Azure SQL Database 超入門」
裕之 木下
データ活用を加速するAWS分析サービスのご紹介
データ活用を加速するAWS分析サービスのご紹介
Amazon Web Services Japan
Microsoft Azure Overview - Japanses version
Microsoft Azure Overview - Japanses version
Takeshi Fukuhara
20190723 AWS Black Belt Online Seminar AWS CloudHSM
20190723 AWS Black Belt Online Seminar AWS CloudHSM
Amazon Web Services Japan
AWS初心者向けWebinar AWSとのネットワーク接続入門
AWS初心者向けWebinar AWSとのネットワーク接続入門
Amazon Web Services Japan
The Twelve-Factor Appで考えるAWSのサービス開発
The Twelve-Factor Appで考えるAWSのサービス開発
Amazon Web Services Japan
Azure Monitor Logで実現するモダンな管理手法
Azure Monitor Logで実現するモダンな管理手法
Takeshi Fukuhara
サポート エンジニアが語る、Microsoft Azure を支えるインフラの秘密
サポート エンジニアが語る、Microsoft Azure を支えるインフラの秘密
ShuheiUda
ぱぱっと理解するSpring Cloudの基本
ぱぱっと理解するSpring Cloudの基本
kazuki kumagai
Kubernetes Service Account As Multi-Cloud Identity / Cloud Native Security Co...
Kubernetes Service Account As Multi-Cloud Identity / Cloud Native Security Co...
Preferred Networks
AKS と ACI を組み合わせて使ってみた
AKS と ACI を組み合わせて使ってみた
Hideaki Aoyagi
What's hot
(20)
SD-WAN docs for aws event
SD-WAN docs for aws event
Microsoft Azure Storage 概要
Microsoft Azure Storage 概要
20210216 AWS Black Belt Online Seminar AWS Database Migration Service
20210216 AWS Black Belt Online Seminar AWS Database Migration Service
週末趣味のAWS VPC Traffic Mirroring
週末趣味のAWS VPC Traffic Mirroring
マイクロサービス化設計入門 - AWS Dev Day Tokyo 2017
マイクロサービス化設計入門 - AWS Dev Day Tokyo 2017
20210526 AWS Expert Online マルチアカウント管理の基本
20210526 AWS Expert Online マルチアカウント管理の基本
20200219 AWS Black Belt Online Seminar オンプレミスとAWS間の冗長化接続
20200219 AWS Black Belt Online Seminar オンプレミスとAWS間の冗長化接続
DevOps with Database on AWS
DevOps with Database on AWS
Hybrid Azure AD Join 動作の仕組みを徹底解説
Hybrid Azure AD Join 動作の仕組みを徹底解説
第15回JSSUG「Azure SQL Database 超入門」
第15回JSSUG「Azure SQL Database 超入門」
データ活用を加速するAWS分析サービスのご紹介
データ活用を加速するAWS分析サービスのご紹介
Microsoft Azure Overview - Japanses version
Microsoft Azure Overview - Japanses version
20190723 AWS Black Belt Online Seminar AWS CloudHSM
20190723 AWS Black Belt Online Seminar AWS CloudHSM
AWS初心者向けWebinar AWSとのネットワーク接続入門
AWS初心者向けWebinar AWSとのネットワーク接続入門
The Twelve-Factor Appで考えるAWSのサービス開発
The Twelve-Factor Appで考えるAWSのサービス開発
Azure Monitor Logで実現するモダンな管理手法
Azure Monitor Logで実現するモダンな管理手法
サポート エンジニアが語る、Microsoft Azure を支えるインフラの秘密
サポート エンジニアが語る、Microsoft Azure を支えるインフラの秘密
ぱぱっと理解するSpring Cloudの基本
ぱぱっと理解するSpring Cloudの基本
Kubernetes Service Account As Multi-Cloud Identity / Cloud Native Security Co...
Kubernetes Service Account As Multi-Cloud Identity / Cloud Native Security Co...
AKS と ACI を組み合わせて使ってみた
AKS と ACI を組み合わせて使ってみた
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
プレイマットのパターン生成支援ツール
プレイマットのパターン生成支援ツール
sugiuralab
Postman LT Fukuoka_Quick Prototype_By Daniel
Postman LT Fukuoka_Quick Prototype_By Daniel
danielhu54
プレイマットのパターン生成支援ツールの評価
プレイマットのパターン生成支援ツールの評価
sugiuralab
20240412_HCCJP での Windows Server 2025 Active Directory
20240412_HCCJP での Windows Server 2025 Active Directory
osamut
新人研修のまとめ 2024/04/12の勉強会で発表されたものです。
新人研修のまとめ 2024/04/12の勉強会で発表されたものです。
iPride Co., Ltd.
PHP-Conference-Odawara-2024-04-000000000
PHP-Conference-Odawara-2024-04-000000000
Shota Ito
IoT in the era of generative AI, Thanks IoT ALGYAN.pptx
IoT in the era of generative AI, Thanks IoT ALGYAN.pptx
Atomu Hidaka
Amazon SES を勉強してみる その12024/04/12の勉強会で発表されたものです。
Amazon SES を勉強してみる その12024/04/12の勉強会で発表されたものです。
iPride Co., Ltd.
Recently uploaded
(8)
プレイマットのパターン生成支援ツール
プレイマットのパターン生成支援ツール
Postman LT Fukuoka_Quick Prototype_By Daniel
Postman LT Fukuoka_Quick Prototype_By Daniel
プレイマットのパターン生成支援ツールの評価
プレイマットのパターン生成支援ツールの評価
20240412_HCCJP での Windows Server 2025 Active Directory
20240412_HCCJP での Windows Server 2025 Active Directory
新人研修のまとめ 2024/04/12の勉強会で発表されたものです。
新人研修のまとめ 2024/04/12の勉強会で発表されたものです。
PHP-Conference-Odawara-2024-04-000000000
PHP-Conference-Odawara-2024-04-000000000
IoT in the era of generative AI, Thanks IoT ALGYAN.pptx
IoT in the era of generative AI, Thanks IoT ALGYAN.pptx
Amazon SES を勉強してみる その12024/04/12の勉強会で発表されたものです。
Amazon SES を勉強してみる その12024/04/12の勉強会で発表されたものです。
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