Inicio rápido: Compilación de un flujo de trabajo sin servidor mediante Durable Functions

En este inicio rápido, usará las herramientas de línea de comandos de Azure Developer para crear un flujo de trabajo sin servidor que organice varias tareas que se ejecutan en paralelo. Creas recursos en Azure, verificas el código localmente y luego lo despliegas en una nueva aplicación de funciones serverless que se ejecuta en un plan Flex Consumption en Azure Functions.

El proyecto usa la CLI para desarrolladores de Azure (azd) para simplificar la implementación del código en Azure. Esta implementación sigue los procedimientos recomendados actuales para implementaciones de Azure Functions seguras y escalables. En este inicio rápido se muestra el patrón distribución ramificada de salida/entrada en Funciones duraderas, una extensión que orquesta flujos de trabajo con estado de ejecución duradera. La muestra utiliza el Durable Task Scheduler, un backend totalmente gestionado para Durable Functions que reemplaza al backend de Azure Storage. En el ejemplo, los títulos del artículo se recuperan en paralelo: la orquestación realiza una distribución ramificada de salida a múltiples actividades que se ejecutan simultáneamente, luego realiza una distribución ramificada de entrada para agregar los resultados.

De forma predeterminada, el plan Flex Consumption sigue un modelo de facturación de pago por uso, lo que implica que completar esta iniciación rápida conllevará un pequeño costo de unos pocos centavos de dólar estadounidense o menos en su cuenta de Azure.

Prerequisites

Inicialización del proyecto

Use el azd init comando para crear un proyecto de código local de Durable Functions a partir de una plantilla.

  1. En el terminal local o el símbolo del sistema, ejecute este comando azd init en una carpeta vacía:

    azd init --template durable-functions-quickstart-dotnet-azd -e dfquickstart-dotnet
    

    Este comando extrae los archivos del proyecto del repositorio template e inicializa el proyecto en una nueva carpeta. La marca -e establece un nombre para el entorno actual. En azd, el entorno mantiene un contexto de implementación único para la aplicación y puede definir más de uno. El nombre del entorno también se usa en el nombre del grupo de recursos que crea en Azure.

  2. Cambia al directorio del proyecto y luego navega a la fanoutfanin carpeta de la app:

    cd durable-functions-quickstart-dotnet-azd/fanoutfanin
    
  1. En el terminal local o el símbolo del sistema, ejecute este comando azd init en una carpeta vacía:

    azd init --template durable-functions-quickstart-python-azd -e dfquickstart-python
    

    Este comando extrae los archivos del proyecto del repositorio template e inicializa el proyecto en una nueva carpeta. La marca -e establece un nombre para el entorno actual. En azd, el entorno mantiene un contexto de implementación único para la aplicación y puede definir más de uno. El nombre del entorno también se usa en el nombre del grupo de recursos que crea en Azure.

  2. Cambia al directorio del proyecto y luego navega a la src carpeta de la app:

    cd durable-functions-quickstart-python-azd/src
    
  1. En el terminal local o el símbolo del sistema, ejecute este comando azd init en una carpeta vacía:

    azd init --template durable-functions-quickstart-typescript-azd -e dfquickstart-typescript
    

    Este comando extrae los archivos del proyecto del repositorio template e inicializa el proyecto en una nueva carpeta. La marca -e establece un nombre para el entorno actual. En azd, el entorno mantiene un contexto de implementación único para la aplicación y puede definir más de uno. El nombre del entorno también se usa en el nombre del grupo de recursos que crea en Azure.

  2. Cambia al directorio del proyecto y luego navega a la src carpeta de la app:

    cd durable-functions-quickstart-typescript-azd/src
    
  1. En el terminal local o el símbolo del sistema, ejecute este comando azd init en una carpeta vacía:

    azd init --template durable-functions-quickstart-java-azd -e dfquickstart-java
    

    Este comando extrae los archivos del proyecto del repositorio template e inicializa el proyecto en una nueva carpeta. La marca -e establece un nombre para el entorno actual. En azd, el entorno mantiene un contexto de implementación único para la aplicación y puede definir más de uno. El nombre del entorno también se usa en el nombre del grupo de recursos que crea en Azure.

  2. Cambie al directorio del proyecto:

    cd durable-functions-quickstart-java-azd
    
  1. En el terminal local o el símbolo del sistema, ejecute este comando azd init en una carpeta vacía:

    azd init --template durable-functions-quickstart-javascript-azd -e dfquickstart-javascript
    

    Este comando extrae los archivos del proyecto del repositorio template e inicializa el proyecto en una nueva carpeta. La marca -e establece un nombre para el entorno actual. En azd, el entorno mantiene un contexto de implementación único para la aplicación y puede definir más de uno. El nombre del entorno también se usa en el nombre del grupo de recursos que crea en Azure.

  2. Cambia al directorio del proyecto y luego navega a la src carpeta de la app:

    cd durable-functions-quickstart-javascript-azd/src
    
  1. En el terminal local o el símbolo del sistema, ejecute este comando azd init en una carpeta vacía:

    azd init --template durable-functions-quickstart-powershell-azd -e dfquickstart-powershell
    

    Este comando extrae los archivos del proyecto del repositorio template e inicializa el proyecto en una nueva carpeta. La marca -e establece un nombre para el entorno actual. En azd, el entorno mantiene un contexto de implementación único para la aplicación y puede definir más de uno. El nombre del entorno también se usa en el nombre del grupo de recursos que crea en Azure.

  2. Cambia al directorio del proyecto y luego navega a la src carpeta de la app:

    cd durable-functions-quickstart-powershell-azd/src
    

