Azure Functionsをローカル環境でデバッグ
はじめに
最近流行り?のServerlessアーキテクチャーを試すべく、Azure Functionsを調べてみましたがStorageを使うと必ず課金されてしまうようです(微々たるものですが、、)。ということでローカル環境の構築方法を探してみたら普通にありましたので、Node.jsを使って簡単に試してみます。
動作確認環境
OS: Window 10
Node.js: v4.4.7
npm:3.10.6
Visual Studio Code: 1.7.2
*Node.jsは6.x LTS or later (required by the Yeoman dependency)が推奨のようですが、とりあえず動きました。
1. Azure CLI とAzure Functions Core Toolsのインストール
npm install -g azure-cli
npm install -g azure-functions-core-tools
npm install -g azure-cli
npm install -g azure-functions-core-tools
を実行し、Azure CLIとをAzure Functions Core Toolsインストールします。
2. Azure functionプロジェクトの作成
以下のようにフォルダを作成し、func init
コマンドでプロジェクトを作成します。
c:\dev\azure>mkdir AzureFunctionsDemo
c:\dev\azure>cd AzureFunctionsDemo
c:\dev\azure\AzureFunctionsDemo>func init
Writing .gitignore
Writing host.json
Writing appsettings.json
Initialized empty Git repository in c:/dev/azure/AzureFunctionsDemo/.git/
3. 簡単なfunctionの作成と実行
func new
コマンドでテンプレートからfunctionを作成します。
c:\dev\azure\AzureFunctionsDemo>func new
_-----_
| | ╭──────────────────────────╮
|--(o)--| │ Welcome to the Azure │
`---------´ │ Functions generator! │
( _´U`_ ) ╰──────────────────────────╯
/___A___\ /
| ~ |
__'.___.'__
´ ` |° ´ Y `
? Select an option...
1) List all templates
2) List templates by language
3) List templates by type
Answer: 1
ひとまず1を入力し、全テンプレートを選択してみます。
? Select an option... List all templates
There are 63 templates available
? Select from one of the available templates...
HttpTrigger-Batch
HttpTrigger-CSharp
HttpTrigger-FSharp
> HttpTrigger-JavaScript
HttpTrigger-Powershell
ImageResizer-CSharp
ImageResizer-FSharp
(Move up and down to reveal more choices)
今回はHttpTrigger-JavaScriptを選択し、HttpTrigger-JSという名前のfunctionを作成します。
? Select from one of the available templates... HttpTrigger-JavaScript
? Enter a name for your function... HttpTrigger-JS
Creating your function HttpTrigger-JS...
Location for your function...
c:\dev\azure\AzureFunctionsDemo\HttpTrigger-JS
Tip: run `func run <functionName>` to run the function.
そして、func runコマンドで先ほど作成したfunctionを実行します。
c:\dev\azure\AzureFunctionsDemo>func run .\HttpTrigger-JS\ -c "{\"name\": \"Donna\"}"
We need to launch a server that will host and run your functions.
The server will auto load any changes you make to the function.
Do you want to always display this warning before launching a new server [yes/no]? [yes]
Response Status Code: OK
"Hello Donna"
毎回警告メッセージを表示するか聞かれるのでとりあえずYesでEnterkeyを押しますが、何も起きないので再度Enterkeyをします。すると、もう1つDOS窓のような画面が立ち上がり、ローカル環境でfunctionが実行されます。
AzureFunction実行中のWindowに、今回作成したfunctionのURLが表示されているので、以下のようにパラメーターをセットしてブラウザにURLを入力すると、
http://localhost:7071/api/HttpTrigger-JS?name=test
"Hello test"
とブラウザに表示されます。
3. Visual Studio Codeでデバッグ
以下のコマンドで現在のプロジェクトをVisual Studio Codeで開きます。
c:\dev\azure\AzureFunctionsDemo>code .
Visual Studio Codeでindex.jsにBreakpointを設定し、以下のコマンドを実行します。
c:\dev\azure\AzureFunctionsDemo>func run .\HttpTrigger-JS\ -c "{\"name\": \"Debugging!\"}" --debug
launch.json configured. Setup your break points, launch debugger (F5), and press any key to continue...
launch.json configuredと表示されていますが、VisualStudioでリモートデバッグできるように以下のような内容で自動でlaunch.jsonが作成されます。
{
"version": "0.2.0",
"configurations": [
{
"name": "Attach to Azure Functions",
"type": "node",
"request": "attach",
"port": 5858
}
]
}
また、このタイミングでF5キーもしくは再生ボタンでdebuggerを起動します。
再度Enterkeyを押すとBreakpointまでdebuggerの処理が進みます。
一旦処理を抜けても、ブラウザからfunctionを呼び出すと再度debuggerの処理が動きます。
http://localhost:7071/api/HttpTrigger-JS?name=test
結構簡単にローカル環境で動かせる印象です。
次はStorage Emulatorを使用し、queueをトリガーにしたAzure functionを試してみる予定です。
続編
Azure Functions Queueトリガーを使う
Azure Functionsをローカル環境からAzure環境にデプロイ
参考URL
Running Azure Functions Locally with the CLI and VS Code
Azure Functions における Azure Storage のトリガーとバインド
Azure Storage の接続文字列を構成する
開発時と本番環境とで Windows Azure Storage サービスの接続文字列を切り替える
Azure CLI のインストール
Author And Source
この問題について(Azure Functionsをローカル環境でデバッグ), 我々は、より多くの情報をここで見つけました https://qiita.com/tworks55/items/281beeea5fd6c105b0b1著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .