Share via


Tutorial: Función de Python con Azure Table Storage como salida

En este tutorial, aprenderá a configurar una función de Python con una tabla de Storage como salida al completar las tareas siguientes.

  • Use Visual Studio Code para crear un proyecto de función de Python.
  • Agregue un enlace de función de salida de tabla de Storage.
  • Use Visual Studio Code para ejecutar la función localmente.
  • Use la CLI de Azure para crear una conexión entre la función de Azure y la tabla de Storage con el Conector de servicio.
  • Use Visual Studio para implementar la función.

Información general de los componentes del proyecto de función en este tutorial:

Componente de proyecto Selección o solución
Servicio de origen Función de Azure
Servicio de destino Tabla de Azure Storage
Enlace de funciones Desencadenador HTTP, tabla de Storage como salida
Tipo de autenticación de proyecto local Cadena de conexión
Tipo de autenticación de función en la nube Cadena de conexión

Requisitos previos

Creación de un proyecto de función de Python

Siga el tutorial para crear un proyecto local de Azure Functions y proporcione la siguiente información en las indicaciones:

Prompt Número de selección
Selección de un idioma Elija Python. (Modelo de lenguaje de programación v1)
Seleccionar el intérprete de Python para crear un entorno virtual Elija el intérprete de Python que prefiera usar. Si no se muestra una opción, escriba la ruta de acceso completa al archivo binario de Python.
Seleccionar una plantilla para la primera función de su proyecto Elija HTTP trigger.
Proporcionar un nombre de función Escriba TableStorageOutputFunc.
Nivel de autorización Elija el valor Anonymous, que permitirá que cualquier cliente llame al punto de conexión de la función. 

Ha creado un proyecto de función de Python con un desencadenador HTTP.

Agregar un enlace de salida de tabla de Storage

Los atributos de enlace se definen en el archivo function.json para una función determinada. Para crear un enlace, haga clic con el botón derecho (Ctrl + clic en macOS) en el archivo function.json de la carpeta de función y elija Agregar enlace... Siga las indicaciones para definir las siguientes propiedades de enlace para el nuevo enlace:

Prompt Valor Descripción
Select binding direction (Seleccionar dirección de enlace) out El enlace es un enlace de salida.
Select binding with direction... (Seleccionar enlace con dirección...) Azure Table Storage El enlace es un enlace de tabla de Azure Storage.
The name used to identify this binding in your code (Nombre identificativo del enlace en el código) outMessage Nombre que identifica el parámetro de enlace al que se hace referencia en el código.
El nombre de la tabla en la cuenta de almacenamiento donde se escribirán los datos testTable El nombre de la tabla que la función escribe como salida. Cree una tabla denominada testTable en la cuenta de almacenamiento, si no existe.
Select setting from "local.setting.json" (Seleccionar configuración de "local.setting.json") Create new local app settings Seleccione la cuenta de Storage que la función escribe como salida. Visual Studio Code recupera su cadena de conexión para la conexión del proyecto local.

Para comprobar que el enlace se ha agregado correctamente:

  1. Abra el archivo TableStorageOutputFunc/function.json y compruebe que se ha agregado un nuevo enlace con type: table y direction: out.
  2. Abra el archivo local.settings.json y compruebe que se ha agregado un nuevo par clave-valor<your-storage-account-name>_STORAGE: <your-storage-account-connection-string> que contiene la cadena de conexión de la cuenta de almacenamiento en este archivo.

Una vez agregado el enlace, actualice los códigos de función para consumir el enlace mediante el reemplazo de TableStorageOutputFunc/__init__.py por el archivo de Python aquí.

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}")

Ejecución local de la función

Siga el tutorial para ejecutar la función localmente y comprobar la salida de la tabla.

  1. Seleccione la cuenta de Storage que eligió al crear el recurso de función de Azure si se le pide que se conecte a una cuenta de almacenamiento. Este valor se usa para el entorno de ejecución de Azure Functions. No tiene por qué ser la misma cuenta de almacenamiento que se usa para la salida.
  2. Para iniciar la función localmente, presione <kbd>F5</kbd> o seleccione el icono Ejecutar y depurar en la barra de actividad del lado izquierdo.
  3. Para comprobar que la función puede escribir en la tabla, haga clic con el botón derecho en Execute Function Now... en la función del ÁREA DE TRABAJO de Visual Studio Code y compruebe la respuesta de la función. El mensaje de respuesta debe contener el valor rowKey que se escribió en la tabla.

Creación de una conexión mediante el Conector de servicio

En el último paso, ha comprobado el proyecto de función localmente. Ahora aprenderá a configurar la conexión entre la función de Azure y una tabla de Azure Storage en la nube, para que la función pueda escribir en el blob de Storage después de implementarse en la nube.

  1. Abra el archivo function.json en el proyecto local y cambie el valor de la propiedad connection en bindings para que sea AZURE_STORAGETABLE_CONNECTIONSTRING.
  2. Ejecute el siguiente comando de la CLI de Azure para crear una conexión entre la función de Azure y Azure Storage.
az functionapp connection create storage-table --source-id "<your-function-resource-id>" --target-id "<your-storage-table-resource-id>" --secret
  • Formato --source-id: /subscriptions/{subscription}/resourceG roups/{source_resource_group}/providers/Microsoft.Web/sites/{site}
  • Formato --target-id: /subscriptions/{subscription}/resourceGroups/{target_resource_group}/providers/Microsoft.Storage/storageAccounts/{account}/tableServices/default

Ha creado un recurso del Conector de servicio que define una variable AZURE_STORAGETABLE_CONNECTIONSTRING en la configuración de la aplicación de funciones. Después, el enlace de función consumirá esta configuración de aplicación para conectarse al almacenamiento, de forma que la función pueda escribir en la tabla de Storage. Puede obtener más información sobre cómo el Conector de servicio ayuda a Azure Functions a conectarse a los servicios.

Implementación de la función en Azure

Ahora puede implementar la función en Azure y comprobar que el enlace de salida de la tabla de Storage funciona.

  1. Siga el tutorial de Azure Functions para implementar la función en Azure.
  2. Para comprobar que la función puede escribir en la tabla, haga clic con el botón derecho en Execute Function Now... en la función de la vista RECURSOS de Visual Studio Code y compruebe la respuesta de la función. El mensaje de respuesta debe contener el valor rowKey que la función acaba de escribir en la tabla.

Solución de problemas

Si hay algún error relacionado con el host de almacenamiento, como No such host is known (<acount-name>.table.core.windows.net:443), debe comprobar si la cadena de conexión que usa para conectarse a Azure Storage contiene el punto de conexión de tabla o no. Si no es así, vaya a l portal de Azure Storage, copie la cadena de conexión de la hoja Access keys y reemplace los valores.

Si este error se produce al iniciar el proyecto localmente, compruebe el archivo local.settings.json.

Si se produce al implementar la función en la nube (en este caso, la implementación de funciones suele producir un error en Syncing triggers), compruebe la configuración de la aplicación de funciones.

Limpieza de recursos

Si no va a seguir usando este proyecto, elimine el recurso de aplicación de funciones que creó anteriormente.

  1. En Azure Portal, abra el recurso Aplicación de funciones y seleccione Eliminar.
  2. Escriba el nombre de la aplicación y seleccione Eliminar para confirmarlo.

Pasos siguientes

Lea los artículos siguientes para obtener más información sobre los conceptos del Conector de servicio y cómo ayuda a Azure Functions a conectarse a otros servicios en la nube.