盡可能在本地開發環境中建立並驗證你的 Azure Functions 程式碼專案。 使用 Azure Functions Core Tools,您可以獲得本地執行版本的 Azure Functions,與主流開發工具整合,進行整合開發、除錯與部署。 您的本機函式甚至可以連結到即時 Azure 服務。
本文也提供本機開發的一些共用指引,例如使用 local.settings.json 檔案。 它也連結至針對開發環境的具體指引。
小提示
關於如何在本地開發函式的詳細資訊,請參閱連結的 IDE 專用指引文章。
本機開發環境
你在本地電腦上開發函式的方式,取決於你的 語言 和工具偏好。 請在 文章頂部選擇您偏好的語言。
小提示
所有本機開發都依賴 Azure Functions Core Tools 來提供 Functions 執行階段,以便在本機環境中進行偵錯。
利用這些開發環境以你偏好的語言在本地編寫函式:
| 環境 | 描述 |
|---|---|
| Visual Studio | Azure Functions 工具包含在 Visual Studio 的 Azure 開發工作負載中。 你可以將 C# 函式程式碼編譯並部署到 Azure,作為 .NET 類別函式庫。 包括用於本機測試的 Core Tools。 想了解更多,請參考 使用 Visual Studio 在 Azure 建立你的第一個 C# 函式。 |
| Visual Studio 程式碼 | 適用於 Visual Studio Code 的 Azure Functions 擴充功能會將 Functions 支援新增至 Visual Studio Code。 需要 Core Tools。 支援在Linux、macOS和 Windows 上進行開發。 若要深入了解,請參閱使用 Visual Studio Code 建立第一個函式。 |
| 命令提示字元或終端機 | Azure Functions Core Tools 提供核心執行階段和範本來建立函式,以便進行本機開發。 支援在Linux、macOS和 Windows 上進行開發。 若要深入瞭解,請參閱 從命令行在 Azure 中建立 C# 函式。 |
| 環境 | 描述 |
|---|---|
| Maven | Maven 原型使用 Core Tools 來啟用 Java 函式的開發。 支援在Linux、macOS和 Windows 上進行開發。 若要深入了解,請參閱使用 Java 和 Maven 建立您的第一個函式。 |
| Visual Studio 程式碼 | 適用於 Visual Studio Code 的 Azure Functions 擴充功能會將 Functions 支援新增至 Visual Studio Code。 需要 Core Tools。 支援在Linux、macOS和 Windows 上進行開發。 若要深入了解,請參閱使用 Visual Studio Code 建立第一個函式。 |
| IntelliJ IDEA | Maven 原型和 Core Tools 可讓您使用 IntelliJ 開發函式。 如需詳細資訊,請參閱 使用 IntelliJ 在 Azure 中建立您的第一個 Java 函式。 |
| 日蝕 | Maven 原型和 Core Tools 可讓您使用 Eclipse 開發函式。 若要深入瞭解,請參閱 使用 Ecplise 在 Azure 中建立您的第一個 Java 函式。 |
| 環境 | 描述 |
|---|---|
| Visual Studio 程式碼 | 適用於 Visual Studio Code 的 Azure Functions 擴充功能會將 Functions 支援新增至 Visual Studio Code。 需要 Core Tools。 支援在Linux、macOS和 Windows 上進行開發。 若要深入了解,請參閱使用 Visual Studio Code 建立第一個函式。 |
| 命令提示字元或終端機 | Azure Functions Core Tools 提供核心執行階段和範本來建立函式,以便進行本機開發。 支援在Linux、macOS和 Windows 上進行開發。 若要深入瞭解,請參閱 從命令行在 Azure 中建立 Node.js 函式。 |
| 環境 | 描述 |
|---|---|
| Visual Studio 程式碼 | 適用於 Visual Studio Code 的 Azure Functions 擴充功能會將 Functions 支援新增至 Visual Studio Code。 需要 Core Tools。 支援在Linux、macOS和 Windows 上進行開發。 若要深入了解,請參閱使用 Visual Studio Code 建立第一個函式。 |
| 命令提示字元或終端機 | Azure Functions Core Tools 提供核心執行階段和範本來建立函式,以便進行本機開發。 支援在Linux、macOS和 Windows 上進行開發。 若要深入瞭解,請參閱 從命令行在 Azure 中建立 PowerShell 函式。 |
| 環境 | 描述 |
|---|---|
| Visual Studio 程式碼 | 適用於 Visual Studio Code 的 Azure Functions 擴充功能會將 Functions 支援新增至 Visual Studio Code。 需要 Core Tools。 支援在Linux、macOS和 Windows 上進行開發。 若要深入了解,請參閱使用 Visual Studio Code 建立第一個函式。 |
| 命令提示字元或終端機 | Azure Functions Core Tools 提供核心執行階段和範本來建立函式,以便進行本機開發。 支援在Linux、macOS和 Windows 上進行開發。 若要深入瞭解,請參閱 從命令行在 Azure 中建立 Python 函式。 |
每個本機開發環境都可讓您建立函式應用程式專案,並使用預先定義的函式範本來建立新的函式。 每個環境都使用 Core Tools,讓你可以在自己的機器上針對真實的 Functions 執行階段測試和偵錯你的函式,如同測試任何其他應用程式一樣。 您也可以從上述任何環境將您的函式應用程式專案發佈至 Azure。
本機專案檔
不論何種語言,Azure Functions 專案目錄都在專案根資料夾中包含下列檔案:
| 檔案名稱 | 描述 |
|---|---|
| host.json | 若要深入了解,請參閱 host.json 參考。 |
| local.settings.json | 這些設定是 Core Tools 在本地執行時使用的,包括應用程式設定。 若要深入了解,請參閱本機設定檔案。 |
| .gitignore | 防止 local.settings.json 檔案意外發佈至 Git 存放庫。 若要深入了解,請參閱本機設定檔案。 |
| .vscode\extensions.json | 在 Visual Studio Code 中開啟專案資料夾時使用的設定檔案。 |
專案中的其他檔案取決於您的語言和特定函式。 如需詳細資訊,請參閱以您的語言撰寫的開發人員指南。
本機設定檔
檔案 local.settings.json 會儲存本機開發工具所使用的應用程式設定和設定。 只有在本地執行專案時才使用檔案 local.settings.json 中的設定。 當你將專案發佈到 Azure 時,請在函式應用程式的應用程式設定中加入所需的設定。
重要事項
由於 local.settings.json 檔案可能包含秘密,例如連線字串,請謹慎提交給原始碼控制。 支援 Functions 的工具提供將檔案中的 local.settings.json 設定與部署專案之函式應用程式中 的應用程式設定 同步處理的方式。
檔案 local.settings.json 具有此結構:
{
"IsEncrypted": false,
"Values": {
"FUNCTIONS_WORKER_RUNTIME": "<language worker>",
"AzureWebJobsStorage": "<connection-string>",
"MyBindingConnection": "<binding-connection-string>",
"AzureWebJobs.HttpExample.Disabled": "true"
},
"Host": {
"LocalHttpPort": 7071,
"CORS": "*",
"CORSCredentials": false
},
"ConnectionStrings": {
"SQLConnectionString": "<sqlclient-connection-string>"
}
}
當您在本機執行專案時,支援下列設定:
| 設定 | 描述 |
|---|---|
IsEncrypted |
當此設定設為 true時,所有值皆透過本地機器金鑰加密。 需搭配 func settings 命令使用。 預設值為 false。 當本機電腦中包含秘密 (例如服務連接字串) 時,您可能想要對其進行加密。 主機會在執行時自動解密設定。 請先使用 func settings decrypt 命令,然後再嘗試讀取本機加密的設定。 |
Values |
專案在本機執行時所使用的應用程式設定集合。 這些索引鍵/值 (字串-字串) 組會對應至 Azure 中函式應用程式的應用程式設定,例如 AzureWebJobsStorage。 許多觸發程序和繫結都有參考連結字串應用程式設定的屬性,例如 Connection的 屬性。 對於這類屬性,您需要在 Values 陣列中定義的應用程式設定。 如需常用的設定清單,請參閱後續表格。 值必須是字串,而不是 JSON 物件或陣列。 設定名稱不可包含雙底線 ( __),且不應包含冒號 (:)。 執行階段會保留雙底線字元,並且會保留冒號以支援相依性插入。 |
Host |
當您在本機執行專案時,本節中的設定會自訂 Functions 主機程序。 這些設定與 host.json 設定不同,也適用於您在 Azure 中執行專案時。 |
LocalHttpPort |
設定於執行本機 Functions 主機 (func host start 和 func run) 時所使用的預設連接埠。
--port 命令列選項的優先順序高於此設定。 例如,當在 Visual Studio IDE 中執行時,你可以透過瀏覽到「專案屬性 -> 除錯」視窗,並在「應用程式參數」欄位中明確指定一個可加入的指令 host start --port <your-port-number> 來更改埠號。 |
CORS |
定義針對跨來源資源共享 (CORS) 所允許的來源。 來源是以不含空格的逗號分隔清單提供。 支援萬用字元值 (*),允許來自任何來源的要求。 |
CORSCredentials |
若設定為 true,則允許 withCredentials 要求。 |
ConnectionStrings |
集合。 請勿將此集合用於您函式繫結所使用的連接字串。 此集合僅供架構使用,其通常會從組態檔的 ConnectionStrings 區段取得連接字串,例如 Entity Framework。 此物件中的連接字串會新增至具有 System.Data.SqlClient 提供者類型的環境。 此集合中的項目不會發佈至具備其他應用程式設定的 Azure。 您必須明確地將這些值新增到函式應用程式設定的 Connection strings 集合。 如果你在函式程式碼中建立 SqlConnection,請將連接字串值與其他連接一起存放在入口網站的 應用程式設定 中。 |
在本機執行時,下列應用程式設定可以包含在 Values 陣列中:
| 設定 | 值 | 描述 |
|---|---|---|
AzureWebJobsStorage |
儲存體帳戶連接字串,或UseDevelopmentStorage=true |
包含 Azure 儲存體帳戶的連接字串。 使用 HTTP 以外的觸發程式時為必要項。 如需詳細資訊,請參閱 AzureWebJobsStorage 參考。當您在本機安裝 Azurite 模擬器,並將 AzureWebJobsStorage 設定為 UseDevelopmentStorage=true 時,Core Tools 會使用該模擬器。 如需詳細資訊,請參閱本機儲存體模擬器。 |
AzureWebJobs.<FUNCTION_NAME>.Disabled |
true|false |
若要在本機執行時停用函式,請將 "AzureWebJobs.<FUNCTION_NAME>.Disabled": "true" 新增至集合,其中 <FUNCTION_NAME> 是函式的名稱。 若要深入了解,請參閱如何停用 Azure Functions 中的函式。 |
FUNCTIONS_WORKER_RUNTIME |
dotnetdotnet-isolatednodejavapowershellpython |
表示 Functions 執行階段的目標語言。 在 2.x 版和更高版本的 Functions 執行階段中為必要項。 Core Tools 會為你的專案產生這個設定。 若要深入了解,請參閱 FUNCTIONS_WORKER_RUNTIME 參考。 |
FUNCTIONS_WORKER_RUNTIME_VERSION |
~7 |
指出在本機執行時應使用 PowerShell 7。 如果未設定,則會使用 PowerShell Core 6。 只有在本機執行時,才會使用此設定。 在 Azure 中執行時,PowerShell 執行階段版本是由 powerShellVersion 網站組態設定所決定 (可在入口網站中設定)。 |
若要了解如何在函數程式碼中使用陣列中的 values 值作為環境變數,請參閱開發人員指南中的 環境變數 。
若要了解如何在函數程式碼中使用陣列中的 values 值作為環境變數,請參閱開發人員指南中的 環境變數 。
若要了解如何在函數程式碼中使用陣列中的 values 值作為環境變數,請參閱開發人員指南中的 環境變數 。
若要了解如何在函數程式碼中使用陣列中的 values 值作為環境變數,請參閱開發人員指南中的 環境變數 。
同步處理設定
當你在本地開發函式時,請在部署程式碼的函式應用設定中,包含應用程式所需的任何本地設定。 您可能也需要將目前的設定從函式應用程式下載到本機專案。 雖然您可以在 Azure 入口網站中手動設定應用程式設定,但下列工具也可讓您將應用程式設定與專案中的本機設定進行同步處理:
觸發和繫結
當你在本地開發功能時,考慮觸發與綁定行為。 對於 HTTP 觸發程序,您可以透過使用 http://localhost/ 呼叫本機電腦上的 HTTP 端點。 對於非 HTTP 觸發函式,請使用幾個選項在本地執行:
- 你可以使用針對 Live Azure 服務的連線字串來測試本地開發時的綁定。 在 local.settings.json 檔案的陣列中加入適當的連接字串設定
Values。 當您這樣做時,測試期間的本機執行可能會影響您的生產服務。 相反地,建議在開發和測試期間建立獨立的即時服務,生產時再切換到不同的服務。 - 針對儲存觸發器,請使用 本地儲存模擬器。
- 透過特殊管理員端點手動執行非 HTTP 觸發函式。 如需詳細資訊,請參閱 手動執行非 HTTP 觸發的函式。
在本地測試時,你必須在本地執行由 Core Tools 提供的主機(func.exe)。 如需詳細資訊,請參閱 Azure Functions Core Tools。
HTTP 測試工具
在開發過程中,只要函式端點支援 HTTP GET 方法,你可以從網頁瀏覽器呼叫它們。 不過,對於支援 POST 或 PUT 等承載的其他 HTTP 方法,您必須使用 HTTP 測試工具來建立這些 HTTP 要求並將其傳送至函式端點。
注意
針對要求必須包含敏感性資料的案例,務必使用可保護資料的工具,並降低公開任何敏感性資料的風險。 你應該保護的敏感資料可能包括:憑證、機密、存取權杖、API 金鑰、地理定位資料以及個人資料。
為了保護你的資料,請選擇一個離線或本地運作、不會同步資料到雲端,也不需登入線上帳號的 HTTP 測試工具。 有些工具也可藉由實作特定安全性功能,保護您的資料免於意外暴露。
避免使用集中儲存 HTTP 要求歷程記錄 (包括敏感性資訊)、不遵循最佳安全性做法,或不尊重資料隱私權考量的工具。
請考慮使用下列其中一個工具,安全地將 HTTP 要求傳送至您的函式端點:
- Visual Studio Code 支援來自 Visual Studio Marketplace 具有 .http 副檔名的擴充功能,例如 REST Client
- Visual Studio 從 17.8 版本開始支援 .http 檔案
- PowerShell Invoke-RestMethod
- Microsoft Edge - 網路主控台工具
- Bruno
- curl
本機儲存體模擬器
在本地開發時,你可以在測試帶有 Azure Storage 綁定(佇列儲存、Blob 儲存和表格儲存)的功能時,使用本地 Azurite 模擬器 ,而不必連接遠端儲存服務。 Azurite 可以整合到 Visual Studio Code 和 Visual Studio,你也可以使用 npm 從命令列執行。 如需詳細資訊,請參閱使用 Azurite 模擬器進行本機 Azure 儲存體開發。
local.settings.json 檔案 Values 集合中的下列設定會告知本機 Functions 主機,針對預設 AzureWebJobsStorage 連線使用 Azurite:
"AzureWebJobsStorage": "UseDevelopmentStorage=true"
採用此設定值,任何使用 AzureWebJobsStorage 來做為其連線的 Azure 儲存體觸發程序或繫結,都會在本機執行時連線到 Azurite。 在本機執行期間使用儲存體模擬時,請記住這些考量:
- 您必須安裝並執行 Azurite。
- 在發佈至 Azure 之前,您應該先測試與 Azure 服務的實際儲存體連線。
- 當您發佈專案時,請勿以
AzureWebJobsStorage形式發佈UseDevelopmentStorage=true設定。 在 Azure 中,AzureWebJobsStorage設定一律是函式應用程式所使用的儲存體帳戶連接字串。 如需詳細資訊,請參閱AzureWebJobsStorage。
相關文章
- 要深入瞭解如何使用 Visual Studio 進行本機函式開發,請參閱 使用 Visual Studio 開發 Azure Functions。
- 若要深入瞭解在 Mac、Linux 或 Windows 電腦上使用 Visual Studio Code 進行函式的本機開發,請參閱 使用 Visual Studio Code 開發 Azure Functions。
- 若要深入了解如何從命令提示字元或終端機開發函式,請參閱使用 Azure Functions Core Tools。