2020/01/18

[自己的 Hackathon] L10 盃黑客松之即時開票系統 - 技術分享 (一) - 學習 IDE 與 Azure Functions 基礎

這篇文章主要是我依著微軟官方文件
"使用 Visual Studio Code 在 Python 中建立和部署無伺服器 Azure Functions"
學習一些 Azure Functions 基礎的過程
分享我遇到的一些問題
如果你跟我一樣習慣英文介面的 Visual Studio Code
同樣的教學文件也有英文版 (較容易找到對應的 IDE 功能)

必要條件申請與安裝


文件中有三個前置要先準備好的東西
1. Azure 訂用帳戶 (Azure Subscription)
2. Azure Functions Core Tools
3. Visual Studio Code 以及對應的 extensions

首先最重要的當然是申請 Azure 帳號
新帳號在期限內能享有蠻多福利的
像是前三十天有 NTD 6,100 的額度可以使用
我多年前已經申請過了所以直接跳過這一步

新帳號可享的一些福利

再來就是安裝 Azure Functions Core Tools
先到 Node.js 下載頁面取得 v12.14.1 x64 的 Windows Installer 並安裝
接著依文件再輸入
npm install -g azure-functions-core-tools@3
文件中有提醒 "安裝 Node.js 時,請使用預設選項,「不要」 選取自動安裝必要工具的選項。"

最後就是安裝 Visual Studio Code
以及兩個對應的 extensions - Python extensionAzure Functions extension
我是使用 python 作為實作這次系統的程式語言
所以要記得安裝 python 3.7.5 64bit

執行 Azure Functions Core Tools 的錯誤

以上三個前置都準備好後
依著文件說明在 vscode 中登入你的 Azure 帳戶
然後在 vscode 裡的 Terminal 執行 func
這時候我遇到了一個問題

"因為這個系統上已停用指令碼執行,所以無法載入 XXXX\funcc.ps1 檔案。
  如需詳細資訊,請參閱 about_Execution_Policies,網址為 https:/go.microsoft.com/fwlink/?LinkID=135170。
"

幸好隨便 Google 就找到了解答
(錯誤訊息中的官方連結也是有解答, 但是找到的這篇比較直接)
用 administrator 權限執行 PowerShell 並執行
Set-ExecutionPolicy -ExecutionPolicy RemoteSigned
然後再執行一次 func 應該就可以看到 Azure Functions Core Tools 的執行畫面了

看到斗大的 Azure Functions Icon 就是成功啦

建立第一個使用 HTTP trigger 的 Azure Function


終於開始要寫程式啦
再次稱讚文件介紹的非常清楚
工具也是相當的好用
點幾下選一選就建立好了一個 HTTP trigger 的 Azure Function
啟用 debugger 也沒甚麼問題
第一個範例是你可以透過 GET 在 URL 裡傳一個 name 參數
Azure Function 則是把你傳入的名字字串回傳
文件也有附上用 curl 執行 POST 的指令
但是我使用 PowerShell 指令又遇到了問題
最後在多方搜尋嘗試下
修改成下面這段
$body = @{"name"="Visual Studio Code2"} | convertto-json
curl http://localhost:7071/api/HttpExample `
 -Headers @{"Content-Type"="application/json"} `
 -Method Post -Body $body
這樣就測試到 GET 與 POST 兩種方法了

但是在執行 debugger 練習測試的時候
一直有一個很惱人的問題
就是每當要停止 debug 的時候
整個 vscode 就會 hang 在那邊, 只能重開
幸好也有人反應這個問題
解決方式就是在 vscode 裡面把 azureFunctions.stopFuncTaskPostDebug 關掉
但是這會造成離開 debugger 後
本機上的 Azure Functions 仍會繼續執行 (等於是你只是 detach 該 process 而以)

發佈你的第一個 Azure Functions


也還是跟著文件做就好
唯一不同的是, 我會建議選擇 "Create New Function App in Azure... Advanced"
因為這個選項才能選擇 hosting plan 為 consumption plan
發佈好了就能直接用公開的 URL 來觸發你的 Azure Function

有三種計價方式

文件後面還有教怎麼使用 queue 來觸發 Azure Functions
基本上照著做都沒甚麼問題
做完這些就等於學會了怎麼用 vscode 來開發並佈署簡單的 Azure Functions 了

沒有留言:

張貼留言