Ejercicio: Examen de los tipos de enlace de entrada y salida

Completado

En este ejercicio, crearemos una función que se ejecuta al recibir una solicitud HTTP y que responde a cada solicitud con la devolución de un mensaje.

Consulte la siguiente ilustración general de lo que se va a crear.

Screenshot of Code and Test pane showing default code for HTTP trigger function template.

El parámetro req es el enlace de desencadenador y el parámetro res es el enlace de salida. Puede ser útil pensar en esos parámetros como abreviaturas de "solicitud" y "respuesta".

Screenshot of Code and Test pane showing default code for HTTP trigger function template.

El parámetro Request es el enlace de desencadenador y el parámetro Response es el enlace de salida.

Creación de una aplicación de función

Creemos una aplicación de funciones que podamos usar durante todo este módulo. Una aplicación de función permite agrupar funciones como una unidad lógica para facilitar la administración, la implementación y el uso compartido de recursos.

  1. Inicie sesión en Azure Portal con la cuenta que ha usado para activar el espacio aislado.

  2. En el menú de recursos, o en la página Inicio, seleccione Crear un recurso. Aparecerá el panel Crear un recurso.

  3. En el menú Crear un recurso, seleccione Proceso y, en la lista de resultados, seleccione Aplicación de funciones. Es posible que tenga que buscar Aplicación de funciones en la ventana Servicios de búsqueda y marketplace.

  4. Seleccione Crear. Aparece el panel Crear aplicación de funciones.

  5. En la pestaña Aspectos básicos, escriba los valores siguientes para cada opción.

    Configuración valor Descripción
    Detalles del proyecto
    Suscripción Suscripción de Concierge La suscripción de Azure que quiere usar para este ejercicio.
    Grupo de recursos En la lista desplegable, seleccione [nombre del grupo de recursos de espacio aislado]. Grupo de recursos para el espacio aislado.
    Detalles de instancia
    Nombre de la aplicación de funciones Escriba un nombre único global. Este nombre identifica la nueva aplicación de funciones. Los caracteres válidos son a-z, 0-9 y -.
    ¿Desea implementar código o imágenes de contenedor? Código Opción para publicar archivos de código o un contenedor Docker.
    Pila en tiempo de ejecución En la lista desplegable, seleccione Node.js. El código de ejemplo de este módulo está escrito en JavaScript.
    Versión Acepte el valor predeterminado. El valor predeterminado es suficiente para este ejercicio.
    Region En la lista desplegable, seleccione una ubicación. Seleccione la región más cercana.
  6. Acepte los valores predeterminados del resto de opciones. Seleccione Revisar y crear para validar la configuración y, después, seleccione Crear para aprovisionar e implementar la aplicación de funciones.

  7. La implementación puede tardar un tiempo. En los controles globales situados junto al nombre de la cuenta, seleccione el icono Notificaciones y espere el mensaje Implementación correcta.

  8. Cuando finalice la implementación de la función, seleccione Ir al recurso. Aparece el panel Información general de la aplicación de funciones.

  1. Inicie sesión en Azure Portal con la misma cuenta que ha usado para activar el espacio aislado.

  2. En el menú de recursos, o en la página Inicio, seleccione Crear un recurso. Aparecerá el panel Crear un recurso.

  3. En el menú Crear un recurso, seleccione Proceso y, a continuación, busque y seleccione Aplicación de funciones. Es posible que tenga que buscar Aplicación de funciones en la ventana Servicios de búsqueda y marketplace.

  4. Seleccione Crear. Aparece el panel Crear aplicación de funciones.

  5. En la pestaña Aspectos básicos, escriba los valores siguientes para cada opción.

    Configuración valor Descripción
    Detalles del proyecto
    Suscripción Suscripción de Concierge La suscripción de Azure que quiere usar para este ejercicio.
    Grupo de recursos En la lista desplegable, seleccione [nombre del grupo de recursos de espacio aislado]. Grupo de recursos para el espacio aislado.
    Detalles de instancia
    Nombre de la aplicación de funciones Escriba un nombre único global. Este nombre identifica la nueva aplicación de funciones. Los caracteres válidos son a-z, 0-9 y -.
    ¿Desea implementar código o imágenes de contenedor? Código Opción para publicar archivos de código o un contenedor Docker.
    Pila en tiempo de ejecución En la lista desplegable, seleccione PowerShell Core El código de ejemplo de este módulo está escrito en PowerShell.
    Versión Acepte el valor predeterminado. El valor predeterminado es suficiente para este ejercicio.
    Region En la lista desplegable, seleccione una ubicación. Seleccione la región más cercana.
  6. Acepte los valores predeterminados del resto de opciones. Seleccione Revisar y crear para validar la entrada y, después, seleccione Crear para aprovisionar e implementar la aplicación de funciones.

  7. La implementación puede tardar un tiempo. En los controles globales situados junto al nombre de la cuenta, seleccione el icono Notificaciones y espere el mensaje Implementación correcta.

  8. Cuando finalice la implementación de la función, seleccione Ir al recurso. Aparece el panel Información general de la aplicación de funciones.

