Creación de la primera función durable en PowerShell

Durable Functions es una extensión de Azure Functions que le permite escribir funciones con estado en un entorno sin servidor. La extensión administra el estado, establece puntos de control y reinicia en su nombre.

En este artículo, aprenderá a usar la extensión de Azure Functions para Visual Studio Code con el fin de crear y probar localmente una función durable "Hola mundo". Esta función organizará y encadenará llamadas a otras funciones. Luego, publicará el código de función en Azure.

Ejecución de una función durable en Azure

Requisitos previos

Para completar este tutorial:

Si no tiene una suscripción a Azure, cree una cuenta gratuita de Azure antes de empezar.

Creación del proyecto local

En esta sección se usa Visual Studio Code para crear un proyecto local en Azure Functions.

  1. En Visual Studio Code, presione F1 (o Ctrl/Cmd+Mayús+P) para abrir la paleta de comandos. En la paleta de comandos, busque y seleccione Azure Functions: Create New Project....

    Crear función

  2. Elija una ubicación de carpeta vacía para el proyecto y elija Seleccionar.

  3. Siguiendo las indicaciones, proporcione la información siguiente:

    Prompt Valor Descripción
    Seleccionar el lenguaje para el proyecto de la aplicación de funciones PowerShell Cree un proyecto local de Functions en PowerShell.
    Selección de una versión Azure Functions v4 Esta opción solo se ve si las herramientas principales no estén instaladas. En este caso, las herramientas principales se instalan la primera vez que se ejecuta la aplicación.
    Seleccionar una plantilla para la primera función de su proyecto Omitir por ahora
    Seleccionar cómo desea que se abra el proyecto Abrir en la ventana actual Vuelve a abrir VS Code en la carpeta seleccionada.

Visual Studio Code instala Azure Functions Core Tools, en caso de que sea necesario. También crea el proyecto de una aplicación de funciones en una carpeta. Este proyecto contiene los archivos de configuración host.json y local.settings.json.

También se crea un archivo package.json en la carpeta raíz.

Configuración de una aplicación de funciones para que use PowerShell 7

Abra el archivo local.settings.json y confirme que un valor denominado FUNCTIONS_WORKER_RUNTIME_VERSION está establecido en ~7. Si falta o está establecido en otro valor, actualice el contenido del archivo.

{
  "IsEncrypted": false,
  "Values": {
    "AzureWebJobsStorage": "",
    "FUNCTIONS_WORKER_RUNTIME": "powershell",
    "FUNCTIONS_WORKER_RUNTIME_VERSION" : "~7"
  }
}

Creación de las funciones

La aplicación de Durable Functions más básica contiene tres funciones:

  • Función de orquestador: describe un flujo de trabajo que organiza otras funciones.
  • Función de actividad: a la cual llama la función de orquestador, realiza el trabajo y, opcionalmente, devuelve un valor.
  • Función de cliente: una función de Azure normal que inicia una función de orquestador. En este ejemplo se usa una función desencadenada por HTTP.

Función de orquestador

Se usa una plantilla para crear el código de la función de Durable Functions del proyecto.

  1. En la paleta de comandos, busque y seleccione Azure Functions: Create Function....

  2. Siguiendo las indicaciones, proporcione la información siguiente:

    Prompt Valor Descripción
    Seleccionar una plantilla para la función Orquestador de Durable Functions Crear una orquestación de Durable Functions
    Proporcionar un nombre de función HelloOrchestrator Nombre de la función de Durable Functions

Hemos agregado un orquestador para coordinar las funciones de actividad. Open HelloOrchestrator/run.ps1 para ver la función del orquestador. Cada llamada al cmdlet Invoke-ActivityFunction invoca una función de actividad denominada Hello.

A continuación, agregará la función de actividad Hello a la que se hace referencia.

Función de actividad

  1. En la paleta de comandos, busque y seleccione Azure Functions: Create Function....

  2. Siguiendo las indicaciones, proporcione la información siguiente:

    Prompt Valor Descripción
    Seleccionar una plantilla para la función Actividad de Durable Functions Crear una función de actividad
    Proporcionar un nombre de función Hola Nombre de la función de actividad

