Inicio rápido: Creación de una función de Go o Rust en Azure con Visual Studio Code

En este artículo se usa Visual Studio Code para crear una función de controlador personalizado que responda a solicitudes HTTP. Después de probar el código localmente, se implementa en el entorno sin servidor de 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 admiten Go y Rust.

Este inicio rápido supone un pequeño costo en su cuenta de Azure.

Configurar su entorno

Antes de empezar, asegúrese de que cumple los siguientes requisitos:

Creación del proyecto local

En esta sección se usa Visual Studio Code para crear un proyecto local de controladores personalizados de Azure Functions. Más adelante en este artículo, publicará el código de función en Azure.

  1. Seleccione el icono de Azure en la barra de actividades y después en el área Azure: Functions, seleccione el icono Crear un proyecto.

    Elija Crear un proyecto.

  2. Elija una ubicación de directorio para el área de trabajo del proyecto y elija Seleccionar.

    Nota

    Estos pasos se han diseñado para completarse fuera de un área de trabajo. Por tanto, no seleccione una carpeta de proyecto que forme parte de un área de trabajo.

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

    • Seleccione un lenguaje para el proyecto de funciones: Elija Custom.

    • Seleccione una plantilla para la primera función del proyecto: Elija HTTP trigger.

    • Especifique un nombre de función: Escriba HttpExample.

    • Nivel de autorización: Elija Anonymous, que permite que cualquier llame al punto de conexión de la función. Para obtener información sobre el nivel de autorización, consulte Claves de autorización.

    • Seleccione cómo desea que se abra el proyecto: Elija Add to workspace.

  4. Con esta información, Visual Studio Code genera un proyecto de Azure Functions con una 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.

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
    

    VS Code: compilación de un controlador personalizado de 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

Puede ejecutar este proyecto en el equipo de desarrollo local antes de publicar en Azure.

  1. En el terminal integrado, inicie la aplicación de funciones mediante Azure Functions Core Tools.

    func start
    
  2. Con Core Tools en ejecución, vaya a la siguiente dirección URL para ejecutar una solicitud GET, que incluye la cadena de consulta ?name=Functions.

    http://localhost:7071/api/HttpExample?name=Functions

  3. Se devuelve una respuesta, que tiene un aspecto similar al siguiente en un explorador:

    Explorador: salida de ejemplo de localhost

  4. La información sobre la solicitud se muestra en el panel Terminal.

    Inicio del host de la tarea: salida del terminal de VS Code

  5. Pulse Ctrl + C para detener Core Tools.

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

Inicio de sesión en Azure

Para poder publicar la aplicación, debe iniciar sesión en Azure.

  1. Si aún no ha iniciado sesión, seleccione el icono de Azure en la barra de actividades y después en el área Azure: Functions, elija Iniciar sesión en Azure… . Si aún no dispone de una cuenta, puede crear una cuenta gratuita de Azure . Los alumnos pueden crear una cuenta de Azure gratuita para estudiantes .

    Inicio de sesión en Azure en VS Code

    Si ya ha iniciado sesión, vaya a la sección siguiente.

  2. Cuando se le solicite en el explorador, elija su cuenta de Azure e inicie sesión con las credenciales de la misma.

  3. Cuando haya iniciado sesión correctamente, puede cerrar la nueva ventana del explorador. Las suscripciones que pertenecen a su cuenta de Azure se muestran a la barra lateral.

Compilación del controlador personalizado para Azure

En esta sección, publicará el proyecto 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.

  1. En el terminal integrado, compile el controlador en Linux/x64. Se crea un archivo binario llamado handler en la carpeta raíz de la aplicación de funciones.

    GOOS=linux GOARCH=amd64 go build handler.go
    

Publicar el proyecto en Azure

En esta sección, va a crear una aplicación de funciones y los recursos relacionados en su suscripción de Azure y, después, va a implementar el código.

Importante

