Inicio rápido: Creación de una aplicación de Durable Functions de PowerShell

En este inicio rápido, usará Visual Studio Code para crear y probar una aplicación de PowerShell de Durable Functions que orquesta y encadena llamadas a otras funciones. A continuación, publíquelo en Azure.

Durable Functions administra el estado, los puntos de control y los reinicios en la aplicación, lo que le permite escribir flujos de trabajo con estado en un entorno sin servidor.

Prerrequisitos

Para completar este inicio rápido necesita instalar:

Si no tiene una cuenta de Azure, cree una cuenta gratuita antes de comenzar.

Creación del proyecto local

En esta sección, usará Visual Studio Code para crear un proyecto de Azure Functions local.

  1. En Visual Studio Code, seleccione F1 (o presione Ctrl/Cmd+Mayús+P) para abrir la paleta de comandos. En el símbolo del sistema (>), escriba y luego seleccione Azure Functions: Crear nuevo proyecto.

    Captura de pantalla del comando Create New Project en Visual Studio Code para Azure Functions.

  2. Haga clic en Examinar. En el cuadro de diálogo Seleccionar carpeta, vaya a una carpeta que se vaya a usar para el proyecto y, a continuación, elija Seleccionar.

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

    Pronto Acción Descripción
    Seleccionar un lenguaje para el proyecto de aplicación de funciones Seleccione PowerShell. Crea un proyecto local de Funciones de PowerShell.
    Seleccionar una versión Seleccione Azure Functions v4. Solo verá esta opción si Core Tools aún no está instalado. En este caso, Core Tools se instala la primera vez que ejecuta la aplicación.
    Seleccionar una plantilla para la primera función del proyecto Seleccione Omitir por ahora.
    Seleccionar cómo desea abrir el proyecto Seleccione Abrir en la ventana actual. Abre Visual Studio Code en la carpeta seleccionada.

Visual Studio Code instala Azure Functions Core Tools si es necesario crear un proyecto. 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.

Configure el SDK independiente de Durable Functions

El SDK independiente proporciona el mejor rendimiento y las características más recientes para powerShell Durable Functions. Configúrelo en tres pasos:

Paso 1: Abra local.settings.json y compruebe que la configuración siguiente está presente. Agregue o actualícelos si es necesario:

{
  "IsEncrypted": false,
  "Values": {
    "AzureWebJobsStorage": "",
    "FUNCTIONS_WORKER_RUNTIME": "powershell",
    "FUNCTIONS_WORKER_RUNTIME_VERSION" : "7.4",
    "ExternalDurablePowerShellSDK": "true"
  }
}

Paso 2: Abra requirements.psd1 y agregue la dependencia del SDK:

@{
    'AzureFunctions.PowerShell.Durable.SDK' = '2.*'
}

El especificador 2.* garantiza que usted consigue la versión más reciente y estable 2.x de la Galería de PowerShell.

Paso 3: Agregue la siguiente línea al final del profile.ps1 archivo:

Import-Module AzureFunctions.PowerShell.Durable.SDK -ErrorAction Stop

Creación de las funciones

Una aplicación de Durable Functions básica tiene tres funciones:

Tipo de función Purpose
Orquestador Flujo de trabajo que organiza otras funciones.
Actividad Llamado por el orquestador para realizar una tarea y devolver un valor.
Cliente (inicio HTTP) Función desencadenada por HTTP que inicia un orquestador.

Para cada función, abra la paleta de comandos y seleccione Azure Functions: Crear función y proporcione los valores que se le pidan:

1. Función de orquestador

Pronto Importancia
Seleccione una plantilla Durable Functions orquestador
Nombre de función HelloOrchestrator

Abra HelloOrchestrator/run.ps1 para ver el orquestador. Cada llamada a Invoke-ActivityFunction invoca la Hello función de actividad.

2. Función de actividad