Ha agregado la función de actividad Hello que el orquestador invoca. Abra Hello/run.ps1 para comprobar que toma un nombre como entrada y devuelve un saludo. Una función de actividad es donde realizará acciones como realizar una llamada a la base de datos o realizar un cálculo.

Por último, agregará una función desencadenada por HTTP que inicie la orquestación.

Función de cliente (inicio de HTTP)

  1. En la paleta de comandos, busque y seleccione Azure Functions: Create Function....

  2. Siguiendo las indicaciones, proporcione la información siguiente:

    Prompt Valor Descripción
    Seleccionar una plantilla para la función Inicio de HTTP de Durable Functions Crear una función de inicio de HTTP
    Proporcionar un nombre de función HttpStart Nombre de la función de actividad
    Nivel de autorización Anónimas Para la demostración, permita que se llame a la función sin autenticación.

Ha agregado una función desencadenada por HTTP que inicia una orquestación. Abra HttpStart/run.ps1 para ver que usa el cmdlet Start-NewOrchestration para iniciar una nueva orquestación. Luego, usa el cmdlet New-OrchestrationCheckStatusResponse para devolver una respuesta HTTP que contiene las direcciones URL que se pueden usar para supervisar y administrar la nueva orquestación.

Ahora tiene una aplicación de Durable Functions que se puede ejecutar localmente e implementar en Azure.

Nota

La siguiente versión de DF PowerShell está ahora en versión preliminar y se puede descargar de la Galería de PowerShell. Obtenga información sobre él y cómo probarlo en la guía del SDK de PowerShell independiente. Puede seguir la sección de instalación de la guía para obtener instrucciones compatibles con este inicio rápido sobre cómo habilitarlo.

Prueba local de la función

Azure Functions Core Tools le permite ejecutar un proyecto de Azure Functions en el equipo de desarrollo local. Se le solicita que instale estas herramientas la primera vez que inicie una aplicación de funciones desde Visual Studio Code.

  1. Para probar la función, establezca un punto de interrupción en el código de la función de actividad de Hello (Hello/run.ps1). Presione F5 o seleccione Debug: Start Debugging en la paleta de comandos para iniciar el proyecto de aplicación de funciones. La salida de Core Tools aparece en el panel Terminal.

    Nota

    Consulte los Diagnósticos de Durable Functions para más información sobre la depuración.

  2. Durable Functions requiere la ejecución de una cuenta de Azure Storage. Cuando VS Code le pida que seleccione una cuenta de almacenamiento, elija Seleccionar cuenta de almacenamiento.

    Crear cuenta de almacenamiento

  3. Siga las indicaciones y proporcione la siguiente información para crear una nueva cuenta de almacenamiento en Azure.

    Prompt Valor Descripción
    Seleccionar suscripción nombre de la suscripción Selección de su suscripción a Azure
    Seleccione una cuenta de almacenamiento Creación de una cuenta de almacenamiento nueva
    Escriba el nombre de la nueva cuenta de almacenamiento nombre único Nombre de la cuenta de almacenamiento que se creará
    Selección de un grupo de recursos nombre único Nombre del grupo de recursos que se creará
    Seleccionar una ubicación region Seleccione una región cercana
  4. En el panel Terminal, copie el punto de conexión de la dirección URL de la función desencadenada por HTTP.

    Salida local de Azure

  5. Mediante el explorador web o una herramienta como Postman o cURL, envíe una solicitud HTTP POST al punto de conexión de la dirección URL. Reemplace el último segmento por el nombre de la función de orquestador (HelloOrchestrator). La dirección URL debe ser similar a http://localhost:7071/api/orchestrators/HelloOrchestrator.

    La respuesta es el resultado inicial de la función HTTP que le informa de que la orquestación perdurable se ha iniciado correctamente. No es aún el resultado final de la orquestación. La respuesta incluye algunas direcciones URL útiles. De momento, vamos a consultar el estado de la orquestación.

  6. Copie el valor de la URL para statusQueryGetUri y péguelo en la barra de direcciones del explorador y ejecute la solicitud. Como alternativa también puede usar Postman para emitir la solicitud GET.

    La solicitud consultará la instancia de orquestación sobre el estado. Debe obtener una respuesta eventual que muestre que la instancia se ha completado, e incluye las salidas o resultados de la función durable. Su aspecto es similar a:

    {
        "name": "HelloOrchestrator",
        "instanceId": "9a528a9e926f4b46b7d3deaa134b7e8a",
        "runtimeStatus": "Completed",
        "input": null,
        "customStatus": null,
        "output": [
            "Hello Tokyo!",
            "Hello Seattle!",
            "Hello London!"
        ],
        "createdTime": "2020-03-18T21:54:49Z",
        "lastUpdatedTime": "2020-03-18T21:54:54Z"
    }
    
  7. Para detener la depuración, presione Mayús + F5 en VS Code.

