你当前正在访问 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 存储队列 |
函数绑定 | 存储队列用作触发器 |
本地项目身份验证类型 | 连接字符串 |
云函数身份验证类型 | 连接字符串 |
警告
Microsoft 建议使用最安全的可用身份验证流。 本过程中介绍的身份验证流程需要非常高的信任度,并携带其他流中不存在的风险。 请仅在无法使用其他更安全的流(例如托管标识)时才使用此流。
先决条件
- 在某一受支持的平台上安装 Visual Studio Code。
- Azure CLI。 可以在 Azure Cloud Shell 中使用它,或者在本地安装它。
- Azure 存储帐户和存储队列。 如果没有 Azure 存储,请创建一个。
- 本指南假设你了解 Azure Functions 开发人员指南和如何连接到 Functions 中的服务中所述的基本概念。
创建 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
函数可以使用连接字符串。
在本地运行函数
按照教程在本地运行函数并验证触发器。
- 如果系统提示你连接到存储,请选择你在创建 Azure 函数资源时选择的存储帐户。 此值用于 Azure 函数的运行时,它不一定与用于触发器的存储帐户相同。
- 若要在本地启动函数,请按
<kbd>
F5</kbd>
,或选择左侧“活动”栏中的“运行并调试”图标。 - 若要验证该触发器是否正常工作,请让该函数在本地运行,并在 Azure 门户中打开“存储队列”窗格,选择“添加消息”并提供测试消息。 应该会看到函数在 Visual Studio Code 终端中作为队列项触发并处理。
使用服务连接器创建连接
在最后一步中,你在本地验证了函数项目。 现在,你将了解如何在云中的 Azure 函数和 Azure 存储队列之间配置连接,以便函数在部署到云后可由存储队列触发。
- 在本地项目中打开
function.json
文件,将bindings
中connection
属性的值更改为AZURE_STORAGEQUEUE_CONNECTIONSTRING
。 - 运行以下 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,并验证存储存储队列触发器是否正常工作。
- 按照此 Azure Functions 教程将函数部署到 Azure。
- 在 Azure 门户中打开“存储队列”窗格,选择“添加消息”并提供测试消息。 应该会看到函数在函数日志中作为队列项触发并处理。
疑难解答
如果发生与存储主机相关的任何错误(例如 No such host is known (<acount-name>.queue.core.windows.net:443)
),请检查用于连接到 Azure 存储的连接字符串是否包含队列终结点。 如果不包含,请转到 Azure 门户中的“Azure 存储”,从“Access keys
”窗格中复制连接字符串并替换这些值。
如果在本地启动项目时发生此错误,请检查 local.settings.json
文件。
如果在将函数部署到云(在这种情况下,函数部署通常会在“Syncing triggers
”这一步失败)时发生此错误,请检查函数的“应用设置”。
清理资源
如果你不打算继续使用此项目,请删除之前创建的函数应用资源。
后续步骤
阅读以下文章,详细了解服务连接器的概念以及它如何帮助 Azure Functions 连接到服务。