使用VS Code將Azure Functions連線到儲存
阿新 • • 發佈:2021-02-04
技術標籤:VS CodeC#vs codeazure functionstorage accountqueue
使用VS Code將Azure Functions連線到儲存
配置本地環境
- 安裝適用於VS Code的Azure儲存擴充套件
- 安裝Azure 儲存資源管理器。儲存資源管理器是一項視覺化的本地客戶端工具,可以用來檢查輸出繫結生成的佇列訊息。
- 安裝.NET Core CLI工具
- 已完成示例使用VS Code中的Azure Functions擴充套件建立C#函式(Azure Function))
下載函式應用設定
下載儲存在Azure中的應用設定中的儲存賬戶連線字串到local.settings.json檔案中,使在本地執行函式時連線到該儲存賬戶,並將訊息寫入該儲存賬戶的佇列中。
- 同時按下Shift+Command+P,開啟命令面板,鍵入 Azure Functions:Download Remote Settings…。
- 選擇在上一個示例中建立的函式應用,選擇"全是"覆蓋現有本地設定。
- 屬性值AzureWebJobsStorage即為用於訪問該儲存賬戶連線字串值的鍵。
註冊繫結擴充套件
在終端中輸入以下命令並執行,將儲存擴充套件包新增到專案中。
dotnet add package Microsoft.Azure.WebJobs.Extensions.Storage
現在,你可以將儲存輸出繫結新增到專案。
新增輸出繫結
在C#類庫專案中,繫結被定義為函式方法上的繫結屬性。然後,基於這些屬性自動生成Functions所需的function.json檔案。
開啟HttpExamples.cs專案檔案,並將以下引數新增到Run方法定義中:
[Queue("outqueue"),StorageAccount("AzureWebJobsStorage")] ICollector<string> msg,
msg 引數為ICollector型別,表示函式完成時寫入輸出繫結的訊息集合。在這種情況下,輸出是名為outqueue儲存佇列。儲存賬戶的連線字串由StorageAccountAttribute設定。此屬性指示包含儲存賬戶連線字串的設定,可以在類、方法或引數級別應用。在當前情況下,可以省略StorageAccountAttribute,因為你已使用預設儲存賬戶。
public static async Task<IActionResult> Run(
[HttpTrigger(AuthorizationLevel.Anonymous, "get", "post", Route = null)] HttpRequest req,
[Queue("outqueue"), StorageAccount("AzureWebJobsStorage")] ICollector<string> msg,
ILogger log)
使用輸出繫結時,無需使用Azure儲存SDK程式碼進行身份驗證、獲取佇列引用或寫入資料。Functions執行時和佇列輸出繫結將為你執行這些任務。
使用msg輸出繫結物件來建立佇列訊息,如下所示:
if (!string.IsNullOrEmpty(name))
{
// Add a message to the output collection.
msg.Add(string.Format("Name passed to the function: {0}", name));
}
在本地執行函式
成功執行後,在瀏覽器中開啟Uri,如http://localhost:7071/api/HttpExample?name=test,會在瀏覽愛視窗中顯示內容。
檢查輸出佇列
- 在VS Code中,開啟命令面板,搜尋並執行命令 Azure Storage:Open in Storage Explorer,選擇你的儲存賬戶名稱。隨即將在Azure儲存資源管理器中開啟你的儲存賬戶。
- 展開"佇列"節點,然後選擇名為outqueue的佇列。
此佇列包含在執行HTTP觸發的函式時佇列輸出繫結建立的訊息。
重新部署並驗證更新的應用
- 在VS Code中開啟命令面板,搜尋並執行命令 Azure Functions: Deploy to function app…。
- 選擇你之前建立的函式應用。
- 部署完成後,可以使用curl或瀏覽器測試重新部署的函式。與前面一樣,將查詢字串 ?name= 追加到url,如: https://testcreatefunctionbyvscode.azurewebsites.net/api/HttpExample?code=1234567890?name=test