Compartir a través de


Inicio rápido: Creación e implementación de código de función en Azure mediante Visual Studio Code

Use Visual Studio Code para crear una función que responda a las solicitudes HTTP de una plantilla. Use GitHub Copilot para mejorar el código de función generado, comprobar las actualizaciones de código localmente y, a continuación, implementarlo en el plan de hospedaje de consumo flexible sin servidor en Azure Functions.

Use Visual Studio Code para crear una función de controlador personalizada que responda a las solicitudes HTTP. Después de comprobar el código localmente, se implementa en el plan de hospedaje de consumo flexible sin servidor en Azure Functions.

Los controladores personalizados se pueden usar para crear funciones en cualquier lenguaje o entorno de ejecución mediante la ejecución de un proceso del servidor HTTP. En este artículo se admite Go y Rust.

Completar este inicio rápido acarrea un coste pequeño, de unos pocos centavos de dólar o menos, en su cuenta de Azure.

Asegúrese de seleccionar el lenguaje de desarrollo preferido en la parte superior del artículo.

Prerrequisitos

  • Node.js 18.x o superior. Use el comando node --version para comprobar la versión.
  • Go, se recomienda la última versión. Use el comando go version para comprobar la versión.

Instalar o actualizar Core Tools

La extensión de Azure Functions para Visual Studio Code se integra con Azure Functions Core Tools para que pueda ejecutar y depurar las funciones localmente en Visual Studio Code mediante el entorno de ejecución de Azure Functions. Antes de empezar, es una buena idea instalar Core Tools localmente o actualizar una instalación existente para usar la versión más reciente.

En Visual Studio Code, seleccione F1 para abrir la paleta de comandos y, a continuación, busque y ejecute el comando Azure Functions: Instalar o actualizar Core Tools.

Este comando intenta iniciar una instalación basada en paquetes de la versión más reciente de Core Tools o bien actualizar una instalación basada en paquetes existente. Si no tiene npm o Homebrew instalado en el equipo local, en su lugar debe instalar o actualizar manualmente Core Tools.

Creación del proyecto local

