Tutorial: Configuración de una función de Python con la salida de Azure Table Storage
En este tutorial, aprenderá a configurar una función de Python para usar Azure Table Storage como enlace de salida completando las siguientes tareas.
- 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 |
Advertencia
Microsoft recomienda usar el flujo de autenticación más seguro disponible. El flujo de autenticación que se describe en este procedimiento requiere un alto grado de confianza en la aplicación y conlleva riesgos que no están presentes en otros flujos. Solo debe usar este flujo cuando otros flujos más seguros, como las identidades administradas, no sean viables.
Requisitos previos
- Instale Visual Studio Code en una de las plataformas compatibles.
- La CLI de Azure. Puede usarla en Azure Cloud Shell o instalarla localmente.
- Una cuenta de Azure Storage y una tabla de Storage. Si aún no tiene una cuenta de almacenamiento, cree una.
- En esta guía se asume que conoce los conceptos presentados en la guía para desarrolladores de Functions y cómo conectarse a los servicios de Azure Functions.
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:
- Abra el archivo
TableStorageOutputFunc/function.json
y compruebe que se ha agregado un nuevo enlace contype: table
ydirection: out
. - 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.
- 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.
- 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. - 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 valorrowKey
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.
- Abra el archivo
function.json
en el proyecto local y cambie el valor de la propiedadconnection
enbindings
para que seaAZURE_STORAGETABLE_CONNECTIONSTRING
. - 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}/resourceGroups/{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.
- Siga el tutorial de Azure Functions para implementar la función en Azure.
- 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 valorrowKey
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 (<account-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.
- En Azure Portal, abra el recurso Aplicación de funciones y seleccione Eliminar.
- 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.