你当前正在访问 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 建议使用最安全的可用身份验证流。 本过程中介绍的身份验证流程需要非常高的信任度,并携带其他流中不存在的风险。 请仅在无法使用其他更安全的流(例如托管标识)时才使用此流。

先决条件

创建 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 将检索其用于本地项目连接的连接字符串。

若要检查是否已成功添加绑定,请执行以下操作:

  1. 打开 TableStorageOutputFunc/function.json 文件,检查是否已在此文件中添加包含 type: tabledirection: out 的新绑定。
  2. 打开 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}")

在本地运行函数

按照教程在本地运行函数并验证表输出。

  1. 如果系统提示你连接到存储帐户,请选择你在创建 Azure 函数资源时选择的存储帐户。 此值用于 Azure 函数运行时。 它不一定与用于输出的存储帐户相同。
  2. 若要在本地启动函数,请按 <kbd>F5 </kbd>,或选择左侧“活动”栏中的“运行并调试”图标。
  3. 若要验证函数是否可以写入你的表,请在 Visual Studio Code“工作区”视图中右键单击该函数中的 Execute Function Now... 并检查函数响应。 响应消息应包含写入表中的 rowKey

使用服务连接器创建连接

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

  1. 在本地项目中打开 function.json 文件,将 bindingsconnection 属性的值更改为 AZURE_STORAGETABLE_CONNECTIONSTRING
  2. 运行以下 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,并验证存储表输出绑定是否正常工作。

  1. 按照此 Azure Functions 教程将函数部署到 Azure。
  2. 若要验证函数是否可以写入到表,请在 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 这一步失败)时发生此错误,请检查函数的应用设置。

清理资源

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

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

后续步骤

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