More Related Content
PDF
ストリーム処理を支えるキューイングシステムの選び方 PDF
Apache Kafkaって本当に大丈夫?~故障検証のオーバービューと興味深い挙動の紹介~ PDF
Kubernetes 疲れに Azure Container Apps はいかがでしょうか?(江東区合同ライトニングトーク 発表資料) PDF
PDF
20210526 AWS Expert Online マルチアカウント管理の基本 PDF
AWS BlackBelt AWS上でのDDoS対策 PDF
NetflixにおけるPresto/Spark活用事例 PDF
AWS Black Belt Online Seminar Amazon Aurora What's hot
PDF
PDF
【de:code 2020】 Azure Synapse Analytics 技術編 ~ 最新の統合分析プラットフォームによる新しい価値の創出(後編) PDF
PostgreSQLをKubernetes上で活用するためのOperator紹介!(Cloud Native Database Meetup #3 発表資料) PDF
Azure Monitor Logで実現するモダンな管理手法 PPTX
PDF
今からでも遅くないDBマイグレーション - Flyway と SchemaSpy の紹介 - PDF
PDF
20191112 AWS Black Belt Online Seminar AWS Media Services で始めるライブ動画配信 PDF
PDF
20210216 AWS Black Belt Online Seminar AWS Database Migration Service PPTX
Containers + EC2 Spot: AWS Batch による大規模バッチ処理でのスポットインスタンス活用 PDF
20191105 AWS Black Belt Online Seminar Amazon Route 53 Hosted Zone PPTX
どうやって決める?kubernetesでのシークレット管理方法(Cloud Native Days 2020 発表資料) PDF
Infrastructure as Code (IaC) 談義 2022 PDF
PDF
20191016 AWS Black Belt Online Seminar Amazon Route 53 Resolver PDF
Amazon Aurora - Auroraの止まらない進化とその中身 PDF
Apache Airflow入門 (マーケティングデータ分析基盤技術勉強会) PPTX
Azure AD とアプリケーションを SAML 連携する際に陥る事例と対処方法について PDF
Similar to Azure Functionsを業務利用する時の勘所
PPTX
PDF
PPTX
Visual Studio 2017 で Azure Functions の開発 PPTX
Azure Function GAした!Visual Studio Tools for Azure Functions もプレビューだ! PDF
Azure Functionsでサーバーレスアプリケーション構築 PPTX
PPTX
Azure serverless!! azure functionsでサーバーを意識しない開発 PDF
Azure Functionsでサーバーレスアプリケーション構築 PDF
[Japan Tech summit 2017] APP 003 PDF
Azure Functions と Serverless - 概要と企業向け Tips PDF
PPTX
「Azure durable functions」の概要 PDF
PDF
20190514 Smart Store - Azure servlerless architecture PDF
Smart Store サーバーレスアーキテクチャ編 PPTX
PDF
PDF
PDF
[HAKODATE Developer Conference 2018] 「Azure Functions」で始めるサーバーレス アプリケーション開発 PDF
[AC11] サーバー管理よ、サヨウナラ。サーバーレスアーキテクチャの意義と実践 More from 裕之 木下
PPTX
AzureStorageのオブジェクトレプリケートを試してみた PPTX
PPTX
Client Side Balzorでツールを作ってみた PPTX
PPTX
第15回JSSUG「Azure SQL Database 超入門」 PPTX
ノンコーディングでLineBotを作る MS FLOW編 PPTX
PPTX
PPTX
PPTX
Azure vs aws比較 エンコード ace用 PPTX
azure functionsでlinebotを作ってみた PPTX
PPTX
PPTX
PPTX
PPTX
PPTX
懲りずにazure functionsでlinebotを作ってみた PPTX
Azure Functionsを業務利用する時の勘所
- 1.
- 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.
- 4.
- 5.
- 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 voidRun(
[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.
- 10.
AzureFunctionsとBlob
10
[FunctionName("Function1")]
[StorageAccount(“AzureStorage01”)]
public static voidRun(
[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 voidRun01(
[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.
- 13.
- 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.
- 18.
Disable Attributeのお話
18
Disable Attributeを利用することでトリガーの実行制御を行うことができます。
但し、トリガーによってはDisableAttributeが効かないトリガーもあります。
タイプ 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.
- 20.
- 21.
- 22.
- 23.