你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn

教程:将 Azure 队列存储用作触发器的 Python 函数

本教程介绍如何通过完成以下任务,配置一个将存储队列用作触发器的 Python 函数。

  • 使用 Visual Studio Code 创建 Python 函数项目。
  • 使用 Visual Studio Code 在本地运行函数。
  • 使用 Azure CLI 通过服务连接器在 Azure 函数和存储队列之间创建连接。
  • 使用 Visual Studio 部署函数。

本教程中函数项目组件的概述:

项目组件 选择/解决方案
源服务 Azure 函数
目标服务 Azure 存储队列
函数绑定 存储队列用作触发器
本地项目身份验证类型 连接字符串
云函数身份验证类型 连接字符串

先决条件

创建 Python 函数项目

按照有关创建本地 Azure Functions 项目的教程操作,并在提示处提供以下信息:

Prompt 选择
选择一种语言 选择 Python。 (v1 编程语言模型)
选择 Python 解释器来创建虚拟环境 选择首选 Python 解释器。 如果某个选项未显示,请键入 Python 二进制文件的完整路径。
为项目的第一个函数选择模板 选择 Azure Queue Storage trigger
提供函数名称 输入 QueueStorageTriggerFunc
从“local.settings.json”中选择设置 选择 Create new local app settings,以便选择存储帐户并提供用作触发器的队列名称。

你已创建一个将 Azure 存储队列用作触发器的 Python 函数项目。 本地项目使用保存到 local.settings.json 文件中的连接字符串连接到 Azure 存储。 最后,在 function.json 文件中定义的函数绑定的帮助下,函数的 __init__.py 文件中的 main 函数可以使用连接字符串。

在本地运行函数

按照教程在本地运行函数并验证触发器。

  1. 如果系统提示你连接到存储,请选择你在创建 Azure 函数资源时选择的存储帐户。 此值用于 Azure 函数的运行时,它不一定与用于触发器的存储帐户相同。
  2. 若要在本地启动函数,请按 <kbd>F5 </kbd>,或选择左侧“活动”栏中的“运行并调试”图标。
  3. 若要验证触发器是否正常工作,请让函数在本地运行,并在 Azure 门户中打开“存储队列”边栏选项卡,选择“添加消息”并提供测试消息。 应该会看到函数在 Visual Studio Code 终端中作为队列项触发并处理。

使用服务连接器创建连接

在最后一步中,你在本地验证了函数项目。 现在,你将了解如何在云中的 Azure 函数和 Azure 存储队列之间配置连接,以便函数在部署到云后可由存储队列触发。

  1. 在本地项目中打开 function.json 文件,将 bindingsconnection 属性的值更改为 AZURE_STORAGEQUEUE_CONNECTIONSTRING
  2. 运行以下 Azure CLI 命令,以便在 Azure 函数与 Azure 存储帐户之间创建连接。
az functionapp connection create storage-queue --source-id "<your-function-resource-id>" --target-id "<your-storage-queue-resource-id>" --secret
  • --source-id 格式:/subscriptions/{subscription}/resourceG roups/{source_resource_group}/providers/Microsoft.Web/sites/{site}
  • --target-id 格式:/subscriptions/{subscription}/resourceGroups/{target_resource_group}/providers/Microsoft.Storage/storageAccounts/{account}/queueServices/default

此步骤会创建一个服务连接器资源,用于在函数的应用设置中配置 AZURE_STORAGEQUEUE_CONNECTIONSTRING 变量。 函数绑定运行时使用它连接到存储,以便该函数可以接受来自存储队列的触发器。 有关详细信息,请转到服务连接器如何帮助 Azure Functions 连接到服务

将函数部署到 Azure

现在可以将函数部署到 Azure,并验证存储存储队列触发器是否正常工作。

  1. 按照此 Azure Functions 教程将函数部署到 Azure。
  2. 在 Azure 门户中打开“存储队列”边栏选项卡,选择“添加消息”并提供测试消息。 应该会看到函数在函数日志中作为队列项触发并处理。

疑难解答

如果发生与存储主机相关的任何错误(例如 No such host is known (<acount-name>.queue.core.windows.net:443)),请检查用于连接到 Azure 存储的连接字符串是否包含队列终结点。 如果不包含,请转到 Azure 门户中的“Azure 存储”,从“Access keys”边栏选项卡中复制连接字符串并替换值。

如果在本地启动项目时发生此错误,请检查 local.settings.json 文件。

如果在将函数部署到云(在这种情况下,函数部署通常会在“Syncing triggers”这一步失败)时发生此错误,请检查函数的“应用设置”。

清理资源

如果你不打算继续使用此项目,请删除之前创建的函数应用资源。

  1. 在 Azure 门户中,打开函数应用资源并选择“删除”。
  2. 输入应用名称,然后选择“删除”进行确认。

后续步骤

阅读以下文章,详细了解服务连接器的概念以及它如何帮助 Azure Functions 连接到服务。