Creación de Durable Functions mediante Azure Portal

La extensión Durable Functions para Azure Functions se proporciona en el paquete NuGet Microsoft.Azure.WebJobs.Extensions.DurableTask. Esta extensión debe instalarse en la aplicación de función. En este artículo se muestra cómo instalar este paquete para que pueda desarrollar funciones duraderas en Azure Portal.

Nota

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

Debe tener una aplicación de función para hospedar la ejecución de cualquier función. Una aplicación de funciones permite agrupar funciones como una unidad lógica para facilitar la administración, la implementación, el escalado y el uso compartido de recursos. Puede crear una aplicación .NET o JavaScript.

  1. En el menú o la página Inicio de Azure Portal, seleccione Crear un recurso.

  2. En la página Nuevo, seleccione Compute>Function App.

  3. En la página Básico, utilice la configuración de la aplicación de funciones como se especifica en la tabla siguiente:

    Configuración Valor sugerido Descripción
    Suscripción Su suscripción Suscripción en la que creará la nueva aplicación de funciones.
    Grupo de recursos myResourceGroup Nombre del nuevo grupo de recursos en el que crea la aplicación de funciones. Debe crear un nuevo grupo de recursos, ya que existen limitaciones conocidas a la hora de crear nuevas aplicaciones de funciones en un grupo de recursos existente.
    Nombre de la aplicación de función Nombre único globalmente Nombre que identifica la nueva Function App. Los caracteres válidos son a-z (no distingue mayúsculas de minúsculas), 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 Lenguaje preferido Elija un tiempo de ejecución que admita su lenguaje de programación de funciones preferido. La edición en el portal solo está disponible para JavaScript, PowerShell, Python, TypeScript y el script de C#. Las funciones de la biblioteca de clases de C# y Java deben estar desarrolladas en el entorno local.
    Versión Número de la versión Elija la versión del entorno de ejecución instalado.
    Región Región preferida Seleccione una región próxima a usted o a otros servicios a los que accedan las funciones.
    Sistema operativo Windows Se preselecciona un sistema operativo en función de la selección de pila en tiempo de ejecución, pero es posible cambiar esta configuración si fuera necesario. La edición en el portal solo se admite en Windows. La publicación de contenedores solo se admite en Linux.
    Opciones y planes de hospedaje Consumo (sin servidor) Plan de hospedaje que define cómo se asignan los recursos a la Function App. En el plan de Consumo predeterminado, los recursos se agregan dinámicamente según lo requieran sus funciones. En este hospedaje sin servidor, solo paga por el tiempo durante el cual se ejecutan las funciones. El plan Premium también ofrece escalado dinámico. Si ejecuta un plan de App Service, debe administrar el escalado de la aplicación de función.
  4. Acepte las opciones predeterminadas para crear una nueva cuenta de almacenamiento en la pestaña Almacenamiento y una nueva instancia de Application Insights en la pestaña Supervisión. También puede optar por usar una cuenta de almacenamiento existente o una instancia de Application Insights.

  5. Seleccione Revisar y crear para revisar la configuración de la aplicación que ha elegido y, después, seleccione Crear para aprovisionar e implementar la aplicación de funciones.

  6. Seleccione el icono Notificaciones de la esquina superior derecha del portal y observe el mensaje Implementación correcta.

  7. Seleccione Ir al recurso para ver la nueva aplicación de función. También puede seleccionar Anclar al panel. Dicho anclaje facilita la vuelta a este recurso de aplicación de función desde el panel.

    Screenshot of deployment notification.

De forma predeterminada, la aplicación de función creada utiliza la versión 2.x del entorno de ejecución de Azure Functions. La extensión de Durable Functions funciona en ambas versiones 1.x y 2.x del entorno de ejecución de Azure Functions en C# y en la versión 2.x de JavaScript. Sin embargo, las plantillas solo están disponibles cuando la versión del entorno de ejecución de destino es la 2.x, con independencia del lenguaje elegido.

