[英]How to run Timer-triggered Azure Functions locally on Mac?
我想在本地開發環境(Node、OS X)中執行定時器觸發的 function,但它似乎需要對我擁有的 HTTP 觸發函數設置進行一些更改。
到目前為止,這是與定時器 function 相關的代碼:
/cron-job/function.json
定義了一個定時器輸入綁定,計划每分鍾運行一次。 它還具有對代碼入口點的引用(從 Typescript 編譯):
{
"bindings": [
{
"type": "timerTrigger",
"direction": "in",
"name": "timer",
"schedule": "0 */1 * * * *"
}
],
"scriptFile": "../dist/cron-job/index.js"
}
/cron-job/index.ts
import { AzureFunction, Context } from '@azure/functions'
const timerTrigger: AzureFunction = async function (
context: Context,
timer: any,
) {
console.log('context', context)
console.log('timer', timer)
// move on with async calls...
}
export default timerTrigger
/local.settings.json
{
"IsEncrypted": false,
"Values": {
"FUNCTIONS_WORKER_RUNTIME": "node",
"AzureWebJobsStorage": ""
}
}
當我嘗試啟動 function 應用時:
~/Projects/test-api (dev) $ func start --verbose
我得到一個錯誤:
Missing value for AzureWebJobsStorage in local.settings.json. This is required for all triggers other than httptrigger, kafkatrigger. You can run 'func azure functionapp fetch-app-settings <functionAppName>' or specify a connection string in local.settings.json.
當我將AzureWebJobsStorage
設置添加到local.settings.json
時,出現另一個錯誤:
The listener for function 'Functions.cron-job' was unable to start.
The listener for function 'Functions.cron-job' was unable to start. Microsoft.Azure.Storage.Common: Connection refused. System.Net.Http: Connection refused. System.Private.CoreLib: Connection refused.
經過一番研究,我想出了一個我認為應該分享的工作設置。
我的原始設置的問題是:
在local.settings.json
沒有"AzureWebJobsStorage": "UseDevelopmentStorage=true"
。 我已經啟動並運行了一個 HTTP 觸發功能,但似乎計時器觸發器需要該設置。 對於使用存儲模擬器時的本地開發,可以使用UseDevelopmentStorage=true
快捷方式。
沒有安裝存儲模擬器。 在 Windows 上,它似乎是 Microsoft Azure SDK 的一部分和/或它可以作為獨立工具安裝。 但它不適用於 Mac 和 Linux。 但是,有一個開源替代方案可用: Azurite ,它將取代 Storage Emulator 。
作為參考,我創建了一個 Typescript 入門存儲庫,可以對其進行擴展以編寫自己的 Azure 計時器觸發函數: azure-timer-function-starter-typescript
若要在 Mac 上本地運行 Azure 計時器功能,可以在 local.settings.json 中為 AzureWebJobsStorage 提供存儲帳戶連接字符串。 設置"AzureWebJobsStorage": "<storage account connection string>"
可以從 Azure 門戶獲取存儲帳戶連接字符串。 在 Azure 門戶中創建存儲帳戶。 轉到存儲帳戶訪問密鑰並復制連接字符串。
在 Windows 上,設置"AzureWebJobsStorage": "UseDevelopmentStorage=true"
或"AzureWebJobsStorage": "<storage account connection string>"
都可以。
在本地啟動 Azure function 后,您可以通過發送以下 POST 請求來執行它。 此方法適用於 HTTP 和事件網格觸發器。
URL: http://localhost:<your port>/admin/functions/<your function name>
正文有效負載: { "input": "test" }
在應用程序/ json中
您可以從官方文檔中閱讀更多內容。 https://learn.microsoft.com/en-us/azure/azure-functions/functions-manually-run-non-http
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.