Aprovisionamiento de los recursos de Azure

Este proyecto utiliza el azd provision comando para crear los recursos necesarios de Azure, incluyendo una nueva aplicación de funciones en un plan de Consumo Flexible, un Planificador de Tareas Durable y un centro de tareas.

Tip

El proyecto incluye un conjunto de archivos Bicep (en la carpeta infra) que azd usa para crear una implementación segura en un plan de consumo Flex que siga los procedimientos recomendados.

  1. Vuelve a la carpeta raíz del proyecto (la carpeta que contiene el azure.yaml archivo):

    cd ..
    
  1. Asegúrate de seguir en la carpeta raíz del proyecto (la carpeta que contiene el azure.yaml archivo).
  1. Ejecuta este comando para autenticarte con tu cuenta de Azure:

    azd auth login
    
  2. Ejecuta este comando desde la carpeta raíz del proyecto para crear azd los recursos de Azure necesarios:

    azd provision
    

    La carpeta raíz contiene el azure.yamlarchivo de definición de requerido por azd.

  3. Cuando se le solicite, proporcione estos parámetros de implementación necesarios:

    Parámetro Description
    Suscripción a Azure Suscripción en la que se crean los recursos. Si tu cuenta tiene más de un inquilino, primero debes elegir a tu inquilino.
    Ubicación de Azure Región de Azure en la que se creará el grupo de recursos que contiene los nuevos recursos de Azure. Solo se muestran las regiones que admiten actualmente el plan de consumo flexible.
    vnetEnabled Si desplegar en una red virtual. Para este inicio rápido, selecciona falso.

    El azd provision comando utiliza tus respuestas a estos prompts con los archivos de configuración de Bicep para crear y configurar estos recursos de Azure necesarios:

    • Plan de Consumo flexible y aplicación de funciones
    • Azure Storage (obligatorio) y Application Insights (recomendado)
    • Programador de tareas y centro de tareas duraderas
    • Directivas y roles de acceso para la cuenta
    • Conexiones de servicio a servicio mediante identidades administradas (en lugar de cadenas de conexión almacenadas)

    Una vez que el comando se complete correctamente, verá vínculos a los recursos que creó.

    El aprovisionamiento también ejecuta un script posterior al aprovisionamiento que genera un archivo local.settings.json en la carpeta de la aplicación. Este archivo contiene la configuración de conexión para el endpoint desplegado del Durable Task Scheduler, que necesitas para ejecutar el proyecto localmente.

Iniciar Azurite

Para ejecutar el proyecto localmente, el entorno de ejecución de Functions necesita un emulador de almacenamiento local. La configuración "AzureWebJobsStorage": "UseDevelopmentStorage=true" en el archivo local.settings.json indica al entorno de ejecución que use Azurite para ello.

En una nueva ventana de terminal, ejecuta este comando para iniciar Azurite:

azurite --skipApiVersionCheck --location ~/azurite-data

Mantén Azurite funcionando en esta ventana de terminal mientras pruebas localmente.