Instalación del paquete npm de Durable Functions (solo para JavaScript)

Si va a crear Durable Functions de JavaScript, deberá instalar el durable-functionspaquete npm:

  1. En la página de la aplicación de funciones, seleccione Herramientas avanzadas en Herramientas de desarrollo en el panel izquierdo.

    Functions platform features choose Kudu

  2. En la página Herramientas avanzadas, seleccione Ir.

  3. En la consola de Kudu, seleccione Consola de depuración y, a continuación, CMD.

    Kudu debug console

  4. Debería aparecer la estructura de directorios de archivos de la aplicación de funciones. Vaya a la carpeta site/wwwroot. Desde allí, puede cargar un archivo package.json al arrastrarlo y colocarlo en la ventana del directorio de archivo. A continuación se muestra el ejemplo package.json:

    {
      "dependencies": {
        "durable-functions": "^1.3.1"
      }
    }
    

    Kudu upload package.json

  5. Una vez cargado el archivo package.json, ejecute el comando npm install en la consola de ejecución remota de Kudu.

    Kudu run npm install

Creación de una función de orquestador

  1. En la aplicación de funciones, seleccione Funciones en el panel izquierdo y, a continuación, seleccione Agregar en el menú superior.

  2. En el campo de búsqueda de la página Nueva función, escriba durable y elija la plantilla Inicio HTTP de Durable Functions.

    Select Durable Functions HTTP starter

  3. Para el nombre de la Nueva función, escriba HttpStart y seleccione Crear función.

    La función creada se usa para iniciar la orquestación.

  4. Cree otra función en la aplicación de funciones, esta vez mediante la plantilla Orquestador de Durable Functions. Asigne un nombre a la nueva función de orquestación HelloSequence.

  5. Cree una tercera función llamada Hello mediante la plantilla Actividad de Durable Functions.

Prueba de la orquestación de función duradera

  1. Vuelva a la función HttpStart, elija Obtener la dirección URL de la función y seleccione el icono Copiar al Portapapeles para copiar la dirección URL. Use esta dirección URL para iniciar la función HelloSequence.

  2. Use una herramienta HTTP como Postman o cURL para enviar una solicitud POST a la dirección URL que copió. El ejemplo siguiente es un comando de cURL que envía una solicitud POST a la función duradera:

    curl -X POST https://{your-function-app-name}.azurewebsites.net/api/orchestrators/{functionName} --header "Content-Length: 0"
    

    En este ejemplo, {your-function-app-name} es el dominio que es el nombre de la aplicación de función y {functionName} es la función orquestadora HelloSequence. El mensaje de respuesta contiene un conjunto de puntos de conexión URI que puede usar para supervisar y administrar la ejecución, que es similar al ejemplo siguiente:

    {  
       "id":"10585834a930427195479de25e0b952d",
       "statusQueryGetUri":"https://...",
       "sendEventPostUri":"https://...",
       "terminatePostUri":"https://...",
       "rewindPostUri":"https://..."
    }
    
  3. Llame al URI del punto de conexión statusQueryGetUri y verá el estado actual de la función duradera, lo que podría parecerse a este ejemplo:

        {
            "runtimeStatus": "Running",
            "input": null,
            "output": null,
            "createdTime": "2017-12-01T05:37:33Z",
            "lastUpdatedTime": "2017-12-01T05:37:36Z"
        }
    
  4. Continúe con la llamada al punto de conexión statusQueryGetUri hasta que el estado cambie a Completado, y verá una respuesta similar al ejemplo siguiente:

    {
            "runtimeStatus": "Completed",
            "input": null,
            "output": [
                "Hello Tokyo!",
                "Hello Seattle!",
                "Hello London!"
            ],
            "createdTime": "2017-12-01T05:38:22Z",
            "lastUpdatedTime": "2017-12-01T05:38:28Z"
        }
    

La primera función duradera ahora está en funcionamiento en Azure.

Pasos siguientes