Sugerencia

Si tiene problemas para encontrar la aplicación de funciones en Azure Portal, vea cómo agregar aplicaciones de funciones a la lista de favoritos en Azure Portal.

Creación de una función

Ahora que tenemos una aplicación de función, es el momento de crear una función. Cada función se activa por medio de un desencadenador. En este módulo, definimos un desencadenador HTTP mediante una plantilla predefinida.

  1. Seleccione el botón Crear en Azure Portal de la pestaña Funciones de la página Información general.

  2. Se abre el panel Crear función.

    Screenshot for the Create Function pane.

  3. En la sección Seleccionar una plantilla, elija Desencadenador de HTTP.

  4. En la sección Detalles de la plantilla, confirme los valores siguientes.

    • En el cuadro de texto Nueva función, acepte el nombre predeterminado HttpTrigger1. Azure crea automáticamente nombres únicos para las funciones que cree. Puede elegir otro nombre, pero recuerde usar nombres significativos.

    • En el cuadro de texto Nivel de autorización, acepte el valor predeterminado Función. El nivel de autorización determina qué claves deben estar presentes en la solicitud para que se ejecute. El nivel de autorización de función necesita una clave específica de la función, que podremos encontrar cuando esta se haya creado.

  5. Seleccione Crear. Cuando la función de desencadenador se haya propagado a la aplicación de funciones, aparecerá el panel Funciones de la aplicación de funciones, donde se muestra HttpTrigger1.

  6. En la barra de comandos, seleccione Obtener la dirección URL de la función. Aparece el cuadro de diálogo Obtener la dirección URL de la función.

  7. En la lista desplegable, seleccione default (function key) (valor predeterminado [clave de función]), después el icono Copiar al Portapapeles situado al final de la dirección URL y, luego, Aceptar para cerrar el cuadro de diálogo.

  8. En la barra de direcciones de una nueva pestaña del explorador, pegue la dirección URL de función que ha copiado. Presione Entrar para ejecutar la solicitud en el explorador. La respuesta puede tardar un par de minutos mientras se inicializa la aplicación de funciones. Si recibe un error de tiempo de espera, actualice para volver a enviar la solicitud.

    Cuando la función responda, debería ver en el explorador una salida similar a la del ejemplo siguiente.

    This HTTP triggered function executed successfully. Pass a name in the query string or in the request body for a personalized response.
    
  9. Agregue la cadena de consulta &name=Joe siguiente al final de la dirección URL. La dirección URL resultante debería ser similar al ejemplo siguiente:

    https://example.azurewebsites.net/api/HttpTrigger1?code=AbCdEfGhIjKlMnOpQrStUvWxYz==&name=Joe

  10. Presione Entrar para ejecutar la solicitud en el explorador. Cuando la función responda, debería ver en el explorador una salida similar a la del ejemplo siguiente.

    Hello, Joe. This HTTP triggered function executed successfully.
    

    Como puede ver hasta ahora en este ejercicio, debe definir un desencadenador al crear una función. Cada función tiene un único desencadenador. En este ejemplo, usamos un desencadenador HTTP, lo que significa que nuestra función se inicia al recibir una solicitud HTTP. La implementación predeterminada de la plantilla, que se muestra en JavaScript en la captura de pantalla siguiente, devuelve el valor del parámetro name de la cadena de consulta o del cuerpo de la solicitud. Si no se ha proporcionado ninguna cadena de consulta, la función responde con un mensaje en el que se le pide al autor de la llamada que proporcione un valor de nombre.

    Illustration of default HTTP trigger, showing HTTP request and response binding parameters.

  11. En Azure Portal, en el menú Función, seleccione Código y prueba.

    Aparece el panel Código y prueba de la función, en el que se muestra el contenido del archivo index.js. El código JavaScript predeterminado para la función debe ser similar al ejemplo siguiente.

    module.exports = async function (context, req) {
        context.log('JavaScript HTTP trigger function processed a request.');
    
        const name = (req.query.name || (req.body && req.body.name));
        const responseMessage = name
            ? "Hello, " + name + ". This HTTP triggered function executed successfully."
            : "This HTTP triggered function executed successfully. Pass a name in the query string or in the request body for a personalized response.";
    
        context.res = {
            // status: 200, /* Defaults to 200 */
            body: responseMessage
        };
    }
    
  12. Echemos un vistazo rápido al otro archivo de la función, el archivo de configuración function.json. Para acceder a este archivo, seleccione function.json en la lista desplegable de ruta del archivo situada encima del bloque de código. Los datos de configuración se muestran en el siguiente listado JSON.

    {
        "bindings": [
        {
            "authLevel": "function",
            "type": "httpTrigger",
            "direction": "in",
            "name": "req",
            "methods": [
            "get",
            "post"
            ]
        },
        {
            "type": "http",
            "direction": "out",
            "name": "res"
        }
      ]
    }
    

    Esta función tiene un enlace de desencadenador llamado req de tipo httpTrigger y un enlace de salida llamado res de tipo http.

