使用VS Code将Azure Functions连接到存储
程序员文章站
2023-12-30 13:26:16
...
配置本地环境
- 安装适用于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,因为你已使用默认存储账户。
Run方法定义如下所示:
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