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 se creará la aplicación de funciones.
    Grupo de recursos myResourceGroup Nombre para el nuevo grupo de recursos donde va a crear la aplicación de funciones.
    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 -.
    Publicar Código Opción para publicar archivos de código o un contenedor de 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, TypeScript y el script de C#. Las funciones de la biblioteca de clases de C#, Java y Python 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.
  4. Seleccione Siguiente: Hospedaje. En la página Hospedaje, escriba la siguiente configuración:

    Configuración Valor sugerido Descripción
    Cuenta de almacenamiento Nombre único globalmente Cree una cuenta de almacenamiento que use la aplicación de función. Los nombres de las cuentas de almacenamiento deben tener entre 3 y 24 caracteres y solo pueden incluir números y letras en minúscula. También puede usar una cuenta existente que debe cumplir los requisitos de la cuenta de almacenamiento.
    Sistema operativo Windows Se preselecciona un sistema operativo en función de la selección de pila en tiempo de ejecución, pero puede cambiar esta configuración si es necesario. La edición en el portal solo se admite en Windows.
    Plan 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. Si ejecuta un plan de App Service, debe administrar el escalado de la aplicación de función.
  5. Seleccione Siguiente: Supervisión. En la página Supervisión, escriba la siguiente configuración:

    Configuración Valor sugerido Descripción
    Application Insights Valor predeterminado Crea un recurso de Application Insights con el mismo nombre de aplicación en la región más cercana que lo admita. Si expande esta configuración o selecciona Crear nuevo puede cambiar el nombre de Application Insights o seleccionar otra región de una geografía de Azure en la que quiera almacenar los datos.
  6. Seleccione Revisar y crear para revisar las selecciones de configuración de la aplicación.

  7. En la página Revisar y crear, revise la configuración y, a continuación, seleccione Crear para aprovisionar e implementar la aplicación de función.

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

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

    Captura de pantalla de la notificación de implementación.

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.

    Selección de Kudu en las características de la plataforma de funciones

  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.

    Consola de depuración de Kudu

  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"
      }
    }
    

    package.json cargado en Kudu

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

    Ejecución de la instalación de npm en Kudu

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.

    Selección de Inicio de HTTP de Durable Functions

  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