前情提要
Azure Functions 提供了在雲端執行無伺服器函數的強大能力,
但在本地環境中開發和測試這些函數可以大大提高開發效率。
為了模擬 Azure Storage 服務,我們可以使用 Azurite,這是一個 Storage 的本地模擬器。
本文將記錄我如何在本機上設置建立本機的 Azurite Queue 進行開發。
註:本文假設你已具備建立 Azure Functions 的前置基礎
實作記錄
1. 建立和設定本機開發環境
安裝 Azurite
Azurite 是用於模擬 Azure Storage 服務的本地工具,您可以通過以下命令進行安裝:
1 | npm install -g azurite |
啟動 Azurite
啟動 Azurite 並指定 Storage 位置和日誌文件。
下面的語法會建立 .azurite
資料夾為 Azurite 的默認資料夾,
你可以根據需要修改路徑或刪除並重建此資料夾:
1 | azurite --silent --location ./.azurite --debug ./.azurite/debug.log |
啟動後,你會看到以下輸出,表示 Azurite 成功啟動並監聽相關端口:
1 | Azurite Blob service is starting at http://127.0.0.1:10000 |
設定本機 Azure Storage 連線字串
為了方便操作本機 Azure Storage,
我們需要設置 AZURE_STORAGE_CONNECTION_STRING 環境變數:
這裡要查看微軟官方文件取得地端連線字串
你們可以看到它包含了一組 AccountKey 與 Account(devstoreaccount1)
這個例子中我們只使用了 Azurite Queue Service
1 | export AZURE_STORAGE_CONNECTION_STRING="DefaultEndpointsProtocol=http;AccountName=devstoreaccount1;AccountKey=Eby8vdM02xNOcqFlqUwJPLlmEtlCDXJ1OUzFT50uSRZ6IFsuFq2UVErCz4I6tq/K1SZFPTOtr/KBHBeksoGMGw==;QueueEndpoint=http://127.0.0.1:10001/devstoreaccount1;" |
開發完成後,記得刪除此連線字串:
1 | unset AZURE_STORAGE_CONNECTION_STRING |
常用語法
檢視所有 Queue
1 | az storage queue list |
建立 Local Queue
1 | az storage queue create --name myqueue |
建立資料到指定 Queue 中, 下面的例子會建立一包 JSON 檔,當然你也可以使用純文字(text)
1 | az storage message put --queue-name myqueue --content "{\"message\": \"Hello, World\!\", \"id\": 123, \"status\": \"active\"}" |
顯示前 5 筆指定 Queue 中的資料
1 | az storage message peek -q myqueue --num-messages 5 |
取出 Queue 中的資料
1 | az storage message get --queue-name myqueue --num-messages 1 |
刪除 Queue 中的資料
1 | az storage message delete --queue-name myqueue --id <message-id> --pop-receipt <pop-receipt> |
補充說明:
popReceipt 是 Azure Queue 中用來確認消息取出和刪除操作的唯一識別碼。
當取出消息時,Azure 會返回 popReceipt,確保只有取出的客戶端能夠刪除該消息。
如果 popReceipt 顯示為 null,通常表示消息尚未取出或命令不正確。
要獲取 popReceipt,使用 az storage message get 命令取出訊息。
2. Azure Functions 的本機開發與執行
啟動 Azure Functions
當本機環境設置完成後,你可以使用以下命令來啟動 Azure Functions:
1 | func start |
這條命令會啟動你的本地 Azure Functions 執行環境,使你可以在本機上測試和調試你的函數。
3. 加碼,代碼檢查和格式化
安裝與配置 Pylint
Pylint 是一個 Python 代碼靜態分析工具,可以檢查代碼中的錯誤和不符合最佳實踐的地方。首先,安裝 Pylint:
1 | pip install pylint |
配置 Pylint,創建或修改 .pylintrc 文件來包含你的檢查規則:
1 | [MESSAGES CONTROL] |
使用 Pylint 進行代碼檢查
運行以下命令來檢查所有 Python 文件:
1 | pylint *.py |
安裝與使用 Black 進行代碼格式化
Black 是一個自動格式化 Python 代碼的工具,能夠保持代碼風格的一致性。首先,安裝 Black:
1 | pip install black |
格式化整個專案的所有 Python 文件:
1 | black . |
整合檢查和格式化工具
你可以將代碼檢查和格式化工具整合到一個命令中,這樣可以簡化工作流程:
1 | pylint *.py && black . |
例外
在 Azure Functions 中,某些函數參數不符合 Pylint 的命名規則,這可能會導致部署失敗。你可以忽略這些特定的 Pylint 警告,例如:
1 | # pylint: disable=C0103 |
問題與排除
- 如果 Azurite 無法啟動,請檢查是否已正確安裝 Azurite 以及是否有其他應用程序佔用了相關端口。
- 如果 Azure Functions 無法啟動,請確保所有相關的配置文件和依賴項已正確設置。
參考
(fin)