En el código anterior de nuestra función, vimos que se ha accedido a la carga útil de la solicitud HTTP entrante a través del parámetro req. De forma similar, enviamos una respuesta HTTP mediante el establecimiento del parámetro res. Los enlaces nos liberan de una gran parte del trabajo pesado.

Ahora que tenemos una aplicación de funciones, vamos a crear una función. Cada función se activa por medio de un desencadenador. En este módulo, crearemos un desencadenador HTTP mediante una plantilla.

  1. Seleccione el botón Crear en Azure Portal de la pestaña Funciones de la página Información general.

  2. Se abre el panel Crear función.

  3. En la sección Seleccionar una plantilla, elija Desencadenador de HTTP.

  4. En la sección Detalles de la plantilla, confirme los valores siguientes.

    • En el cuadro de texto Nueva función, acepte el nombre predeterminado HttpTrigger1. Azure proporciona automáticamente un nombre único al crear una función. Puede elegir otro nombre, pero recuerde usar nombres significativos.

    • En el cuadro de texto Nivel de autorización, acepte el valor predeterminado Función. El nivel de autorización determina qué claves deben estar presentes en la solicitud para que se ejecute. Función necesita una clave específica de la función.

      Screenshot for the Add Function pane.

  5. Seleccione Crear. Aparecerá el panel HttpTrigger1 de la función.

  6. En la barra de comandos, seleccione Obtener la dirección URL de la función. Aparece el cuadro de diálogo Obtener la dirección URL de la función.

  7. Seleccione default (function key) (valor predeterminado [clave de función]) en la lista desplegable, después el icono Copiar al Portapapeles situado al final de la dirección URL y, luego, Aceptar para cerrar el cuadro de diálogo.

  8. En la barra de direcciones de una nueva pestaña del explorador, pegue la dirección URL de función que ha copiado. Presione Entrar para ejecutar la solicitud en el explorador. La respuesta puede tardar un par de minutos mientras se inicializa la aplicación de funciones. Si recibe un error de tiempo de espera, actualice para volver a enviar la solicitud.

    Cuando la función responda, debería ver en el explorador una salida similar a la del ejemplo siguiente.

    This HTTP triggered function executed successfully. Pass a name in the query string or in the request body for a personalized response.
    
  9. Agregue el valor &name=Joe de la cadena de consulta al final de la dirección URL. La dirección URL resultante debería ser similar al ejemplo siguiente:

    https://example.azurewebsites.net/api/HttpTrigger1?code=AbCdEfGhIjKlMnOpQrStUvWxYz==&name=Joe

  10. Presione Entrar para ejecutar la solicitud en el explorador. Cuando la función responda, debería ver en el explorador una salida similar a la del ejemplo siguiente.

    Hello, Joe. This HTTP triggered function executed successfully.
    

    Como puede ver hasta ahora en este ejercicio, debe definir un desencadenador al crear una función. Cada función tiene un único desencadenador. En este ejemplo, usamos un desencadenador HTTP, lo que significa que nuestra función se inicia al recibir una solicitud HTTP. La implementación predeterminada de la plantilla, que se muestra en PowerShell en la captura de pantalla siguiente, usa el cmdlet Push-OutputBinding para responder con el valor del parámetro name que formaba parte de la cadena de consulta o del cuerpo de la solicitud. Si no se proporcionó ninguna cadena, la función responde con un mensaje en el que pide al autor de la llamada que proporcione un valor de nombre.

    Code and Test pane for HTTP request showing response and respective binding parameters.

  11. En el menú de Función, seleccione Code + Test (Código y prueba). Aparece el panel Code + Test (Código y prueba) de la función, en el que se muestra el contenido del archivo run.ps1.

    El código PowerShell predeterminado para la función debe ser similar al ejemplo siguiente.

    using namespace System.Net
    
    # Input bindings are passed in via param block.
    param($Request, $TriggerMetadata)
    
    # Write to the Azure Functions log stream.
    Write-Host "PowerShell HTTP trigger function processed a request."
    
    # Interact with query parameters or the body of the request.
    $name = $Request.Query.Name
    if (-not $name) {
        $name = $Request.Body.Name
    }
    
    $body = "This HTTP triggered function executed successfully. Pass a name in the query string or in the request body for a personalized response."
    
    if ($name) {
        $body = "Hello, $name. This HTTP triggered function executed successfully."
    }
    
    # Associate values to output bindings by calling 'Push-OutputBinding'.
    Push-OutputBinding -Name Response -Value ([HttpResponseContext]@{
        StatusCode = [HttpStatusCode]::OK
        Body = $body
    })
    
  12. Echemos un vistazo rápido al otro archivo de la función, el archivo de configuración function.json. Para abrir este archivo, seleccione function.json en la lista desplegable de la ruta de archivo. Los datos de configuración se muestran en el siguiente listado JSON.

    {
      "bindings": [
        {
          "authLevel": "function",
          "type": "httpTrigger",
          "direction": "in",
          "name": "Request",
          "methods": [
            "get",
            "post"
          ]
        },
        {
          "type": "http",
          "direction": "out",
          "name": "Response"
        }
      ]
    }
    

    Como puede ver, esta función tiene un enlace de desencadenador llamado Request de tipo httpTrigger y un enlace de salida llamado Response de tipo http. En el código anterior de nuestra función, vimos cómo accedimos a la carga útil de la solicitud HTTP entrante a través del parámetro Request. De forma similar, enviamos una respuesta HTTP con solo establecer el parámetro Response. Los enlaces nos liberan de una gran parte del trabajo pesado.