Ejecución en el entorno local

  1. En tu terminal original, ve a la fanoutfanin carpeta de aplicaciones y inicia el host de Funciones:

    cd fanoutfanin
    func start
    

    Cuando el host de Functions se inicia en la carpeta del proyecto local, escribe los puntos de conexión de dirección URL locales de las funciones desencadenadas por HTTP en la salida del terminal.

    Note

    Dado que la autorización de claves de acceso no se fuerza al ejecutarse localmente, no necesita una clave de acceso para llamar a la función.

  2. En el explorador, realice una solicitud GET al punto de conexión que inicie la orquestación:

    http://localhost:7071/api/FetchOrchestration_HttpStart

    Esta solicitud inicia una nueva instancia de orquestación. La orquestación realiza una distribución ramificada de salida a varias actividades para recuperar los títulos de los artículos de Microsoft Learn en paralelo. Cuando finalicen las actividades, la orquestación converge de nuevo y devuelve los títulos como una cadena con formato.

  1. En tu terminal original, ve a la src carpeta app, crea y activa un entorno virtual, instala dependencias y inicia el host de Funciones:

    cd src
    

    La forma en que creas y activas tu entorno virtual (llamado .venv) depende de tu terminal:

    python3 -m venv .venv
    source .venv/bin/activate
    pip install -r requirements.txt
    func start
    

    Cuando el host de Functions se inicia en la carpeta del proyecto local, escribe los puntos de conexión de dirección URL locales de las funciones desencadenadas por HTTP en la salida del terminal.

    Note

    Dado que la autorización de claves de acceso no se fuerza al ejecutarse localmente, no necesita una clave de acceso para llamar a la función.

  2. En el explorador, realice una solicitud GET al punto de conexión de inicio HTTP:

    http://localhost:7071/api/orchestrators/fetch_orchestration

    Esta solicitud inicia una nueva instancia de orquestación. La orquestación realiza una distribución ramificada de salida a varias actividades para recuperar los títulos de los artículos de Microsoft Learn en paralelo. Cuando finalicen las actividades, la orquestación converge de nuevo y devuelve los títulos como una cadena con formato.

  1. En tu terminal original, ve a la src carpeta de la app, instala las dependencias, construye el proyecto y inicia el host de Funciones:

    cd src
    npm install
    npm run build
    func start
    

    Cuando el host de Functions se inicia en la carpeta del proyecto local, escribe los puntos de conexión de dirección URL locales de las funciones desencadenadas por HTTP en la salida del terminal.

    Note

    Dado que la autorización de claves de acceso no se fuerza al ejecutarse localmente, no necesita una clave de acceso para llamar a la función.

  2. En el explorador, realice una solicitud GET al punto de conexión de inicio HTTP:

    http://localhost:7071/api/orchestrators/fetchOrchestration

    Esta solicitud inicia una nueva instancia de orquestación. La orquestación realiza una distribución ramificada de salida a varias actividades para recuperar los títulos de los artículos de Microsoft Learn en paralelo. Cuando finalicen las actividades, la orquestación converge de nuevo y devuelve los títulos como una cadena con formato.

  1. En tu terminal original, construye el proyecto y luego inicia el host de Funciones desde la carpeta de salida de compilación:

    mvn clean package
    cd target/azure-functions/durable-functions-quickstart
    func start
    

    Cuando el host de Functions se inicia en la carpeta del proyecto local, escribe los puntos de conexión de dirección URL locales de las funciones desencadenadas por HTTP en la salida del terminal.

    Note

    Dado que la autorización de claves de acceso no se fuerza al ejecutarse localmente, no necesita una clave de acceso para llamar a la función.

  2. En el explorador, realice una solicitud GET al punto de conexión que inicie la orquestación:

    http://localhost:7071/api/FetchOrchestration_HttpStart

    Esta solicitud inicia una nueva instancia de orquestación. La orquestación realiza una distribución ramificada de salida a varias actividades para recuperar los títulos de los artículos de Microsoft Learn en paralelo. Cuando finalicen las actividades, la orquestación converge de nuevo y devuelve los títulos como una cadena con formato.

  1. En tu terminal original, ve a la src carpeta de aplicaciones, instala dependencias y inicia el host de Funciones:

    cd src
    npm install
    func start
    

    Cuando el host de Functions se inicia en la carpeta del proyecto local, escribe los puntos de conexión de dirección URL locales de las funciones desencadenadas por HTTP en la salida del terminal.

    Note

    Dado que la autorización de claves de acceso no se fuerza al ejecutarse localmente, no necesita una clave de acceso para llamar a la función.

  2. En el explorador, realice una solicitud GET al punto de conexión que inicie la orquestación:

    http://localhost:7071/api/FetchOrchestration_HttpStart

    Esta solicitud inicia una nueva instancia de orquestación. La orquestación realiza una distribución ramificada de salida a varias actividades para recuperar los títulos de los artículos de Microsoft Learn en paralelo. Cuando finalicen las actividades, la orquestación converge de nuevo y devuelve los títulos como una cadena con formato.

  1. En tu terminal original, ve a la src carpeta de aplicaciones y inicia el host de Funciones:

    cd src
    func start
    

    Cuando el host de Functions se inicia en la carpeta del proyecto local, escribe los puntos de conexión de dirección URL locales de las funciones desencadenadas por HTTP en la salida del terminal.

    Note

    Dado que la autorización de claves de acceso no se fuerza al ejecutarse localmente, no necesita una clave de acceso para llamar a la función.

  2. En el explorador, realice una solicitud GET al punto de conexión que inicie la orquestación:

    http://localhost:7071/api/FetchOrchestration_HttpStart

    Esta solicitud inicia una nueva instancia de orquestación. La orquestación realiza una distribución ramificada de salida a varias actividades para recuperar los títulos de los artículos de Microsoft Learn en paralelo. Cuando finalicen las actividades, la orquestación converge de nuevo y devuelve los títulos como una cadena con formato.

  1. El punto de conexión HTTP devuelve una respuesta JSON con varias direcciones URL. El statusQueryGetUri extremo proporciona el estado de orquestación.

  2. Copie el valor del statusQueryGetUri y péguelo en su navegador o herramienta de prueba HTTP para comprobar el estado de la orquestación. Cuando se complete la orquestación, verá los títulos de artículos recuperados en la respuesta.

  3. Cuando haya terminado, presione Ctrl+C en la ventana del terminal para detener el proceso de host de func.

  1. Ejecute deactivate para apagar el entorno virtual.