En esta sección, usará Visual Studio Code para crear un proyecto local de Azure Functions en su lenguaje preferido. Más adelante en el artículo, actualizará, ejecutará y, a continuación, publicará el código de función en Azure.

  1. En Visual Studio Code, presione F1 para abrir la paleta de comandos. Busque y ejecute el comando Azure Functions: Create New Project....

  2. Elija una ubicación de directorio para el área de trabajo del proyecto y, después, seleccione el botón Seleccionar. Debe crear una nueva carpeta o elegir una carpeta vacía en la que ubicar el área de trabajo del proyecto. No elija una carpeta de proyecto que ya forme parte de un área de trabajo.

  3. Escriba la siguiente información cuando se le indique:

    Pronto Selección
    Seleccione un lenguaje Elija C#.
    Seleccione un entorno de ejecución .NET. Elija .NET 8.0 LTS.
    Seleccione una plantilla para la primera función del proyecto Elija HTTP trigger.
    Proporcionar un nombre de función Escriba HttpExample.
    Especifique un espacio de nombres Escriba My.Functions.
    Nivel de autorización Elija Function, que requiere una clave de acceso para llamar al punto de conexión de la función. Para más información, consulte Nivel de autorización.
    Seleccione cómo desea abrir el proyecto Elija Open in current window.
    Pronto Selección
    Seleccione un lenguaje Elija Java.
    Seleccione una versión de Java Elija Java 8, Java 11, Java 17 o Java 21, la versión de Java en la que se ejecutan las funciones en Azure. Elija una versión de Java que haya comprobado localmente.
    Proporcione un id. de grupo Elija com.function.
    Proporcione un id. de artefacto Elija myFunction.
    Proporcione una versión Elija 1.0-SNAPSHOT.
    Proporcione un nombre de paquete Elija com.function.
    Proporcione un nombre de aplicación Elija myFunction-12345.
    Seleccione una plantilla para la primera función del proyecto Elija HTTP trigger.
    Seleccione la herramienta de compilación para el proyecto de Java Elija Maven.
    Seleccione cómo desea abrir el proyecto Elija Open in current window.
    Pronto Selección
    Seleccione un lenguaje Elija JavaScript.
    Selección de un modelo de programación de JavaScript Elija Model V4.
    Seleccione una plantilla para la primera función del proyecto Elija HTTP trigger.
    Proporcionar un nombre de función Escriba HttpExample.
    Nivel de autorización Elija Function, que requiere una clave de acceso para llamar al punto de conexión de la función. Para más información, consulte Nivel de autorización.
    Seleccione cómo desea abrir el proyecto Elija Open in current window.
    Pronto Selección
    Seleccione un lenguaje Elija TypeScript.
    Selección de un modelo de programación de JavaScript Elija Model V4.
    Seleccione una plantilla para la primera función del proyecto Elija HTTP trigger.
    Proporcionar un nombre de función Escriba HttpExample.
    Nivel de autorización Elija Function, ya que requiere una clave de acceso para llamar al endpoint de su función. Para más información, consulte Nivel de autorización.
    Seleccione cómo desea abrir el proyecto Elija Open in current window.
    Pronto Selección
    Seleccione un lenguaje Elija Python.
    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.
    Seleccione una plantilla para la primera función del proyecto Elija HTTP trigger.
    Nombre de la función que desea crear Escribe HttpExample.
    Nivel de autorización Elija FUNCTION, que requiere una clave de acceso para llamar al endpoint de la función. Para más información, consulte Nivel de autorización.
    Seleccione cómo desea abrir el proyecto Elija Open in current window.
    Pronto Selección
    Seleccionar un lenguaje para el proyecto de funciones Elija PowerShell.
    Seleccione una plantilla para la primera función del proyecto Elija HTTP trigger.
    Proporcionar un nombre de función Escriba HttpExample.
    Nivel de autorización Elija Function, que requiere una clave de acceso para invocar el endpoint de la función. Para más información, consulte Nivel de autorización.
    Seleccione cómo desea abrir el proyecto Elija Open in current window.
    Pronto Selección
    Seleccionar un lenguaje para el proyecto de funciones Elija Custom Handler.
    Seleccione una plantilla para la primera función del proyecto Elija HTTP trigger.
    Proporcionar un nombre de función Escriba HttpExample.
    Nivel de autorización Elija Function, que requiere una clave de acceso para llamar al punto de conexión de la función. Para más información, consulte Nivel de autorización.
    Seleccione cómo desea abrir el proyecto Elija Open in current window.

    Con esta información, Visual Studio Code genera un proyecto de código para Azure Functions con un punto de conexión de función de desencadenador HTTP. Los archivos del proyecto locales se pueden ver en Explorer. Para obtener más información sobre los archivos que se crean, consulte Archivos del proyecto generados.

  1. En el archivo local.settings.json, actualice la configuración AzureWebJobsStorage como en el ejemplo siguiente:

    "AzureWebJobsStorage": "UseDevelopmentStorage=true",
    

    Esta configuración indica al host de Functions local que use el emulador de almacenamiento para la conexión de almacenamiento requerida por el modelo de Python v2. Al publicar el proyecto en Azure, esta configuración usa la cuenta de almacenamiento predeterminada en su lugar. Si usa una cuenta de Azure Storage durante el desarrollo local, establezca la cadena de conexión de la cuenta de almacenamiento aquí.

Inicio del emulador

  1. En Visual Studio Code, presione F1 para abrir la paleta de comandos. En la paleta de comandos, busque y seleccione Azurite: Start.

  2. Compruebe la barra inferior y compruebe que los servicios de emulación de Azurite se están ejecutando. Si es así, ahora puede ejecutar la función localmente.

