你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn。
教程:为 Python 函数配置 Azure 表存储输出
本教程介绍如何通过完成以下任务将 Python 函数配置为使用 Azure 表存储作为输出绑定。
- 使用 Visual Studio Code 创建 Python 函数项目。
- 添加存储表输出函数绑定。
- 使用 Visual Studio Code 在本地运行函数。
- 使用 Azure CLI 通过服务连接器在 Azure 函数和存储表之间创建连接。
- 使用 Visual Studio 部署函数。
本教程中函数项目组件的概述:
项目组件 | 选择/解决方案 |
---|---|
源服务 | Azure 函数 |
目标服务 | Azure 存储表 |
函数绑定 | HTTP 触发器,存储表用作输出 |
本地项目身份验证类型 | 连接字符串 |
云函数身份验证类型 | 连接字符串 |
警告
Microsoft 建议使用最安全的可用身份验证流。 本过程中介绍的身份验证流程需要非常高的信任度,并携带其他流中不存在的风险。 请仅在无法使用其他更安全的流(例如托管标识)时才使用此流。
先决条件
- 在某一受支持的平台上安装 Visual Studio Code。
- Azure CLI。 可以在 Azure Cloud Shell 中使用它,或者在本地安装它。
- Azure 存储帐户和存储表。 如果你没有存储帐户,请创建一个。
- 本指南假设你了解 Functions 开发人员指南以及如何连接到 Azure Functions 中的服务中所述的概念。
创建 Python 函数项目
按照有关创建本地 Azure Functions 项目的教程操作,并在提示处提供以下信息:
Prompt | 选择 |
---|---|
选择一种语言 | 选择 Python 。 (v1 编程语言模型) |
选择 Python 解释器来创建虚拟环境 | 选择首选 Python 解释器。 如果某个选项未显示,请键入 Python 二进制文件的完整路径。 |
为项目的第一个函数选择模板 | 选择 HTTP trigger 。 |
提供函数名称 | 输入 TableStorageOutputFunc 。 |
授权级别 | 选择 Anonymous ,这将允许任何人调用你的函数终结点。 |
你已创建一个带有 HTTP 触发器的 Python 函数项目。
添加存储表输出绑定
绑定属性是在给定函数的 function.json 文件中定义的。 若要创建绑定,请右键单击(在 macOS 上,请按住 Ctrl 并单击)function 文件夹中的 function.json
文件,然后选择“添加绑定...”。 请按照提示为新绑定定义以下绑定属性:
Prompt | 值 | 说明 |
---|---|---|
选择绑定方向 | out |
该绑定是输出绑定。 |
选择具有方向的绑定... | Azure Table Storage |
该绑定是 Azure 存储表绑定。 |
用于在代码中标识此绑定的名称 | outMessage |
用于标识代码中引用的绑定参数的名称。 |
将向其中写入数据的存储帐户内的表名称 | testTable |
函数作为输出写入的表名称。 在存储帐户中创建名为 testTable 的表(如果不存在)。 |
从 local.setting.json 中选择设置 | Create new local app settings |
选择函数作为输出写入的存储帐户。 Visual Studio Code 将检索其用于本地项目连接的连接字符串。 |
若要检查是否已成功添加绑定,请执行以下操作:
- 打开
TableStorageOutputFunc/function.json
文件,检查是否已在此文件中添加包含type: table
和direction: out
的新绑定。 - 打开
local.settings.json
文件,检查是否已在此文件中添加包含存储帐户连接字符串的新键值对<your-storage-account-name>_STORAGE: <your-storage-account-connection-string>
。
添加绑定后,将 TableStorageOutputFunc/__init__.py
替换为此处的 Python 文件,以将函数代码更新为使用该绑定。
import logging
import uuid
import json
import azure.functions as func
def main(req: func.HttpRequest, outMessage: func.Out[str]) -> func.HttpResponse:
rowKey = str(uuid.uuid4())
data = {
"Name": "Output binding message",
"PartitionKey": "message",
"RowKey": rowKey
}
outMessage.set(json.dumps(data))
return func.HttpResponse(f"Message created with the rowKey: {rowKey}")
在本地运行函数
按照教程在本地运行函数并验证表输出。
- 如果系统提示你连接到存储帐户,请选择你在创建 Azure 函数资源时选择的存储帐户。 此值用于 Azure 函数运行时。 它不一定与用于输出的存储帐户相同。
- 若要在本地启动函数,请按
<kbd>
F5</kbd>
,或选择左侧“活动”栏中的“运行并调试”图标。 - 若要验证函数是否可以写入你的表,请在 Visual Studio Code“工作区”视图中右键单击该函数中的
Execute Function Now...
并检查函数响应。 响应消息应包含写入表中的rowKey
。
使用服务连接器创建连接
在最后一步中,你已在本地验证函数项目。 现在,你将了解如何在云中的 Azure 函数和 Azure 存储表之间配置连接,以便函数在部署到云后可以写入存储 Blob。
- 在本地项目中打开
function.json
文件,将bindings
中connection
属性的值更改为AZURE_STORAGETABLE_CONNECTIONSTRING
。 - 运行以下 Azure CLI 命令,以便在 Azure 函数与 Azure 存储之间创建连接。
az functionapp connection create storage-table --source-id "<your-function-resource-id>" --target-id "<your-storage-table-resource-id>" --secret
--source-id
格式:/subscriptions/{subscription}/resourceGroups/{source_resource_group}/providers/Microsoft.Web/sites/{site}
--target-id
格式:/subscriptions/{subscription}/resourceGroups/{target_resource_group}/providers/Microsoft.Storage/storageAccounts/{account}/tableServices/default
你已创建一个服务连接器资源,用于在函数的应用设置中配置 AZURE_STORAGETABLE_CONNECTIONSTRING
变量。 此应用设置随后将由函数绑定用来连接到存储,以便函数可以写入存储表。 你可以更详细地了解服务连接器如何帮助 Azure Functions 连接到服务。
将函数部署到 Azure
现在可以将函数部署到 Azure,并验证存储表输出绑定是否正常工作。
- 按照此 Azure Functions 教程将函数部署到 Azure。
- 若要验证函数是否可以写入到表,请在 Visual Studio Code“资源”视图中右键单击该函数中的
Execute Function Now...
并检查函数响应。 响应消息应包含函数刚刚写入表中的rowKey
。
疑难解答
如果发生与存储主机相关的任何错误(如 No such host is known (<account-name>.table.core.windows.net:443)
),则需要检查用于连接到 Azure 存储的连接字符串是否包含表终结点。 如果不包含,请转到 Azure 存储门户,从 Access keys
边栏选项卡中复制连接字符串,并替换值。
如果在本地启动项目时发生此错误,请检查 local.settings.json
文件。
如果在将函数部署到云(在这种情况下,函数部署通常会在 Syncing triggers
这一步失败)时发生此错误,请检查函数的应用设置。
清理资源
如果你不打算继续使用此项目,请删除之前创建的函数应用资源。
后续步骤
阅读以下文章,详细了解服务连接器的概念以及它如何帮助 Azure Functions 连接到其他云服务。