Revisión del código (opcional)

Puede revisar el código que implementa el patrón de distribución ramificada de entrada y salida:

Se realiza un seguimiento de las actividades de captura de título mediante una lista de tareas dinámicas. La línea await Task.WhenAll(parallelTasks); espera a que se completen todas las actividades llamadas, que se ejecutan simultáneamente. Al terminar, todas las salidas se agregan como una cadena formateada.

[Function(nameof(FetchOrchestration))]
public static async Task<string> RunOrchestrator(
    [OrchestrationTrigger] TaskOrchestrationContext context)
{
    ILogger logger = context.CreateReplaySafeLogger(nameof(FetchOrchestration));
    logger.LogInformation("Fetching data.");
    var parallelTasks = new List<Task<string>>();
    
    // List of URLs to fetch titles from
    var urls = new List<string>
    {
        "https://learn.microsoft.com/azure/azure-functions/durable/durable-functions-overview",
        "https://learn.microsoft.com/azure/azure-functions/durable/durable-task-scheduler/durable-task-scheduler",
        "https://learn.microsoft.com/azure/azure-functions/functions-scenarios",
        "https://learn.microsoft.com/azure/azure-functions/functions-create-ai-enabled-apps",
    };

    // Run fetching tasks in parallel
    foreach (var url in urls)
    {
        Task<string> task = context.CallActivityAsync<string>(nameof(FetchTitleAsync), url);
        parallelTasks.Add(task);
    }
    
    // Wait for all the parallel tasks to complete before continuing
    await Task.WhenAll(parallelTasks);
   
    // Return fetched titles as a formatted string
    return string.Join("; ", parallelTasks.Select(t => t.Result));
}

Puede revisar el proyecto de plantilla completo here.