Creación y compilación de la función

El archivo function.json de la carpeta HttpExample declara una función de desencadenador HTTP. Para completar la función, agregue un controlador y compílela en un archivo ejecutable.

  1. Pulse Ctrl + N (Cmd + N en macOS) para crear un archivo nuevo. Guárdelo como handler.go en la carpeta raíz de la aplicación de funciones (en la misma carpeta que host.json).

  2. En el archivo handler.go, agregue el código siguiente y guárdelo. Este es el controlador personalizado de Go.

    package main
    
    import (
        "fmt"
        "log"
        "net/http"
        "os"
    )
    
    func helloHandler(w http.ResponseWriter, r *http.Request) {
        message := "This HTTP triggered function executed successfully. Pass a name in the query string for a personalized response.\n"
        name := r.URL.Query().Get("name")
        if name != "" {
            message = fmt.Sprintf("Hello, %s. This HTTP triggered function executed successfully.\n", name)
        }
        fmt.Fprint(w, message)
    }
    
    func main() {
        listenAddr := ":8080"
        if val, ok := os.LookupEnv("FUNCTIONS_CUSTOMHANDLER_PORT"); ok {
            listenAddr = ":" + val
        }
        http.HandleFunc("/api/HttpExample", helloHandler)
        log.Printf("About to listen on %s. Go to https://127.0.0.1%s/", listenAddr, listenAddr)
        log.Fatal(http.ListenAndServe(listenAddr, nil))
    }
    
  3. Pulse Ctrl + Mayús + ` o seleccione Nuevo terminal en el menú Terminal para abrir un nuevo terminal integrado en VS Code.

  4. Compile el controlador personalizado con el siguiente comando. Se genera un archivo ejecutable llamado handler (handler.exe en Windows) en la carpeta raíz de la aplicación de funciones.

    go build handler.go
    

Configuración de la aplicación de funciones

El host de la función se debe configurar para ejecutar el archivo binario del controlador personalizado al iniciarse.

  1. Abra el archivo host.json.

  2. En la sección customHandler.description, establezca el valor de defaultExecutablePath en handler (en Windows, establézcalo en handler.exe).

  3. En la sección customHandler, agregue una propiedad llamada enableForwardingHttpRequest y establezca su valor en true. En el caso de las funciones que solo se componen de un desencadenador HTTP, esta configuración simplifica la programación, ya que permite trabajar con una solicitud HTTP típica en lugar de la carga de la solicitud del controlador personalizado.

  4. Confirme que la sección customHandler es similar a la de este ejemplo. Guarde el archivo.

    "customHandler": {
      "description": {
        "defaultExecutablePath": "handler",
        "workingDirectory": "",
        "arguments": []
      },
      "enableForwardingHttpRequest": true
    }
    

La aplicación de funciones está configurada para iniciar el archivo ejecutable del controlador personalizado.

Ejecución local de la función

Visual Studio Code se integra con Azure Functions Core Tools para que pueda ejecutar este proyecto en un equipo de desarrollo local antes de publicarlo en Azure.

  1. Para iniciar la función localmente, presione F5 o el icono Ejecutar y depurar en la barra de actividad del lado izquierdo. En el panel Terminal se mostrará la salida de Core Tools. La aplicación se inicia en el panel Terminal. Puede ver el punto de conexión de la dirección URL de la función desencadenada por HTTP que se ejecuta localmente.

    Recorte de pantalla de la salida de la función local de VS Code.

    Si tiene problemas para ejecutarlo en Windows, asegúrese de que el terminal predeterminado de Visual Studio Code no esté establecido en WSL Bash.

  2. Mientras Core Tools todavía se ejecuta en el Terminal, elija el icono de Azure en la barra de actividades. En el Área de trabajo, expanda el desplegable Proyecto local>Funciones. Haga clic con el botón derecho (Windows) o Ctrl - clic (macOS) en la nueva función y seleccione Ejecutar función ahora....

    Ejecutar la función ahora desde Visual Studio Code

  3. En Enter request body (Especificar el cuerpo de la solicitud) verá el valor del cuerpo del mensaje de solicitud de { "name": "Azure" }. Presione Entrar para enviar este mensaje de solicitud a la función.

  4. Cuando la función se ejecuta localmente y devuelve una respuesta, se genera una notificación en Visual Studio Code. La información sobre la ejecución de la función se muestra en el panel Terminal.

  5. Con el panel Terminal enfocado, presione Ctrl + C para detener Core Tools y desconectar el depurador.

Después de comprobar que la función se ejecuta correctamente en el equipo local, puede usar de manera opcional herramientas de IA, como GitHub Copilot en Visual Studio Code, para actualizar el código de función generado por plantillas.

Uso de IA para normalizar y validar los datos

En este ejemplo se solicita que Copilot Chat actualice el código de función existente para recuperar parámetros de la cadena de consulta o el cuerpo JSON. Aplica conversiones de formato o tipo y devuelve los parámetros como JSON en la respuesta:

Modify the function to accept name, email, and age from the JSON body of the
request. If any of these parameters are missing from the query string, read
them from the JSON body. Return all three parameters in the JSON response, 
applying these rules:
Title-case the name
Lowercase the email
Convert age to an integer if possible, otherwise return "not provided"
Use sensible defaults if any parameter is missing
Make sure that any added packages are compatible with the version of the packages already in the project
Modify the function to accept name, email, and age from the JSON body of the
request. If any of these parameters are missing from the query string, read
them from the JSON body. Return all three parameters in the JSON response, 
applying these rules:
Title-case the name
Lowercase the email
Convert age to an integer if possible, otherwise return "not provided"
Use sensible defaults if any parameter is missing
Modify the function to accept name, email, and age from the JSON body of the
request. If any of these parameters are missing from the query string, read
them from the JSON body. Return all three parameters in the JSON response, 
applying these rules:
Title-case the name
Lowercase the email
Convert age to an integer if possible, otherwise return "not provided"
Use sensible defaults if any parameter is missing
Update the FunctionTest.java file to test the new logic. 

Puede personalizar la solicitud para agregar detalles según sea necesario. A continuación, vuelva a ejecutar la aplicación localmente y compruebe que funciona según lo previsto después de que cambie el código. Esta vez, use un cuerpo de mensaje como:

{ "name": "devon torres", "email": "torres.devon@contoso.com", "age": "34" }

Sugerencia

GitHub Copilot se basa en la inteligencia artificial, por lo que son posibles sorpresas y errores. Si se producen errores durante la ejecución, pegue el mensaje de error en la ventana de chat, seleccione Modo de agente y pida a Copilot que le ayude a resolver el error. Para obtener más información, consulte Preguntas más frecuentes sobre Copilot.

Cuando se ejecuta en modo agente , los resultados de esta personalización dependen de las herramientas específicas disponibles para el agente.

Cuando esté satisfecho con la aplicación, use Visual Studio Code para publicar el proyecto directamente en Azure.

Después de comprobar que la función se ejecuta correctamente en el equipo local, use Visual Studio Code para publicar el proyecto directamente en Azure.

Inicio de sesión en Azure

Para poder crear recursos de Azure o publicar la aplicación, debe iniciar sesión en Azure.

  1. Si aún no ha iniciado sesión, en la barra de actividad, seleccione el icono de Azure. A continuación, en Recursos, seleccione Iniciar sesión en Azure.

    Captura de pantalla de la ventana de inicio de sesión en Azure en Visual Studio Code.

    Si ya ha iniciado sesión y puede ver las suscripciones existentes, vaya a la siguiente sección. Si aún no tiene una cuenta de Azure, seleccione Crear una cuenta de Azure. Los alumnos pueden seleccionar Crear una cuenta de Azure for Students.

  2. Cuando se le solicite en el explorador, seleccione su cuenta de Azure e inicie sesión con las credenciales de la cuenta de Azure. Si opta por crear una cuenta, podrá iniciar sesión una vez que haya completado el proceso de creación.

  3. Después de iniciar sesión correctamente, puede cerrar la nueva ventana del explorador. Las suscripciones que pertenecen a su cuenta de Azure se muestran en la barra lateral.

Cree la aplicación de funciones en Azure

En esta sección, creará una aplicación de funciones en el plan de Consumo flexible junto con los recursos relacionados de la suscripción de Azure. Muchas de las decisiones de creación de recursos se toman en función de los comportamientos predeterminados. Para obtener más control sobre los recursos creados, en su lugar debe crear la aplicación de funciones con opciones avanzadas.

  1. En Visual Studio Code, seleccione F1 para abrir la paleta de comandos. En el símbolo del sistema (>), escriba y seleccione Azure Functions: Crear aplicación de funciones en Azure.

  2. Escriba la siguiente información cuando se le indique:

    Pronto Acción
    Selección de la suscripción Seleccione la suscripción de Azure que se va a usar. El símbolo del sistema no aparece cuando solo tiene una suscripción visible en Recursos.
    Escriba un nuevo nombre de aplicación de funciones. Escriba un nombre único global que sea válido en una ruta del URL. El nombre que escriba se valida para asegurarse de que es único en Azure Functions.
    Seleccionar una ubicación para los nuevos recursos Seleccionar una región de Azure. Para mejorar el rendimiento, seleccione una región cerca de usted. Solo se muestran las regiones admitidas por los planes de consumo flexible.
    Seleccione una pila en tiempo de ejecución Seleccione la versión de idioma que se ejecuta actualmente localmente.
    Selección del tipo de autenticación de recursos Seleccione Identidad administrada, que es la opción más segura para conectarse a la cuenta de almacenamiento de host predeterminada.

    En el panel Azure: Registro de actividad, la extensión de Azure muestra el estado de los recursos individuales a medida que se crean en Azure.

    Captura de pantalla que muestra el registro de creación de recursos de Azure.

  3. Cuando se crea la aplicación de funciones, se crean los siguientes recursos relacionados en la suscripción de Azure. Los recursos se denominan en función del nombre especificado para la aplicación de funciones.

    • Un grupo de recursos, que es un contenedor lógico de recursos relacionados.
    • Una aplicación de funciones, que proporciona el entorno para ejecutar el código de función. Una aplicación de funciones permite agrupar funciones como una unidad lógica para facilitar la administración, la implementación y el uso compartido de recursos en el mismo plan de hospedaje.
    • Un plan de Azure App Service, que define el host subyacente para la aplicación de funciones.
    • Una cuenta de Azure Storage estándar que usa el host de Functions para mantener el estado y otra información sobre tu aplicación de funciones.
    • Una instancia de Application Insights conectada a la aplicación de funciones y que realiza un seguimiento del uso de las funciones en la aplicación.
    • Una identidad administrada asignada por el usuario que se agrega al rol Colaborador de datos de Storage Blob en la nueva cuenta de almacenamiento de host predeterminada.

    Una vez que se haya creado la aplicación de función se mostrará una notificación y se aplicará el paquete de implementación.

    Sugerencia

    De forma predeterminada, los recursos de Azure necesarios para la aplicación de funciones se crean según el nombre que escriba para la aplicación de funciones. De manera predeterminada, los recursos se crean con la aplicación de funciones en el mismo grupo de recursos nuevo. Si desea personalizar los nombres de los recursos asociados o reutilizar los recursos existentes, publique el proyecto con opciones de creación avanzadas.

Compilación del controlador personalizado para Azure

En esta sección, compilará el proyecto para su implementación en Azure en una aplicación de funciones que ejecuta Linux. En la mayoría de los casos, debe volver a compilar el archivo binario y ajustar la configuración para que coincida con la plataforma de destino antes de publicarla en Azure.

  • En el terminal integrado, compile el controlador en Linux/x64.

    GOOS=linux GOARCH=amd64 go build handler.go
    

Se crea un archivo binario llamado handler en la carpeta raíz de la aplicación de funciones.

Implementar el proyecto en Azure

Importante

Los procesos de implementación en aplicaciones de funciones existentes siempre sobrescriben el contenido de esas aplicaciones en Azure.

  1. En la paleta de comandos, escriba y seleccione Azure Functions: implementar la aplicación de funciones.

  2. Seleccione la aplicación de funciones que acaba de crear. Cuando se le solicite sobrescribir las implementaciones anteriores, seleccione Implementar para implementar el código de función en el nuevo recurso de aplicación de funciones.

  3. Cuando se complete la implementación, seleccione Ver la salida para ver los resultados de creación e implementación, incluidos los recursos de Azure que creó. Si se pierde la notificación, seleccione el icono de campana en la esquina inferior derecha para verlo de nuevo.

    Recorte de pantalla de la ventana Ver salida.

Ejecución de la función en Azure

  1. Presione F1 para mostrar la paleta de comandos y luego busque y ejecute el comando Azure Functions:Execute Function Now.... Si se le solicita, seleccione la suscripción.

  2. Seleccione el nuevo recurso de la aplicación de funciones y HttpExample como función.

  3. En Escriba el cuerpo de la solicitud escriba { "name": "Contoso", "email": "me@contoso.com", "age": "34" }, y presione Entrar para enviar este mensaje de solicitud a la función.

  4. Cuando la función se ejecuta en Azure, la respuesta se muestra en el área de notificación. Expanda la notificación para revisar la respuesta completa.

Solución de problemas

Use la tabla siguiente para resolver los problemas más comunes detectados al usar este artículo.

Problema Solución
¿No puede crear un proyecto de función local? Asegúrese de tener instalada la extensión de Azure Functions.
¿No puede ejecutar la función localmente? Asegúrese de que tiene instalada la versión más reciente de Azure Functions Core Tools.
En la ejecución en Windows, asegúrese de que el shell del terminal predeterminado de Visual Studio Code no se haya establecido en WSL Bash.
¿No puede implementar la función en Azure? Revise la salida para obtener información sobre el error. El icono de campana que aparece en la esquina inferior derecha también permite ver la salida. ¿Ha realizado la publicación en una aplicación de funciones existente? Esa acción sobrescribe el contenido de la aplicación en Azure.
¿No se pudo ejecutar la aplicación de funciones basada en la nube? Recuerde usar la cadena de consulta para enviar parámetros o usar el cuerpo de la solicitud para controladores personalizados.

Limpieza de recursos

Si va al paso siguiente y agrega un enlace de cola de Azure Storage a una función, tendrá que conservar todos los recursos intactos para basarse en lo que ya ha hecho.

De lo contrario, puede usar los pasos siguientes para eliminar la aplicación de funciones y sus recursos relacionados para evitar incurrir en costos adicionales.

  1. En Visual Studio Code, seleccione el icono de Azure para abrir el explorador de Azure.
  2. En la sección Grupos de recursos, busque el grupo de recursos.
  3. Haga clic con el botón derecho en el grupo de recursos y seleccione Eliminar.

Para más información sobre los costos de Functions, consulte Estimación de los costos según el plan de consumo.

Pasos siguientes

Ha usado Visual Studio Code para crear una aplicación de funciones con una función simple desencadenada por HTTP. En los artículos siguientes, ampliará esa función mediante la conexión a Azure Cosmos DB o Azure Storage. Para más información sobre cómo conectarse a otros servicios de Azure, consulte Incorporación de enlaces a una función existente de Azure Functions. Si desea más información sobre la seguridad, consulte Protección de Azure Functions.