Tutorial: función de Python con Azure Blob Storage como entrada
En este tutorial, aprenderá a configurar una función de Python con Azure Blob Storage 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 |
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.
- Azure CLI. Puede usarla en Azure Cloud Shell o instalarla localmente.
- Una cuenta de Azure Storage y un blob de Storage. Si no tiene una cuenta de Azure Storage, cree una.
- En esta guía se da por supuesto que conoce los conceptos presentados en la guía para desarrolladores de Functions y cómo conectarse a los servicios de 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 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,
- Abra el archivo
BlobStorageInputFunc/function.json
y compruebe que se ha agregado un nuevo enlace contype: blob
ydirection: in
. - 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 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.
- 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.
- 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 leer el blob, 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 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.
- Abra el archivo
function.json
en el proyecto local y cambie el valor de la propiedadconnection
enbindings
para que seaMyBlobInputConnection
. - 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
- Formato
--source-id
:/subscriptions/{subscription}/resourceGroups/{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.
- Siga el tutorial para implementar la función en Azure.
- Para comprobar que la función puede leer el blob, 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 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 (<account-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.
- 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.