Home About Contact
Azure

Azure Functions

Azure Functions を試した。

簡単にメモを残します。

基本的にこのオフィシャルのガイドページの通りでできた。

Azure Portal から操作すると選択肢が多すぎて何を選べばいいわからなかった。 なお、従量課金 pay as you go にアップグレードして作業した。

ローカルで実行する場合の local.settings.json

説明を読んでいくとローカルテストの段階で Azure Storage の接続情報 が必要と言われるが、 それはあとで用意すればよい。

local.settings.json:

{
    "Values": {       
        "AzureWebJobsStorage": "<Azure Storage connection information>",
        "FUNCTIONS_WORKER_RUNTIME": "node"
    }
}

ローカルテストの段階では次の文字列をセット:

"AzureWebJobsStorage": "UseDevelopmentStorage=true"

このあとで、Azure Storage をつくるので、そのとき本物の文字列を設定することになる。 または以前から Azure を使っていてすでにストレージが存在している人はそこを指すことになるのであろう。

ローカルでの作動が確認できたら、 az コマンドを使って Azure 側の必要な設定をしていく。 これは、クイックスタートガイドのページの通りでよい。

region は eastus を指定した。 当然、別のところでも作動すると思うが。

コマンドラインからストレージアカウントを作成したら Azure Portal にアクセスして、 ストレージへの接続文字列を調べて、local.settings.json の AzureWebJobsStorage の値に設定する。

その上で func azure functionapp publish <アプリ名> を実行する。

Functions のエンドポイントを保護する

この Functions の js コードで authLevel が anonymous の場合、インターネット上から自由に使えることになる。

authLevel: 'anonymous'

これを function と指定して保護する。

authLevel: 'function',

これで APIキーのようなもの(名称忘れた)を使ってアクセスしないと該当 Functions は使えなくなる。 APIキー(のようなもの)の文字列は Azure Portal の該当 Functions アプリ設定のどこかに書いてあった。

クライアントから該当 Functions にアクセスするときに x-functions-key ヘッダを使う。 curl だったら次のようになる。

$ curl -X POST "https://アプリ名.azurewebsites.net/api/関数名" -d '{ "name": "Hello" }' \
  -H "Content-Type: application/json" \
  -H "x-functions-key: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"

まとめ

こちらは Functions だけ定義して使うつもりなのだが、 そのためにはストレージが必要と言われてなにそれ?ってなる。 この面倒くささになれていくしかない。