Exploración de los tipos de enlace

  1. En el menú Función, seleccione Integración. Aparece el panel Integración de la función.

    Tenga en cuenta que ya hemos definido un desencadenador y un enlace de salida, como se muestra en la imagen siguiente. La vista de integración es la que mejor se ajusta al ancho y alto de la pantalla. La misma información se puede mostrar en horizontal, si la pantalla es lo suficientemente ancha.

    Screenshot of vertical flow diagram showing Trigger and Inputs leading to Function and Function leading to Outputs.

    Puede ver que no podemos agregar más de un desencadenador. Para cambiar un desencadenador de una función, debe eliminar el desencadenador y crear uno nuevo. Aun así, las secciones Entradas y Salidas le permiten agregar más de un enlace, de modo que la solicitud pueda aceptar más de un valor de entrada y devolver más de un valor de salida.

  2. En el cuadro Entradas, seleccione Agregar entrada. Aparece el panel Crear entrada. Seleccione la lista desplegable Tipo de enlace para ver una lista de todos los tipos de enlace de entrada posibles.

    Screenshot of the Add input options.

    Tómese un momento para considerar cómo podría usar cada uno de estos enlaces de entrada en una solución.

    Más adelante en este módulo, agregaremos enlaces de entrada, pero por ahora, seleccione Cancelar para descartar este panel.

  3. En el cuadro Salidas, seleccione Agregar salida. Aparece el panel Crear salida. Seleccione la lista desplegable Tipo de enlace para ver una lista de todos los tipos de enlace de salida posibles.

    Screenshot of the Add output options.

    Como puede ver, hay varios tipos de enlaces de salida. Más adelante en este módulo, agregaremos enlaces de salida, pero, por ahora, seleccione Cancelar para descartar este panel.

  1. En el menú Función, seleccione Integración. Aparece el panel Integración de la función.

    Tenga en cuenta que ya hemos definido un desencadenador y un enlace de salida, como se muestra en la imagen siguiente. La vista de integración es la que mejor se ajusta al ancho y alto de la pantalla. La misma información se puede mostrar en vertical, si la pantalla no es lo suficientemente ancha.

    Screenshot of horizontal flow diagram showing Trigger and Inputs leading to Function and Function leading to Outputs.

    Puede ver que no podemos agregar más de un desencadenador. Para cambiar el desencadenador de una función, debe eliminar el desencadenador y crear uno nuevo. Aun así, las secciones Entradas y Salidas le permiten agregar varios enlaces, de modo que la función pueda aceptar más de un valor de entrada y devolver más de un valor de salida.

  2. En el cuadro Entradas, seleccione Agregar entrada. Aparece el panel Crear entrada. Seleccione la lista desplegable Tipo de enlace para ver una lista de todos los tipos de enlace de entrada posibles.

    Screenshot of the Add input options.

    Tómese un momento para considerar cómo podría usar cada uno de estos enlaces de entrada en una solución. Hay muchas posibilidades entre las que elegir.

    Más adelante en este módulo, agregaremos enlaces de entrada, pero por ahora, seleccione Cancelar para descartar este panel.

  3. En el cuadro Salidas, seleccione Agregar salida. Aparece el panel Crear salida. Seleccione la lista desplegable Tipo de enlace para ver una lista de todos los tipos de enlace de salida posibles.

    Screenshot of the Add output options.

    Como puede ver, hay varios tipos de enlaces de salida. Más adelante en este módulo, agregaremos enlaces de salida, pero, por ahora, seleccione Cancelar para descartar este panel.

Hasta ahora, hemos aprendido a crear una aplicación de función y agregarle una función. Ha visto en acción una función sencilla que se ejecuta al crear una solicitud HTTP. También se ha explorado Azure Portal y los tipos de enlaces de entrada y salida que están disponibles para las funciones. En la siguiente unidad, se usará un enlace de entrada para leer texto de una base de datos.