なに?
Azure Function App / Functions(AWSでいうところのLambda)をCLIベースで開発するためのTipsです。
本当に簡単なものであればブラウザ上のエディタだけでできてしまってCLI使う必要もないのですが……場合によってはそうもいかないケースがあります。例えば、OS で LinuxベースのFunctionsが作りたい時などです。その場合にはブラウザ上のエディタが使えません。
手順
Azure管理ポータルから普通にFunction Appを作成します。
今回は OS:Linux で Node.js のものを作ります。
出来上がったFunctions Appから新しい関数を追加します。
今回はできるだけ簡単に済ませたいので任意のエディター+Coreでやります。
するといくつか画面にコマンドができますので基本的にはこの通りにやっていけばよいです。
ここからはローカルのPCでの作業になります。
ここで1つTipsはWindowsで作業するのであればPowerShellを使う、ただそれだけです。まだまだPowerShellになじみのない人がいそうですがなじみましょう。それが早道です。
まずは、Core Toolsというものをインストールします。
npm install -g azure-functions-core-tools
npmを使ってますのでもちろんNode.jsが必要です。
次に適当な作業フォルダに移ってさっきインストールしたCote Toolsのfuncコマンドを使って初期設定もろもろを行います。
func init
次に関数のテンプレートを作ります。
func new
とすると色々選択肢がでてきますので選択していきます。または以下のようなコマンドを使うと一発で作ることもできます。
func new --name applicationname --template "HttpTrigger"
するとローカルに applicationname のフォルダが出来て index.js などが出来上がりますので、好きなように編集します。npm install
などもここで作った applicationname 内で実行してください。
ローカルでテストしたければ以下のコマンドをいれてください。
func start
何か色々と出た後に、
Http Functions:
crawlnewsclip: [GET,POST] http://localhost:7071/.....
と出てきますのでブラウザやcurlでアクセスするとテストすることができます。
この時に func start
でエラーになる人がたまにいます(わたしとか)。これはだいたい Proxy が原因です。 Proxyが設定してあるとlocalhostへのアクセスができないためか func start
でエラーになってしまうみたいです。
PowerShellであれば
$env:HTTP_PROXY
$env:HTTPS_PROXY
で設定確認して、Remove-Item Env:HTTP_PROXY
Remove-Item Env:HTTPS_PROXY
とかで環境変数削除して試してみてください。
テストも完了したところでAzureへデプロイします。
func azure functionapp publish {Functionの名前}
このコマンドをうつ場所だけ気を付けてください。
func init
で作ったフォルダ内です。 func new
で作った関数のフォルダの中ではありません。
しばらく何か画面が出た後で処理が終わります。
こんなエラーが出る場合があると思います、というか普段Azure CLI使わない人はたぶん出ます。
Unable to connect to Azure. Make sure you have the `az` CLI or `Az.Accounts` PowerShell module installed and logged in and try again
その場合にはAzureコマンドラインインタフェイスをインストールして、ログインを行ってください。
https://docs.microsoft.com/ja-jp/cli/azure/?view=azure-cli-latest
ここを参考にインストールしてから、az login
でログインを行った後に再度
func... publish...
でデプロイ行ってください。
無事にコマンドが完了したらAzure管理ポータルが確認してみてください。
関数が無事にできているのが確認できます。