Nota:
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
En este inicio rápido, usará Visual Studio Code para compilar una aplicación que responda a eventos en un contenedor de Blob Storage. Después de probar el código localmente mediante un emulador, se implementa en una nueva aplicación de funciones sin servidor que se ejecuta en un plan de consumo flexible en Azure Functions.
El proyecto usa la extensión de la CLI para desarrolladores de Azure (azd) con Visual Studio Code para simplificar la inicialización y comprobación del código del proyecto localmente, así como la implementación del código en Azure. Esta implementación sigue los procedimientos recomendados actuales para implementaciones seguras y escalables de Azure Functions.
En este artículo se admite la versión 4 del modelo de programación de Node.js para Azure Functions.
En este artículo se admite la versión 2 del modelo de programación de Python para Azure Functions.
Prerrequisitos
Una cuenta de Azure con una suscripción activa. Cree una cuenta gratuita.
Visual Studio Code en una de las plataformas admitidas.
La extensión de Azure Functions para Visual Studio Code. Esta extensión requiere Azure Functions Core Tools. Cuando esta herramienta no está disponible localmente, la extensión intenta instalarla mediante un instalador basado en paquetes. También puede instalar o actualizar el paquete de Core Tools ejecutando
Azure Functions: Install or Update Azure Functions Core Toolsdesde la paleta de comandos. Si no tiene npm o Homebrew instalado en el equipo local, en su lugar debe instalar o actualizar manualmente Core Tools.
Extensión de C# para Visual Studio Code.
El Kit de desarrollo de Java, versión 8, 11, 17 o 21 (Linux).
Apache Maven, versión 3.0 o posterior.
-
Node.js 18.x o superior. Use el comando
node --versionpara comprobar la versión.
La extensión de PowerShell para Visual Studio Code
Use versiones de Python compatibles con Azure Functions. Para obtener más información, vea Instalación de Python.
La extensión de Python para Visual Studio Code
- La extensión de la CLI para desarrolladores de Azure para Visual Studio Code.
Extensión de cliente REST o una herramienta REST equivalente que se usa para ejecutar solicitudes HTTP de forma segura.
Inicialización del proyecto
Use el azd init comando de la paleta de comandos para crear un proyecto de código local de Azure Functions a partir de una plantilla.
En Visual Studio Code, abra una carpeta o un área de trabajo donde quiera crear el proyecto.
Presione F1 para abrir la paleta de comandos, busque y ejecute el comando
Azure Developer CLI (azd): Initialize App (init)y elija Seleccionar una plantilla.Es posible que haya un ligero retraso al
azdinicializar la carpeta o el área de trabajo actuales.
Cuando se le solicite, elija Seleccionar una plantilla y busque y seleccione
Azure Functions C# Event Grid Blob Trigger using Azure Developer CLI.Cuando se le solicite en el terminal, escriba un nombre de entorno único, como
blobevents-dotnet.Este comando extrae los archivos de proyecto del repositorio de plantillas e inicializa el proyecto en la carpeta o área de trabajo actual.
Cuando se le solicite, elija Seleccionar una plantilla y busque y seleccione
Azure Functions Python Event Grid Blob Trigger using Azure Developer CLI.Cuando se le solicite en el terminal, escriba un nombre de entorno único, como
blobevents-python.Este comando extrae los archivos de proyecto del repositorio de plantillas e inicializa el proyecto en la carpeta o área de trabajo actual.
Cuando se le solicite, elija Seleccionar una plantilla y busque y seleccione
Azure Functions TypeScript Event Grid Blob Trigger using Azure Developer CLI.Cuando se le solicite, escriba un nombre de entorno único, como
blobevents-typescript.Este comando extrae los archivos de proyecto del repositorio de plantillas e inicializa el proyecto en la carpeta o área de trabajo actual.
Cuando se le solicite, elija Seleccionar una plantilla y busque y seleccione
Azure Functions Java Event Grid Blob Trigger using Azure Developer CLI.Cuando se le solicite, escriba un nombre de entorno único, como
blobevents-java.Este comando extrae los archivos de proyecto del repositorio de plantillas e inicializa el proyecto en la carpeta o área de trabajo actual.
Cuando se le solicite, elija Seleccionar una plantilla y busque y seleccione
Azure Functions PowerShell Event Grid Blob Trigger using Azure Developer CLI.Cuando se le solicite, escriba un nombre de entorno único, como
blobevents-powershell.Este comando extrae los archivos de proyecto del repositorio de plantillas e inicializa el proyecto en la carpeta o área de trabajo actual.
En azd, el entorno mantiene un contexto de implementación único para la aplicación y puede definir más de uno. También forma parte del nombre del grupo de recursos que crea en Azure.
Agregar el archivo local.settings.json
Functions necesita el archivo local.settings.json para configurar el host cuando se ejecuta localmente.
Ejecute este comando para ir a la carpeta de la
srcaplicación:cd src
Cree un archivo denominado local.settings.json en la
srccarpeta que contiene estos datos JSON:{ "IsEncrypted": false, "Values": { "AzureWebJobsStorage": "UseDevelopmentStorage=true", "FUNCTIONS_WORKER_RUNTIME": "dotnet-isolated", "PDFProcessorSTORAGE": "UseDevelopmentStorage=true" } }
Cree un archivo denominado local.settings.json en la
srccarpeta que contiene estos datos JSON:{ "IsEncrypted": false, "Values": { "AzureWebJobsStorage": "UseDevelopmentStorage=true", "FUNCTIONS_WORKER_RUNTIME": "java", "PDFProcessorSTORAGE": "UseDevelopmentStorage=true" } }
Cree un archivo denominado local.settings.json en la
srccarpeta que contiene estos datos JSON:{ "IsEncrypted": false, "Values": { "AzureWebJobsStorage": "UseDevelopmentStorage=true", "FUNCTIONS_WORKER_RUNTIME": "node", "PDFProcessorSTORAGE": "UseDevelopmentStorage=true" } }
Cree un archivo denominado local.settings.json en la
srccarpeta que contiene estos datos JSON:{ "IsEncrypted": false, "Values": { "AzureWebJobsStorage": "UseDevelopmentStorage=true", "FUNCTIONS_WORKER_RUNTIME": "powershell", "FUNCTIONS_WORKER_RUNTIME_VERSION": "7.2", "PDFProcessorSTORAGE": "UseDevelopmentStorage=true" } }
Cree un archivo denominado local.settings.json en la
srccarpeta que contiene estos datos JSON:{ "IsEncrypted": false, "Values": { "AzureWebJobsStorage": "UseDevelopmentStorage=true", "FUNCTIONS_WORKER_RUNTIME": "python", "PDFProcessorSTORAGE": "UseDevelopmentStorage=true" } }
Creación y activación de un entorno virtual
En la src carpeta , ejecute estos comandos para crear y activar un entorno virtual denominado .venv:
python3 -m venv .venv
source .venv/bin/activate
Si Python no instala el paquete venv en la distribución de Linux, ejecute el siguiente comando:
sudo apt-get install python3-venv
Configuración del emulador de almacenamiento local
Use el emulador de Azurite para ejecutar el proyecto de código localmente antes de crear y usar recursos de Azure.
Si aún no lo ha hecho, instale Azurite.
Presione F1. En la paleta de comandos, busque y ejecute el comando
Azurite: Startpara iniciar el emulador de almacenamiento local.En el área de Azure, expanda Área de trabajo, >Cuentas de almacenamiento conectadas, >y El emulador local, haga clic con el botón derecho (Ctrl-clic en Mac) en Contenedores de blobs, seleccione Crear contenedor de blobs... y cree estos dos contenedores de almacenamiento de blobs en el emulador local:
-
unprocessed-pdf: contenedor que el desencadenador supervisa para eventos de almacenamiento. -
processed-pdf: contenedor donde la función envía blobs procesados como salida.
-
Expanda Contenedores de blobs, haga clic con el botón derecho (Ctrl-clic en Mac) en unprocessed-pdf, seleccione Cargar archivos..., presione Intro para aceptar el directorio raíz y cargue los archivos PDF desde la
datacarpeta del proyecto.
Cuando se ejecuta localmente, puede usar REST para desencadenar la función simulando la función que recibe un mensaje de una suscripción de eventos.
Ejecución local de la función
Visual Studio Code se integra con Azure Functions Core Tools para permitirle ejecutar este proyecto en el equipo de desarrollo local mediante el emulador de Azurite. La PDFProcessorSTORAGE variable de entorno define la conexión de la cuenta de almacenamiento, que también se establece en "UseDevelopmentStorage=true" en el archivo local.settings.json cuando se ejecuta el programa localmente.
Ejecute este comando desde la carpeta del
srcproyecto en una consola o terminal:func startmvn clean package mvn azure-functions:runnpm install func startnpm install npm startCuando se inicia el host de Functions, escribe el nombre del desencadenador y el tipo de desencadenador en la salida del terminal. En Functions, la carpeta raíz del proyecto contiene el archivo host.json.
Con Core Tools todavía ejecutándose en Terminal, abra el
test.httparchivo del proyecto y seleccione Enviar solicitud para desencadenar laProcessBlobUploadfunción enviando un evento blob de prueba al webhook del evento BLOB.Este paso simula la recepción de un evento de una suscripción de eventos cuando se ejecuta localmente y debería ver la información de archivo procesada y de solicitud escrita en los registros. Si no usa el Cliente REST, debe usar otra herramienta de REST segura para llamar al punto de conexión con la carga en
test.http.En el área de trabajo del contenedor de blobs, expanda processed-pdf y compruebe que la función procesó el archivo PDF y lo copió con el prefijo
processed-.Cuando haya terminado, presione Ctrl+C en la ventana del terminal para detener el proceso de host de
func.exe.
Revisión del código (opcional)
Puede revisar el código que define el desencadenador de blobs de Event Grid en el archivo de proyecto de ProcessBlobUpload.cs. La función muestra cómo:
- Uso
BlobTriggerconSource = BlobTriggerSource.EventGridpara el procesamiento casi en tiempo real - Enlazar a
BlobClientpara el blob de origen yBlobContainerClientpara el destino - Procesar el contenido del blob y copiarlo en otro contenedor mediante secuencias
Puede revisar el código que define el desencadenador de blobs de Event Grid en el archivo de proyecto de function_app.py. La función muestra cómo:
- Uso
@app.blob_triggerconsource="EventGrid"para el procesamiento casi en tiempo real - Acceso al contenido del blob mediante el
InputStreamparámetro - Copia de archivos procesados en el contenedor de destino mediante el SDK de Azure Storage
Puede revisar el código que define el desencadenador de blobs de Event Grid en el archivo de proyecto de processBlobUpload.ts. La función muestra cómo:
- Uso
app.storageBlob()consource: 'EventGrid'para el procesamiento casi en tiempo real - Acceso al contenido del blob mediante el SDK de Azure Storage de Node.js
- Procesar y copiar archivos en el contenedor de destino de forma asincrónica
Puede revisar el código que define el desencadenador de blobs de Event Grid en el archivo de proyecto de ProcessBlobUpload.java. La función muestra cómo:
- Uso
@BlobTriggerconsource = "EventGrid"para el procesamiento casi en tiempo real - Acceso al contenido del blob mediante
BlobInputStreamel parámetro - Copia de archivos procesados en el contenedor de destino mediante el SDK de Azure Storage para Java
Puede revisar el código que define el desencadenador de blobs de Event Grid en el archivo de proyecto ProcessBlobUpload/run.ps1 y el function.jsoncorrespondiente. La función muestra cómo:
- Configuración del desencadenador de blobs con
"source": "EventGrid"en function.json para el procesamiento casi en tiempo real - Acceder al contenido de los blobs mediante cmdlets de Azure Storage de PowerShell
- Procesamiento y copia de archivos en el contenedor de destino mediante módulos de Azure PowerShell
Después de revisar y comprobar el código de función localmente, es el momento de publicar el proyecto en Azure.
Creación e implementación de recursos de Azure
Use el azd up comando para crear la aplicación de funciones en un plan de consumo flexible junto con otros recursos de Azure necesarios, incluida la suscripción de eventos. Una vez lista la infraestructura, azd también implementa el código del proyecto en la nueva aplicación de funciones de Azure.
En Visual Studio Code, presione F1 para abrir la paleta de comandos. Busque y ejecute el comando
Azure Developer CLI (azd): Sign In with Azure Developer CLIy, a continuación, inicie sesión con su cuenta de Azure.En la raíz del proyecto, presione F1 para abrir la paleta de comandos. Busque y ejecute el comando
Azure Developer CLI (azd): Provision and Deploy (up)para crear los recursos de Azure necesarios e implementar el código.Cuando se le solicite en la ventana Terminal, proporcione estos parámetros de implementación necesarios:
Pronto Description Selección de una suscripción de Azure que se va a usar Elija la suscripción en la que desea crear los recursos. Nombre del entorno Un entorno que se usa para mantener un contexto de implementación único para la aplicación. Ubicación de Azure Región de Azure en la que se va a crear el grupo de recursos que contiene los nuevos recursos de Azure. Solo se muestran las regiones que admiten actualmente el Plan de consumo flexible. El
azd upcomando usa las respuestas a estos mensajes con los archivos de configuración de Bicep para crear y configurar estos recursos de Azure necesarios siguiendo los procedimientos recomendados más recientes:- Plan de consumo flexible y aplicación de funciones
- Cuenta de Azure Storage con contenedores de blobs
- Application Insights (recomendado)
- Directivas y roles de acceso para la cuenta
- Suscripción a la red de Event Grid de blob
- Conexiones de servicio a servicio mediante identidades administradas (en lugar de cadenas de conexión almacenadas)
Una vez completado correctamente el comando, la aplicación se ejecuta en Azure con una suscripción de eventos configurada para desencadenar la función cuando se agregan blobs al
unprocessed-pdfcontenedor.Tome nota de
AZURE_STORAGE_ACCOUNT_NAMEyAZURE_FUNCTION_APP_NAMEen la salida. Estos nombres son únicos para la cuenta de almacenamiento y la aplicación de funciones en Azure, respectivamente.
Comprobación de la función implementada
En Visual Studio Code, presione F1. En la paleta de comandos, busque y ejecute el comando
Azure Storage: Upload Files.... Acepte el directorio raíz y, como antes, cargue uno o varios archivos PDF desde la carpeta deldataproyecto.Cuando se le solicite, seleccione el nombre de la nueva cuenta de almacenamiento (en
AZURE_STORAGE_ACCOUNT_NAME). Seleccione Blob Containers>unprocessed-pdf.Presione F1. En la paleta de comandos, busque y ejecute el comando
Azure Storage: Open in Explorer. Seleccione la misma cuenta de almacenamiento >Contenedores de Blob>processed-pdf y luego Abrir en una nueva ventana.En el Explorador, verifique que los archivos PDF que usted cargó fueron procesados por su función. La salida se escribe en el contenedor
processed-pdfcon el prefijoprocessed-.
El desencadenador de blobs de Event Grid procesa los archivos en cuestión de segundos de carga. Esta velocidad muestra las funcionalidades casi en tiempo real de este enfoque en comparación con los desencadenadores de blobs basados en sondeo tradicionales.
Reimplementación del código
Ejecute el azd up comando tantas veces como sea necesario aprovisionar los recursos de Azure e implementar actualizaciones de código en la aplicación de funciones.
Nota:
El paquete de implementación más reciente siempre sobrescribe los archivos de código implementados.
Las respuestas iniciales a azd mensajes y las variables de entorno generadas por azd se almacenan localmente en el entorno con nombre. Use el comando azd env get-values para revisar todas las variables del entorno que se usaron al crear recursos de Azure.
Limpieza de recursos
Cuando haya terminado de trabajar con la aplicación de funciones y los recursos relacionados, use este comando para eliminar la aplicación de funciones y sus recursos relacionados de Azure. Esta acción le ayuda a evitar incurrir en costos adicionales:
azd down --no-prompt
Nota:
La --no-prompt opción indica azd que elimine el grupo de recursos sin una confirmación de usted.
Este comando no afecta al proyecto de código local.
Contenido relacionado
- Escenarios de Azure Functions
- Plan de consumo flexible
- Tutorial: Desencadenamiento de Azure Functions en contenedores de blobs mediante una suscripción de eventos
- CLI para desarrolladores de Azure (azd)
- azd reference
- Referencia de Azure Functions Core Tools
- Codificación y comprobación de Azure Functions en un entorno local