Después de comprobar que la función se ejecuta correctamente en el equipo local es el momento de publicar el proyecto 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, elija el icono de Azure en la barra de actividades. Después, en el área Recursos, elija Iniciar sesión en Azure...

    Captura de pantalla del inicio de sesión en la ventana de Azure dentro de VS 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, elija Crear una cuenta de Azure.... Los estudiantes pueden elegir Crear una cuenta de Microsoft Azure for Students....

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

  3. Cuando haya iniciado sesión correctamente, puede cerrar la nueva ventana del explorador. Las suscripciones que pertenezcan a la cuenta de Azure se mostrarán en la barra lateral.

Cree la aplicación de funciones en Azure

Durante el transcurso de esta sección, podrá crear una aplicación de funciones y los recursos relacionados con esta en la suscripción de Azure.

  1. Seleccione el icono de Azure en la barra de actividades. A continuación, en el área Recursos, seleccione el icono + y elija la opción Crear aplicación de funciones en Azure.

    Creación de un recurso en la suscripción de Azure

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

    Prompt Número de selección
    Seleccionar suscripción elija la suscripción que desee usar. Si solo tiene una suscripción visible en el área Recursos, esta solicitud no se mostrará.
    Escribir 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 en tiempo de ejecución Elija la versión de lenguaje que ha estado ejecutando localmente.
    Seleccionar una ubicación para los nuevos recursos Para mejorar el rendimiento, elija una región cerca de usted.

    La extensión mostrará el estado de los recursos individuales en el panel Azure: Registro de actividad a medida que estos se creen.

    Registro de creación de recursos de Azure

  3. Cuando se complete el proceso de creación, se crearán los siguientes recursos de Azure en la suscripción. Los recursos se denominarán en función del nombre de la aplicación de funciones:

    • 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.
    • 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 App Service, que define al host subyacente de la aplicación de funciones.
    • Una instancia de Application Insights conectada a la aplicación de funciones, que hace un seguimiento del uso de las funciones de la aplicación.

    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 que requiere la aplicación de funciones se crean según el nombre de la aplicación de funciones que proporcione. De forma predeterminada, estos también se crean en el mismo nuevo grupo de recursos que contiene la aplicación de funciones. Si lo que quiere es personalizar los nombres de estos recursos o reutilizar recursos existentes, deberá publicar el proyecto con opciones de creación avanzadas.

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 el área Recursos de la actividad de Azure, busque el recurso de la aplicación de funciones que acaba de crear, haga clic con el botón derecho en el recurso y seleccione Implementar en la aplicación de funciones....

  2. 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 el proceso de implementación, seleccione Ver salida para visualizar los resultados de la creación y 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.

    Captura de pantalla de la vista de la ventana de salida.

Prueba de una función en Azure

  1. Copie la dirección URL del desencadenador HTTP del panel Salida. La dirección URL que llama a la función desencadenada por HTTP debería tener el formato siguiente: https://<functionappname>.azurewebsites.net/api/orchestrators/HelloOrchestrator

  2. Pegue la dirección URL de la solicitud HTTP en la barra de direcciones del explorador. Debe obtener la misma respuesta de estado que antes cuando se usó la aplicación publicada.

Pasos siguientes

Ha usado Visual Studio Code para crear y publicar una aplicación de función perdurable con PowerShell.