本連載では第一線のPerlハッカーが回替わりで執筆していきます。今回のハッカーはPerlとAzureが好きなわいとんさんで、
サーバレスという言葉が出てきて数年が経過しましたが、
本稿のサンプルコードは、
Microsoft Azure Functions ── AzureにおけるFaaS
Microsoft Azure
今回紹介するFunctionsは、
サーバレスの中心にFaaSあり
サーバレスとはサーバレスアーキテクチャのことを指し、
FaaSの特徴
FaaSとは、
関数が稼働した分だけ課金
FaaSでは関数が稼働した分だけ課金されます。特に、
常時課金されるIaaSやPaaS
OS/VMの管理は不要
FaaSはオンプレミスやIaaSと違い、
OSのアップデートやセキュリティパッチ、
関数の起動にはトリガが必要
FaaSのもう一つの大きな特徴として、
FunctionsのPerlサポート
Functionsは、
しかし、git
に対応しており、git
をインストールするためにはPerlが必要だからです。
筆者が検証した限り、
プロジェクトのファイル構成
Functions v1でPerlプログラムを関数として利用する場合、
./プロジェクト名
├── host.json
├── proxies.json
└── 関数名
├── function.json
├── run.sh
└── task.pl
1つのプロジェクトには複数の関数を定義できます。複数定義する場合、
各関数名フォルダには、function.
、run.
、task.
が必要となります。
また、host.
と、proxies.
を配置できます。
なお、host.
とproxies.
は利用しません。これらのファイルについて知りたい人は、
関数起動のためのトリガ
Functionsでは、function.
で指定します。トリガには、
HTTPトリガ ── 関数がWeb APIとして動作
HTTPトリガを指定すると、
起動された関数は、

HTTPトリガで起動される関数では、function.
は次のようになります。
{
"bindings": [
{
"type": "httpTrigger",
"direction": "in",
"name": "req",
"authLevel": "anonymous"
},
{
"type": "http",
"direction": "out",
"name": "res"
}
],
"disabled": false
}
Timerトリガ ── 時間指定バッチとして定期的に起動
Timerトリガは、function.
は次のようになります。
{
"bindings": [
{
"type": "timerTrigger",
"direction": "in",
"name": "timer",
"schedule": "0 */30 * * * *"
}
],
"disabled": false
}

データの入出力を行うためのバインディング
Functionsではバインディングというしくみで入出力に対応できます。バインディングは、function.
で設定します。
先ほどHTTPトリガのfunction.
を示しましたが、direction
で指定され、in
なら入力、out
なら出力となります。バインディングにはHTTP以外に、
Functions v1のトリガとバインディングに関する詳細は、
<続きの
本誌最新号をチェック!
WEB+DB PRESS Vol.130
2022年8月24日発売
B5判/168ページ
定価1,628円
(本体1,480円+税10%)
ISBN978-4-297-13000-8
- 特集1
イミュータブルデータモデルで始める
実践データモデリング
業務の複雑さをシンプルに表現! - 特集2
いまはじめるFlutter
iOS/Android両対応アプリを開発してみよう - 特集3
作って学ぶWeb3
ブロックチェーン、スマートコントラクト、NFT