Comparteix a través de


Tutorial: función de Python con Azure Blob Storage como entrada

En este tutorial, aprenderá a configurar una función de Python con Storage Blob como entrada completando las tareas siguientes:

  • Use Visual Studio Code para crear un proyecto de función de Python.
  • Cambie los códigos para agregar el enlace de función de entrada de blobs de almacenamiento.
  • 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 Storage Blob 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 Azure Storage Blob
Enlace de funciones Desencadenador HTTP, Blob de almacenamiento como entrada
Tipo de autenticación de proyecto local Cadena de conexión
Tipo de autenticación de función en la nube Identidad administrada asignada por el sistema

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 BlobStorageInputFunc.
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.

Adición de un enlace de entrada de Blob 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) in El enlace es un enlace de entrada.
Select binding with direction... (Seleccionar enlace con dirección...) Azure Blob Storage El enlace es un enlace de blobs de Azure Storage.
The name used to identify this binding in your code (Nombre identificativo del enlace en el código) inputBlob Nombre que identifica el parámetro de enlace al que se hace referencia en el código.
La ruta de acceso dentro de la cuenta de almacenamiento desde donde se leerá el blob testcontainer/test.txt Ruta de acceso del blob que la función lee como entrada. Prepare un archivo denominado test.txt, con un Hello, World! como contenido del archivo. Cree un contenedor denominado testcontainer y cargue el archivo en el contenedor.
Select setting from "local.setting.json" (Seleccionar configuración de "local.setting.json") Create new local app settings Seleccione la cuenta de almacenamiento que la función lee como entrada. Visual Studio Code recupera su cadena de conexión para la conexión del proyecto local.

Para comprobar que el enlace se agregó correctamente,

  1. Abra el archivo BlobStorageInputFunc/function.json y compruebe que se ha agregado un nuevo enlace con type: blob y direction: in.
  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 reemplazando BlobStorageInputFunc/__init__.py por el archivo de Python aquí.

import logging
import azure.functions as func

def main(req: func.HttpRequest, inputBlob: bytes) -> func.HttpResponse:
    logging.info('Python HTTP trigger function processed a request.')
    return func.HttpResponse('The triggered function executed successfully. And read blob content: {}'.format(inputBlob))

Ejecución local de la función

Siga el tutorial para ejecutar la función localmente y comprobar la entrada del blob.

  1. Seleccione la cuenta de almacenamiento que usó al crear el recurso de Función de Azure si se le pide que se conecte a Storage. Es para el uso interno del runtime de Función de Azure y no es necesariamente el mismo que el que se usa para la entrada.
  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 leer el blob, haga clic con el botón derecho en Exucute 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 incluir el contenido en el archivo de blob.

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

Acaba de ejecutar el proyecto y comprobar la función localmente y el proyecto local se conecta al blob de almacenamiento mediante una cadena de conexión.

Ahora aprenderá a configurar la conexión entre la Función de Azure y Azure Blob Storage para que la función pueda leer el blob después de implementarse en la nube. En el entorno de nube, se muestra cómo autenticarse mediante una identidad administrada asignada por el sistema.

  1. Abra el archivo function.json en el proyecto local y cambie el valor de la propiedad connection en bindings para que sea MyBlobInputConnection.
  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-blob --source-id "<your-function-resource-id>" --target-id "<your-storage-blob-resource-id>" --system-identity --customized-keys AZURE_STORAGEBLOB_RESOURCEENDPOINT=MyBlobInputConnection__serviceUri
  • --source-id formato: /subscriptions/{subscription}/resourceG roups/{source_resource_group}/providers/Microsoft.Web/sites/{site}
  • --target-id formato: /subscriptions/{subscription}/resourceGroups/{target_resource_group}/providers/Microsoft.Storage/storageAccounts/{account}/blobServices/default

Ha creado una conexión entre la Función de Azure y Azure Blob Storage mediante el Conector de servicio, con una identidad administrada asignada por el sistema.

El Conector de servicio configuró una variable MyBlobInputConnection__serviceUri en la configuración de la aplicación de la función usada por el runtime de enlace de funciones para conectarse al almacenamiento, de modo que la función pueda leer datos del almacenamiento de blobs. 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 entrada de blobs de almacenamiento funciona.

  1. Siga el tutorial para implementar la función en Azure.
  2. Para comprobar que la función puede leer el blob, haga clic con el botón derecho en Exucute 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 incluir el contenido en el archivo de blob.

Solución de problemas

Si hay algún error relacionado con el host de almacenamiento, como No such host is known (<acount-name>.blob.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 blob o no. Si no es así, vaya a Azure Storage en Azure Portal, copie la cadena de conexión de la hoja Access keys y reemplace los valores.

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

Si el error 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.