Se realiza un seguimiento de las actividades de captura de título mediante una lista de tareas dinámicas. La línea yield context.task_all(tasks) espera a que se completen todas las actividades llamadas, que se ejecutan simultáneamente. Al terminar, todas las salidas se agregan como una cadena formateada.

    # List of URLs to fetch titles from
    urls = [
        "https://learn.microsoft.com/azure/azure-functions/durable/durable-functions-overview",
        "https://learn.microsoft.com/azure/azure-functions/durable/durable-task-scheduler/durable-task-scheduler",
        "https://learn.microsoft.com/azure/azure-functions/functions-scenarios",
        "https://learn.microsoft.com/azure/azure-functions/functions-create-ai-enabled-apps",
    ]
    
    # Run fetching tasks in parallel
    tasks = []
    for url in urls:
        task = context.call_activity("fetch_title", url)
        tasks.append(task)
    
    # Wait for all the parallel tasks to complete before continuing
    results = yield context.task_all(tasks)
    
    # Return fetched titles as a formatted string
    return "; ".join(results)


@myApp.activity_trigger(input_name="url")
async def fetch_title(url: str):
    """Activity function that fetches the title from a URL."""
    logger = logging.getLogger("FetchTitle")
    logger.info(f"Fetching from url {url}.")
    
    try:
        async with ClientSession() as session:

Puede revisar el proyecto de plantilla completo here.

Se realiza un seguimiento de las actividades de captura de título mediante una lista de tareas dinámicas. La línea yield context.df.Task.all(parallelTasks) espera a que se completen todas las actividades llamadas, que se ejecutan simultáneamente. Al terminar, todas las salidas se agregan como una cadena formateada.

    const urls = [
        "https://learn.microsoft.com/azure/azure-functions/durable/durable-functions-overview",
        "https://learn.microsoft.com/azure/azure-functions/durable/durable-task-scheduler/durable-task-scheduler",
        "https://learn.microsoft.com/azure/azure-functions/functions-scenarios",
        "https://learn.microsoft.com/azure/azure-functions/functions-create-ai-enabled-apps",
    ];

    // Run fetching tasks in parallel
    const parallelTasks = [];
    for (const url of urls) {
        const task = context.df.callActivity(fetchTitleActivityName, url);
        parallelTasks.push(task);
    }

    // Wait for all the parallel tasks to complete before continuing
    const results: string[] = yield context.df.Task.all(parallelTasks);

    // Return fetched titles as a formatted string
    return results.join("; ");
};
df.app.orchestration("fetchOrchestration", fetchOrchestration);