La publicación en una aplicación de función existente sobrescribe el contenido de esa aplicación en Azure.

  1. Seleccione el icono de Azure en la barra de actividades y después en el área Azure: Functions, seleccione el botón de implementación en la aplicación de funciones.

    Publicación del proyecto en Azure

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

    • Seleccione la carpeta: elija una carpeta en el área de trabajo o busque una que contenga la aplicación de funciones. No verá esta opción si ya tiene una aplicación de funciones válida abierta.

    • Seleccione la suscripción: elija la suscripción que desee usar. No se mostrará esta opción si solo tiene una suscripción.

    • Seleccione la aplicación de funciones en Azure: Elija + Create new Function App (advanced).

      Importante

      La opción advanced permite elegir el sistema operativo específico en el que se ejecuta la aplicación de funciones en Azure, que en este caso es Linux.

      VS Code: selección de la creación avanzada de una nueva aplicación de funciones

    • Escriba un nombre único global para la aplicación de funciones: Escriba un nombre que sea válido en una ruta de acceso de la dirección URL. El nombre que escriba se valida para asegurarse de que es único en Azure Functions.

    • Seleccione una pila del entorno en tiempo de ejecución: Elija Custom Handler.

    • Seleccione un sistema operativo: Elija Linux.

    • Seleccione un plan de hospedaje: Elija Consumption.

    • Seleccione un grupo de recursos: Elija + Create new resource group. Escriba un nombre para el grupo de recursos. El nombre debe ser único en la suscripción de Azure. Puede usar el nombre sugerido en la solicitud.

    • Seleccione una cuenta de almacenamiento: Elija + Create new storage account. Este nombre debe ser único globalmente en Azure. Puede usar el nombre sugerido en la solicitud.

    • Seleccione un recurso de Application Insights: Elija + Create Application Insights resource. Este nombre debe ser único globalmente en Azure. Puede usar el nombre sugerido en la solicitud.

    • Seleccione una ubicación para los nuevos recursos: Para mejorar el rendimiento, elija una región cerca de usted. La extensión muestra el estado de los recursos individuales a medida que se crean en Azure en el área de notificación.

    Notificación de creación de recursos de Azure

  3. Cuando se complete, se crearán los siguientes recursos de Azure en la suscripción:

    • Un grupo de recursos, que es un contenedor lógico de recursos relacionados.
    • Una cuenta de Azure Storage estándar, que mantiene información de estado y de otro tipo sobre los proyectos.
    • Un plan de consumo, que define el host subyacente para su aplicación de funciones sin servidor.
    • 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.
    • Una instancia de Application Insights conectada a la aplicación de funciones, que realiza un seguimiento del uso de la función sin servidor.

    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.

  4. Seleccione View Output (Ver salida) en esta notificación para ver la creación y los resultados de la implementación, incluidos los recursos de Azure que ha creado. Si se pierde la notificación, seleccione el icono de campana en la esquina inferior derecha para verlo de nuevo.

    Creación de la notificación completa

Ejecución de la función en Azure

  1. Vuelva al área Azure: Functions en la barra lateral y expanda su suscripción, la nueva aplicación de funciones y Functions. Haga clic con el botón derecho (Windows) o Ctrl + clic en (macOS) en la función HttpExample y elija Execute Function Now... (Ejecutar la función ahora...).

    Ejecutar la función ahora en Azure desde Visual Studio Code

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

  3. Cuando la función se ejecuta en Azure y devuelve una respuesta, se genera una notificación en Visual Studio Code.

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, presione F1 para abrir la paleta de comandos. En la paleta de comandos, busque y seleccione Azure Functions: Open in portal.

  2. Elija una aplicación de funciones y presione Entrar. La página de la aplicación de funciones se abre en Azure Portal.

  3. En la pestaña Información general, seleccione el vínculo con nombre junto a Grupo de recursos.

    Seleccione el grupo de recursos que se va a eliminar de la página de la aplicación de funciones.

  4. En la página Grupo de recursos, revise la lista de recursos incluidos y compruebe que son los que desea eliminar.

  5. Seleccione Eliminar grupo de recursos y siga las instrucciones.

    El proceso de eliminación tardará un par de minutos. Cuando termine, aparece una notificación durante unos segundos. También puede seleccionar el icono de campana en la parte superior de la página para ver la notificación.

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

Pasos siguientes