Help us understand the problem. What is going on with this article?

LinuxベースのAzure Function Appの作り方(CLIベースでの開発方法)

なに?

Azure Function App / Functions(AWSでいうところのLambda)をCLIベースで開発するためのTipsです。

本当に簡単なものであればブラウザ上のエディタだけでできてしまってCLI使う必要もないのですが……場合によってはそうもいかないケースがあります。例えば、OS で LinuxベースのFunctionsが作りたい時などです。その場合にはブラウザ上のエディタが使えません。

手順

Azure管理ポータルから普通にFunction Appを作成します。
今回は OS:Linux で Node.js のものを作ります。

出来上がったFunctions Appから新しい関数を追加します。

image.png

今回はできるだけ簡単に済ませたいので任意のエディター+Coreでやります。

image.png

するといくつか画面にコマンドができますので基本的にはこの通りにやっていけばよいです。

ここからはローカルのPCでの作業になります。

ここで1つTipsはWindowsで作業するのであればPowerShellを使う、ただそれだけです。まだまだPowerShellになじみのない人がいそうですがなじみましょう。それが早道です。

まずは、Core Toolsというものをインストールします。

npm install -g azure-functions-core-tools

npmを使ってますのでもちろんNode.jsが必要です。
次に適当な作業フォルダに移ってさっきインストールしたCote Toolsfuncコマンドを使って初期設定もろもろを行います。

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管理ポータルが確認してみてください。

関数が無事にできているのが確認できます。

Why do not you register as a user and use Qiita more conveniently?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away