const fetchTitleAsync: ActivityHandler = async function (
    url: string,
    context: InvocationContext

Puede revisar el proyecto de plantilla completo here.

Se realiza un seguimiento de las actividades de captura de título mediante una lista de tareas dinámicas. La línea ctx.allOf(parallelTasks).await() espera a que se completen todas las actividades llamadas, que se ejecutan simultáneamente. Al terminar, todas las salidas se agregan como una cadena formateada.

@FunctionName("FetchOrchestration")
public String runOrchestrator(
        @DurableOrchestrationTrigger(name = "taskOrchestrationContext") TaskOrchestrationContext ctx) {

    List<String> urls = List.of(
        "https://learn.microsoft.com/azure/azure-functions/durable/durable-functions-overview",
        "https://learn.microsoft.com/azure/azure-functions/durable/durable-task-scheduler/durable-task-scheduler",
        "https://learn.microsoft.com/azure/azure-functions/functions-scenarios",
        "https://learn.microsoft.com/azure/azure-functions/functions-create-ai-enabled-apps"
    );

    // Fan out: run fetching tasks in parallel
    List<Task<String>> parallelTasks = urls.stream()
        .map(url -> ctx.callActivity("FetchTitle", url, String.class))
        .collect(Collectors.toList());

    // Fan in: wait for all parallel tasks to complete
    List<String> results = ctx.allOf(parallelTasks).await();

    // Return fetched titles as a formatted string
    return String.join("; ", results);
}

Puede revisar el proyecto de plantilla completo here.

Se realiza un seguimiento de las actividades de captura de título mediante una lista de tareas dinámicas. La línea yield context.df.Task.all(parallelTasks) espera a que se completen todas las actividades llamadas, que se ejecutan simultáneamente. Al terminar, todas las salidas se agregan como una cadena formateada.

df.app.orchestration('fetchOrchestration', function* (context) {
    context.log("Fetching data.");

    const urls = [
        "https://learn.microsoft.com/azure/azure-functions/durable/durable-functions-overview",
        "https://learn.microsoft.com/azure/azure-functions/durable/durable-task-scheduler/durable-task-scheduler",
        "https://learn.microsoft.com/azure/azure-functions/functions-scenarios",
        "https://learn.microsoft.com/azure/azure-functions/functions-create-ai-enabled-apps",
    ];

    // Fan out: run fetching tasks in parallel
    const parallelTasks = urls.map(url => context.df.callActivity(activityName, url));

    // Fan in: wait for all parallel tasks to complete
    const results = yield context.df.Task.all(parallelTasks);

    // Return fetched titles as a formatted string
    return results.join("; ");
});

Puede revisar el proyecto de plantilla completo here.

Se realiza un seguimiento de las actividades de captura de título mediante una lista de tareas dinámicas. La línea Wait-ActivityFunction -Task $parallelTasks espera a que se completen todas las actividades llamadas, que se ejecutan simultáneamente. Al terminar, todas las salidas se agregan como una cadena formateada.

param($Context)

$urls = @(
    "https://learn.microsoft.com/azure/azure-functions/durable/durable-functions-overview",
    "https://learn.microsoft.com/azure/azure-functions/durable/durable-task-scheduler/durable-task-scheduler",
    "https://learn.microsoft.com/azure/azure-functions/functions-scenarios",
    "https://learn.microsoft.com/azure/azure-functions/functions-create-ai-enabled-apps"
)

# Fan out: run fetching tasks in parallel
$parallelTasks = @()
foreach ($url in $urls) {
    $parallelTasks += Invoke-DurableActivity -FunctionName 'FetchTitle' -Input $url -NoWait
}

# Fan in: wait for all parallel tasks to complete
$results = Wait-ActivityFunction -Task $parallelTasks

# Return fetched titles as a formatted string
$output = $results -join "; "
$output

Puede revisar el proyecto de plantilla completo here.

Después de verificar tus funciones localmente, es hora de desplegarlas en Azure.

Implementar en Azure

Ejecuta este comando desde la carpeta raíz del proyecto para desplegar tu proyecto de código en la aplicación de funciones en Azure:

azd deploy

El azd deploy comando empaqueta y despliega tu código en la aplicación de funciones creada durante el aprovisionamiento. Una vez completado el comando, la aplicación se inicia y se ejecuta en el paquete desplegado.

Invocación de la función en Azure

Ahora puede invocar el punto de conexión de orquestación en Azure realizando una solicitud HTTP a su dirección URL. Cuando sus funciones se ejecutan en Azure, se aplica la autorización mediante clave de acceso, y es necesario proporcionar una clave de acceso de función con la solicitud.

Puede usar Core Tools para obtener la URL del endpoint del desencadenador HTTP que inicia la orquestación en Azure.

  1. En el terminal local o el símbolo del sistema, ejecute estos comandos para obtener los valores del punto de conexión de dirección URL:

    APP_NAME=$(azd env get-value AZURE_FUNCTION_NAME)
    func azure functionapp list-functions $APP_NAME --show-keys
    

    El comando azd env get-value obtiene el nombre de la aplicación de funciones del entorno local. Cuando se usa la --show-keys opción con func azure functionapp list-functions, el valor de Invoke URL: devuelto para cada punto de conexión incluye las claves de acceso de nivel de función necesarias.

  2. Usa un navegador o una herramienta de prueba HTTP para hacer una petición GET al endpoint HTTP start y así iniciar la orquestación en tu app de funciones que se ejecuta en Azure.

Reimplementación del código

Ejecuta azd deploy tantas veces como necesites para desplegar actualizaciones de código en tu app de funciones. Si necesitas actualizar los recursos de Azure, vuelve a ejecutarloazd provision.

Note

El paquete de implementación más reciente siempre sobrescribe los archivos de código implementados.

Las respuestas iniciales a azd mensajes y las variables de entorno generadas por azd se almacenan localmente en el entorno con nombre. Use el azd env get-values comando para revisar todas las variables del entorno que usó al crear recursos de Azure.

Limpieza de recursos

Cuando haya terminado de trabajar con la aplicación de funciones y los recursos relacionados, use este comando para eliminar la aplicación de funciones y sus recursos relacionados de Azure y evitar incurrir en costos adicionales:

azd down --no-prompt

Note

La --no-prompt opción indica azd que elimine el grupo de recursos sin una confirmación de usted.

Este comando no afecta al proyecto de código local.