Pronto Importancia
Seleccione una plantilla Durable Functions actividad
Nombre de función Hola

Abra Hello/run.ps1 para ver que toma un nombre como entrada y devuelve un saludo. Las funciones de actividad son donde se realizan acciones como llamadas a base de datos o cálculos.

3. Función de cliente (inicio HTTP)

Pronto Importancia
Seleccione una plantilla Iniciador HTTP de Funciones Duraderas
Nombre de función HttpStart
Nivel de autorización Anónimo (con fines de demostración)

Abra HttpStart/run.ps1 para comprobar que usa Start-NewOrchestration para iniciar una nueva orquestación y New-OrchestrationCheckStatusResponse devolver una respuesta HTTP con direcciones URL de supervisión.

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

Sugerencia

En esta guía de inicio rápido se utiliza el SDK independiente de Durable Functions para PowerShell. Para obtener más información sobre el SDK y la migración desde la versión integrada heredada, consulte la guía del SDK de PowerShell independiente.

Prueba local de la función

Azure Functions Core Tools le ofrece la capacidad de ejecutar un proyecto de Azure Functions en el equipo de desarrollo local. Se le pedirá que instale estas herramientas la primera vez que inicie una función en Visual Studio.

  1. Para probar la función, establezca un punto de interrupción en el código de función de actividad de Hello (en Hello/run.ps1). Seleccione F5 o seleccione Depurar: Iniciar depuración en la paleta de comandos para iniciar el proyecto de aplicación de funciones. La salida de Core Tools aparece en el panel del terminal.

    Nota:

    Para obtener más información sobre la depuración, consulte Durable Functions diagnostics.

  2. Durable Functions requiere una cuenta de almacenamiento para funcionar. Puede usar el emulador de almacenamiento Azurite para el desarrollo local o crear una cuenta de almacenamiento Azure cuando se le solicite. Si Visual Studio Code le pide que seleccione una cuenta de almacenamiento, elija Seleccionar cuenta de almacenamiento.

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

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

  5. Use su navegador o una herramienta de prueba HTTP para enviar 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. Le permite saber que la orquestación duradera se inició correctamente. Todavía no muestra el resultado final de la orquestación. La respuesta incluye algunas direcciones URL útiles. Por ahora, consulte el estado de la orquestación.

  6. Copie el valor de la URL que corresponde a statusQueryGetUri, péguelo en la barra de direcciones del explorador y ejecute la solicitud. También puede seguir usando la herramienta de prueba HTTP para emitir la solicitud GET.

    La solicitud consultará la instancia de orquestación sobre el estado. Debería ver una respuesta que muestra la instancia completada, con las salidas de la función durable:

    {
        "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, en Visual Studio Code, seleccione Mayús+F5.

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

Iniciar sesión en Azure

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

  1. Si aún no ha iniciado sesión, en la barra Activity, seleccione el icono de Azure. A continuación, en Resources, seleccione Sign in to Azure.

    Captura de pantalla de la ventana de inicio de sesión en Azure en Visual Studio 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, seleccione Crear una cuenta de Azure. Los alumnos pueden seleccionar Crear un Azure para la cuenta de estudiantes.

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

  3. Después de iniciar sesión correctamente, puede cerrar la nueva ventana del explorador. Las suscripciones que pertenecen a la cuenta de Azure se muestran en la barra lateral.

Creación de la aplicación de funciones en Azure

En esta sección, creas una aplicación de funciones en el plan de consumo Flex junto con los recursos relacionados en tu suscripción de Azure. Muchas de las decisiones de creación de recursos se toman en función de los comportamientos predeterminados. Para obtener más control sobre los recursos creados, en su lugar debe crear la aplicación de funciones con opciones avanzadas.

  1. En Visual Studio Code, seleccione F1 para abrir la paleta de comandos. En el símbolo del sistema (>), escriba y luego seleccione Azure Functions: Crear una aplicación de funciones en Azure.

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

    Pronto Acción
    Selección de la suscripción Seleccione la suscripción Azure que se va a usar. El símbolo del sistema no aparece cuando solo tiene una suscripción visible en Recursos.
    Escriba un nuevo nombre de aplicación de funciones. Escriba un nombre único global que sea válido en una ruta del URL. El nombre que escriba se valida para asegurarse de que es único en Azure Functions.
    Seleccionar una ubicación para los nuevos recursos Seleccione una región Azure. Para mejorar el rendimiento, seleccione una región cerca de usted. Solo se muestran las regiones admitidas por los planes de consumo flexible.
    Seleccione una pila en tiempo de ejecución Seleccione la versión de idioma que se ejecuta actualmente localmente.
    Selección del tipo de autenticación de recursos Seleccione Identidad administrada, que es la opción más segura para conectarse a la cuenta de almacenamiento de host predeterminada.

    En el panel Azure: Registro de actividad, la extensión Azure muestra el estado de los recursos individuales a medida que se crean en Azure.

    Screenshot que muestra el registro de creación de recursos de Azure.

  3. Cuando se crea la aplicación de funciones, se crean los siguientes recursos relacionados en la suscripción de Azure. Los recursos se denominan en función del nombre especificado para la aplicación de funciones.

    • Un grupo de recursos, que es un contenedor lógico de recursos relacionados.
    • 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 servicio de aplicaciones de Azure, que define el host subyacente para tu aplicación de funciones.
    • Una cuenta de Azure Storage estándar que usa el host de Functions para mantener el estado y otra información sobre tu aplicación de funciones.
    • Una instancia de Application Insights conectada a la aplicación de funciones y que realiza un seguimiento del uso de las funciones en la aplicación.
    • Una identidad administrada asignada por el usuario que se agrega al rol Colaborador de datos de Storage Blob en la nueva cuenta de almacenamiento de host predeterminada.

    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 requeridos por la aplicación de funciones se crean en función del nombre que escriba para la aplicación de funciones. De manera predeterminada, los recursos se crean con la aplicación de funciones en el mismo grupo de recursos nuevo. Si desea personalizar los nombres de los recursos asociados o reutilizar los recursos existentes, publique el proyecto con opciones de creación avanzadas.

Implementar el proyecto en Azure

Importante

La implementación en una aplicación de funciones existente siempre sobrescribe el contenido de esa aplicación en Azure.

  1. En la paleta de comandos, escriba y seleccione Azure Functions: Implementar en Function App.

  2. Seleccione la aplicación de funciones que acaba de crear. 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 la implementación, seleccione View Output para ver los resultados de creación e implementación, incluidos los recursos de Azure que creó. Si se pierde la notificación, seleccione el icono de campana en la esquina inferior derecha para verlo de nuevo.

    Recorte de pantalla de la ventana Ver salida.

Prueba de la función en Azure

  1. En el portal de Azure (o mediante el CLI de Azure), compruebe que la configuración de la aplicación ExternalDurablePowerShellSDK está establecida en true. Si falta, agréguelo en Configuración>Variables de entorno y reinicie la aplicación de funciones.

  2. Copie la dirección URL del desencadenador HTTP en el panel de salida. La dirección URL debe tener este formato:

    https://<functionappname>.azurewebsites.net/api/orchestrators/HelloOrchestrator

  3. Envíe una solicitud HTTP POST a la dirección URL. Debería obtener la misma respuesta de estado que obtuvo al probar localmente.

Si la orquestación no se inicia, compruebe los registros de la aplicación de funciones en el portal de Azure en Monitor>Log stream si hay errores relacionados con la conectividad de importación o almacenamiento del SDK.

Limpieza de recursos

Si ya no necesita los recursos que creó para completar el inicio rápido, para evitar costos relacionados en la suscripción de Azure, delete el grupo de recursos y todos los recursos relacionados.