Cómo depurar problemas de DAG de memoria insuficiente y almacenamiento insuficiente

Cloud Composer 3 | Cloud Composer 2 | Cloud Composer 1

En este instructivo, se proporcionan los pasos para depurar un DAG de Airflow con errores en Cloud Composer y diagnosticar problemas relacionados con los recursos de los trabajadores, como la falta de memoria o espacio de almacenamiento del trabajador, con la ayuda de los registros y la supervisión del entorno.

Introducción

En este instructivo, se abordan problemas relacionados con los recursos para demostrar formas de depurar un DAG.

La falta de recursos de trabajadores asignados provoca fallas en los DAG. Si una tarea de Airflow se queda sin memoria o almacenamiento, es posible que veas una excepción de Airflow, como la siguiente:

WARNING airflow.exceptions.AirflowException: Task received SIGTERM signal
INFO - Marking task as FAILED.

o

Task exited with return code Negsignal.SIGKILL

En estos casos, la recomendación general es aumentar los recursos de los trabajadores de Airflow o reducir la cantidad de tareas por trabajador. Sin embargo, como las excepciones de Airflow pueden ser genéricas, es posible que sea difícil identificar el recurso específico que está causando el problema.

En este instructivo, se explica cómo diagnosticar el motivo de una falla del DAG y cómo identificar el tipo de recurso que causa problemas. Para ello, se depuran dos DAGs de ejemplo que fallan debido a la falta de memoria y almacenamiento del trabajador.

Objetivos

  • Ejecuta DAGs de ejemplo que fallan por los siguientes motivos:

    • Falta de memoria del trabajador
    • Falta de almacenamiento del trabajador
  • Diagnostica los motivos de la falla

  • Aumenta los recursos de trabajadores asignados

  • Prueba los DAG con nuevos límites de recursos

Costos

En este instructivo, se usan los siguientes componentes facturables de Google Cloud:

Cuando finalices este instructivo, puedes borrar los recursos creados para evitar que se te siga facturando. Para obtener más información, consulta Realiza una limpieza.

Antes de comenzar

En esta sección, se describen las acciones que debes realizar antes de comenzar el instructivo.

Crea y configura un proyecto

Para este instructivo, necesitas un Google Cloud proyecto. Configura el proyecto de la siguiente manera:

  1. En la Google Cloud consola, selecciona o crea un proyecto:

    Ir al selector de proyectos

  2. Asegúrate de tener habilitada la facturación para tu proyecto. Obtén información para verificar si la facturación está habilitada en un proyecto.

  3. Asegúrate de que el usuario del proyecto Google Cloud tenga los siguientes roles para crear los recursos necesarios:

    • Administrador de objetos de almacenamiento y entorno (roles/composer.environmentAndStorageObjectAdmin)
    • Administrador de Compute (roles/compute.admin)
    • Editor de Monitoring (roles/monitoring.editor)

Habilita las API para tu proyecto.

Enable the Cloud Composer API.

Enable the API

Crea tu entorno de Cloud Composer

Crea un entorno de Cloud Composer 2.

Como parte de la creación del entorno, le otorgas el rol Extensión del agente de servicio de la API de Cloud Composer v2 (roles/composer.ServiceAgentV2Ext) a la cuenta del agente de servicio de Composer. Cloud Composer usa esta cuenta para realizar operaciones en tu proyecto Google Cloud .

Verifica los límites de recursos de los trabajadores

Verifica los límites de recursos de los trabajadores de Airflow en tu entorno:

  1. En la consola de Google Cloud , ve a la página Entornos.

    Ir a Entornos

  2. En la lista de entornos, haz clic en el nombre de tu entorno. Se abrirá la página Detalles del entorno.

  3. Ve a la pestaña Configuración del entorno.

  4. Ve a Recursos > Configuración de cargas de trabajo > Worker.

  5. Verifica que los valores sean 0.5 CPU virtuales, 1.875 GB de memoria y 1 GB de almacenamiento. Estos son los límites de recursos de los trabajadores de Airflow con los que trabajarás en los próximos pasos de este instructivo.

Ejemplo: Diagnostica problemas de memoria insuficiente

Sube el siguiente DAG de ejemplo al entorno que creaste en los pasos anteriores. En este instructivo, este DAG se llama create_list_with_many_strings.

Este DAG contiene una tarea que ejecuta los siguientes pasos:

  1. Crea una lista vacía s.
  2. Ejecuta un ciclo para anexar la cadena More a la lista.
  3. Imprime cuánta memoria consume la lista y espera 1 segundo en cada iteración de 1 minuto.
import time

import airflow
from airflow import DAG
from airflow.operators.python_operator import PythonOperator
import sys
from datetime import timedelta

default_args = {
    'start_date': airflow.utils.dates.days_ago(0),
    'retries': 0,
    'retry_delay': timedelta(minutes=10)
}

dag = DAG(
    'create_list_with_many_strings',
    default_args=default_args,
    schedule_interval=None)


def consume():
    s = []
    for i in range(120):
        for j in range(1000000):
            s.append("More")
        print(f"i={i}; size={sys.getsizeof(s) / (1000**3)}GB")
        time.sleep(1)


t1 = PythonOperator(
    task_id='task0',
    python_callable=consume,
    dag=dag,
    depends_on_past=False,
    retries=0
)

Activa el DAG de muestra

Activa el DAG de muestra, create_list_with_many_strings:

  1. En la consola de Google Cloud , ve a la página Entornos.

    Ir a Entornos

  2. En la columna Servidor web de Airflow, sigue el vínculo de Airflow para tu entorno.

  3. En la interfaz web de Airflow, en la página DAG, en la columna Vínculos de tu DAG, haz clic en el botón Activar DAG.

  4. Haz clic en Activar.

  5. En la página DAGs, haz clic en la tarea que activaste y revisa los registros de salida para asegurarte de que el DAG haya comenzado a ejecutarse.

Mientras se ejecuta la tarea, los registros de salida imprimirán el tamaño de la memoria en GB que usa el DAG.

Después de varios minutos, la tarea fallará porque supera el límite de memoria del trabajador de Airflow de 1.875 GB.

Diagnostica el DAG con errores

Si ejecutabas varias tareas en el momento de la falla, considera ejecutar solo una y diagnosticar la presión de recursos durante ese tiempo para identificar qué tareas causan presión de recursos y qué recursos debes aumentar.

Revisa los registros de tareas de Airflow

Observa que la tarea del DAG create_list_with_many_strings tiene un estado Failed.

Revisa los registros de la tarea. Verás la siguiente entrada de registro:

```none
{local_task_job.py:102} INFO - Task exited with return code
Negsignal.SIGKILL
```

`Netsignal.SIGKILL` might be an indication of your task using more memory
than the Airflow worker is allocated. The system sends
the `Negsignal.SIGKILL` signal to avoid further memory consumption.

Revisa las cargas de trabajo

Revisa las cargas de trabajo para verificar que la carga de tu tarea no haga que el nodo en el que se ejecuta el Pod supere el límite de consumo de memoria:

  1. En la consola de Google Cloud , ve a la página Entornos.

    Ir a Entornos

  2. En la lista de entornos, haz clic en el nombre de tu entorno. Se abrirá la página Detalles del entorno.

  3. Ve a la pestaña Configuración del entorno.

  4. En Recursos > Clúster de GKE > Cargas de trabajo, haz clic en Ver cargas de trabajo del clúster.

  5. Verifica si algunos de los Pods de la carga de trabajo tienen estados similares a los siguientes:

    Error with exit code 137 and 1 more issue.
    ContainerStatusUnknown with exit code 137 and 1 more issue
    

    Exit code 137 significa que un contenedor o Pod está intentando usar más memoria de la permitida. El proceso se finaliza para evitar el uso de memoria.

Revisa la supervisión del estado del entorno y el consumo de recursos

Revisa la supervisión del estado del entorno y el consumo de recursos:

  1. En la consola de Google Cloud , ve a la página Entornos.

    Ir a Entornos

  2. En la lista de entornos, haz clic en el nombre de tu entorno. Se abrirá la página Detalles del entorno.

  3. Ve a la pestaña Monitoring y selecciona Overview.

  4. En el panel Descripción general del entorno, busca el gráfico Estado del entorno (DAG de supervisión de Airflow). Contiene un área roja, que corresponde al momento en que los registros comenzaron a imprimir errores.

  5. Selecciona Trabajadores y busca el gráfico Uso total de la memoria de trabajadores. Observa que la línea de Uso de memoria tiene un pico en el momento en que se ejecutaba la tarea.

La línea de uso de memoria tiene un pico en el momento en que se ejecutaba la tarea.
Figura 1. Gráfico del uso total de la memoria de los trabajadores (haz clic para ampliar)

Aunque la línea de uso de memoria en el gráfico no alcance el límite, cuando diagnostiques los motivos de la falla, deberás tener en cuenta el uso de memoria de cada trabajador. Cada trabajador usa una parte de su memoria para ejecutar otros contenedores que realizan acciones necesarias para el funcionamiento del trabajador, como sincronizar sus archivos DAG con el bucket del entorno. La cantidad real de memoria disponible para que un trabajador ejecute tareas de Airflow es inferior a su límite de memoria. Si un trabajador alcanza el límite de la memoria real disponible, la tarea ejecutada puede fallar debido a que no hay suficiente memoria del trabajador. En esos casos, puedes observar fallas en las tareas, aunque la línea del gráfico de uso total de memoria de los trabajadores no alcance el límite de memoria.

Aumenta el límite de memoria del trabajador

Asigna memoria adicional al trabajador para que el DAG de muestra se ejecute correctamente:

  1. En la consola de Google Cloud , ve a la página Entornos.

    Ir a Entornos

  2. En la lista de entornos, haz clic en el nombre de tu entorno. Se abrirá la página Detalles del entorno.

  3. Ve a la pestaña Configuración del entorno.

  4. Busca la configuración de Recursos > Cargas de trabajo y haz clic en Editar.

  5. En la sección Trabajador, en el campo Memoria, especifica el nuevo límite de memoria para los trabajadores de Airflow. En este instructivo, usa 3 GB.

  6. Guarda los cambios y espera varios minutos para que se reinicien los trabajadores de Airflow.

Prueba tu DAG con el nuevo límite de memoria

Vuelve a activar el DAG create_list_with_many_strings y espera hasta que termine de ejecutarse.

  1. En los registros de salida de la ejecución del DAG, verás Marking task as SUCCESS y el estado de la tarea indicará Success.

  2. Revisa la sección Descripción general del entorno en la pestaña Supervisión y asegúrate de que no haya áreas rojas.

  3. Haz clic en la sección Trabajadores y busca el gráfico Uso total de la memoria de trabajadores. Verás que la línea Límite de memoria refleja el cambio en el límite de memoria y que la línea Uso de memoria está muy por debajo del límite de memoria asignable real.

Ejemplo: Diagnostica problemas de falta de almacenamiento

En este paso, subirás dos DAGs que crean archivos grandes. El primer DAG crea un archivo grande. El segundo DAG crea un archivo grande y simula una operación de larga duración.

El tamaño del archivo en ambos DAGs supera el límite predeterminado de almacenamiento del trabajador de Airflow de 1 GB, pero el segundo DAG tiene una tarea de espera adicional para extender su duración de forma artificial.

En los próximos pasos, investigarás las diferencias en el comportamiento de ambos DAG.

Sube un DAG que cree un archivo grande

Sube el siguiente DAG de ejemplo al entorno que creaste en los pasos anteriores. En este instructivo, este DAG se llama create_large_txt_file_print_logs.

Este DAG contiene una tarea que ejecuta los siguientes pasos:

  1. Escribe un archivo localfile.txt de 1.5 GB en el almacenamiento del trabajador de Airflow.
  2. Imprime el tamaño del archivo creado con el módulo os de Python.
  3. Imprime la duración de la ejecución del DAG cada 1 minuto.
import airflow
from airflow import DAG
from airflow.operators.python_operator import PythonOperator
import os
from datetime import timedelta
import time

default_args = {
    'start_date': airflow.utils.dates.days_ago(0),
    'retries': 0,
    'retry_delay': timedelta(minutes=10)
}

dag = DAG(
    'create_large_txt_file_print_logs',
    default_args=default_args,
    schedule_interval=None)


def consume():
    size = 1000**2  # bytes in 1 MB
    amount = 100

    def create_file():
        print(f"Start creating a huge file")
        with open("localfile.txt", "ab") as f:
            for j in range(15):
                f.write(os.urandom(amount) * size)
        print("localfile.txt size:", os.stat("localfile.txt").st_size / (1000**3), "GB")

    create_file()
    print("Success!")


t1 = PythonOperator(
    task_id='create_huge_file',
    python_callable=consume,
    dag=dag,
    depends_on_past=False,
    retries=0)

Sube un DAG que cree un archivo grande en una operación de larga duración

Para imitar un DAG de ejecución prolongada y analizar el impacto de la duración de la tarea en el estado final, sube el segundo DAG de muestra a tu entorno. En este instructivo, este DAG se llama long_running_create_large_txt_file_print_logs.

Este DAG contiene una tarea que ejecuta los siguientes pasos:

  1. Escribe un archivo localfile.txt de 1.5 GB en el almacenamiento del trabajador de Airflow.
  2. Imprime el tamaño del archivo creado con el módulo os de Python.
  3. Espera 1 hora y 15 minutos para imitar el tiempo necesario para las operaciones con el archivo, por ejemplo, la lectura del archivo.
  4. Imprime la duración de la ejecución del DAG cada 1 minuto.
import airflow
from airflow import DAG
from airflow.operators.python_operator import PythonOperator
import os
from datetime import timedelta
import time

default_args = {
    'start_date': airflow.utils.dates.days_ago(0),
    'retries': 0,
    'retry_delay': timedelta(minutes=10)
}

dag = DAG(
    'long_running_create_large_txt_file_print_logs',
    default_args=default_args,
    schedule_interval=None)


def consume():
    size = 1000**2  # bytes in 1 MB
    amount = 100

    def create_file():
        print(f"Start creating a huge file")
        with open("localfile.txt", "ab") as f:
            for j in range(15):
                f.write(os.urandom(amount) * size)
        print("localfile.txt size:", os.stat("localfile.txt").st_size / (1000**3), "GB")

    create_file()
    for k in range(75):
        time.sleep(60)
        print(f"{k+1} minute")

    print("Success!")


t1 = PythonOperator(
    task_id='create_huge_file',
    python_callable=consume,
    dag=dag,
    depends_on_past=False,
    retries=0)

Activa DAGs de muestra

Activa el primer DAG, create_large_txt_file_print_logs:

  1. En la consola de Google Cloud , ve a la página Entornos.

    Ir a Entornos

  2. En la columna Servidor web de Airflow, sigue el vínculo de Airflow para tu entorno.

  3. En la interfaz web de Airflow, en la página DAG, en la columna Vínculos de tu DAG, haz clic en el botón Activar DAG.

  4. Haz clic en Activar.

  5. En la página DAGs, haz clic en la tarea que activaste y revisa los registros de salida para asegurarte de que el DAG haya comenzado a ejecutarse.

  6. Espera hasta que se complete la tarea que creaste con el DAG de create_large_txt_file_print_logs. Esto podría tardar varios minutos.

  7. En la página DAGs, haz clic en la ejecución del DAG. Verás que tu tarea tiene el estado Success, aunque se haya superado el límite de almacenamiento.

Revisa los registros de Airflow de la tarea:

  1. En la consola de Google Cloud , ve a la página Entornos.

    Ir a Entornos

    1. En la lista de entornos, haz clic en el nombre de tu entorno. Se abrirá la página Detalles del entorno.

    2. Ve a la pestaña Registros y, luego, a Todos los registros > Registros de Airflow > Trabajadores > Ver en el Explorador de registros.

    3. Filtra los registros por tipo: muestra solo los mensajes de Error.

En los registros, verás mensajes similares a los siguientes:

Worker: warm shutdown (Main Process)

o

A worker pod was evicted at 2023-12-01T12:30:05Z with message: Pod ephemeral
local storage usage exceeds the total limit of containers 1023Mi.

Estos registros indican que el pod inició el proceso de "cierre en caliente" porque el almacenamiento utilizado superó el límite y se desalojó en 1 hora. Sin embargo, la ejecución del DAG no falló porque se completó dentro del período de gracia de finalización de Kubernetes, que se explica con más detalle en este instructivo.

Para ilustrar el concepto del período de gracia de finalización, revisa el resultado del segundo DAG de ejemplo, long_running_create_large_txt_file_print_logs.

Activa el segundo DAG, long_running_create_large_txt_file_print_logs:

  1. En la consola de Google Cloud , ve a la página Entornos.

    Ir a Entornos

  2. En la columna Servidor web de Airflow, sigue el vínculo de Airflow para tu entorno.

  3. En la interfaz web de Airflow, en la página DAG, en la columna Vínculos de tu DAG, haz clic en el botón Activar DAG.

  4. Haz clic en Activar.

  5. En la página DAGs, haz clic en la tarea que activaste y revisa los registros de salida para asegurarte de que el DAG haya comenzado a ejecutarse.

  6. Espera hasta que falle la ejecución del DAG long_running_create_large_txt_file_print_logs. Este proceso tardará aproximadamente una hora.

Revisa los resultados de la ejecución del DAG:

  1. En la página DAGs, haz clic en la ejecución del DAG long_running_create_large_txt_file_print_logs. Verás que la tarea tiene un estado Failed y que la duración de la ejecución fue de exactamente 1 hora y 5 minutos, lo que es menos que el período de espera de la tarea de 1 hora y 15 minutos.

  2. Revisa los registros de la tarea. Una vez que el DAG creó el archivo localfile.txt en el contenedor del trabajador de Airflow, el registro indica que el DAG comenzó a esperar y la duración de la ejecución se imprime en los registros de la tarea cada 1 minuto. En este ejemplo, el DAG imprime el registro localfile.txt size: y el tamaño del archivo localfile.txt será de 1.5 GB.

Una vez que el archivo escrito en el contenedor del trabajador de Airflow supera el límite de almacenamiento, se supone que la ejecución del DAG falla. Sin embargo, la tarea no falla de inmediato y sigue ejecutándose hasta que su duración alcanza 1 hora y 5 minutos. Esto sucede porque Kubernetes no detiene la tarea de inmediato y sigue ejecutándose para permitir 1 hora de tiempo de recuperación, conocido como el "período de gracia de finalización". Una vez que un nodo se queda sin recursos, Kubernetes no finaliza el Pod de inmediato para controlar la finalización de forma correcta, de modo que el impacto en el usuario final sea mínimo.

El período de gracia de finalización ayuda a los usuarios a recuperar archivos después de fallas en las tareas, pero puede generar confusión al diagnosticar DAGs. Cuando se supera el límite de almacenamiento del trabajador de Airflow, el estado de la tarea final depende de la duración de la ejecución del DAG:

  • Si la ejecución del DAG supera el límite de almacenamiento del trabajador, pero se completa en menos de 1 hora, la tarea se completa con el estado Success porque se completó dentro del período de gracia de finalización. Sin embargo, Kubernetes finaliza el Pod y el archivo escrito se borra del contenedor de inmediato.

  • Si el DAG supera el límite de almacenamiento del trabajador y se ejecuta durante más de 1 hora, el DAG seguirá ejecutándose durante 1 hora y puede superar el límite de almacenamiento en miles de porcentajes antes de que Kubernetes elimine el Pod y Airflow marque la tarea como Failed.

Diagnostica el DAG con errores

Si ejecutabas varias tareas en el momento de la falla, considera ejecutar solo una y diagnosticar la presión de recursos durante ese tiempo para identificar qué tareas causan presión de recursos y qué recursos debes aumentar.

Revisa los registros de tareas del segundo DAG, long_running_create_large_txt_file_print_logs:

  1. En la consola de Google Cloud , ve a la página Entornos.

    Ir a Entornos

  2. En la lista de entornos, haz clic en el nombre de tu entorno. Se abrirá la página Detalles del entorno.

  3. Ve a la pestaña Registros y, luego, a Todos los registros > Registros de Airflow > Trabajadores > Ver en el Explorador de registros.

  4. Filtra los registros por tipo: muestra solo los mensajes de Error.

En los registros, verás mensajes similares a los siguientes:

Container storage usage of worker reached 155.7% of the limit.

This likely means that the total size of local files generated by your DAGs is
close to the storage limit of worker.

You may need to decrease the storage usage or increase the worker storage limit
in your Cloud Composer environment configuration.

o

Pod storage usage of worker reached 140.2% of the limit.
A worker pod was evicted at 2023-12-01T12:30:05Z with message: Pod ephemeral
local storage usage exceeds the total limit of containers 1023Mi.

This eviction likely means that the total size of dags and plugins folders plus
local files generated by your DAGs exceeds the storage limit of worker.

Please decrease the storage usage or increase the worker storage limit in your
Cloud Composer environment configuration.

Estos mensajes indican que, a medida que avanzaba la tarea, los registros de Airflow comenzaron a imprimir errores cuando el tamaño de los archivos generados por tu DAG superó el límite de almacenamiento del trabajador y comenzó el período de gracia de finalización. Durante el período de gracia de finalización, el consumo de almacenamiento no volvió al límite, lo que provocó el desalojo del Pod después de que finalizó el período de gracia de finalización.

Revisa la supervisión del estado del entorno y el consumo de recursos:

  1. En la consola de Google Cloud , ve a la página Entornos.

    Ir a Entornos

  2. En la lista de entornos, haz clic en el nombre de tu entorno. Se abrirá la página Detalles del entorno.

  3. Ve a la pestaña Monitoring y selecciona Overview.

  4. En el panel Descripción general del entorno, busca el gráfico Estado del entorno (DAG de supervisión de Airflow). Contiene un área roja, que corresponde al momento en que los registros comenzaron a imprimir errores.

  5. Selecciona Trabajadores y busca el gráfico Uso total del disco de trabajadores. Observa que la línea de Uso del disco tiene un pico y supera la línea de Límite de disco en el momento en que se ejecutaba tu tarea.

La línea de uso del disco tiene un pico y supera la línea de límite del disco en el momento en que se ejecutaba tu tarea.
Figura 2: Gráfico del uso total del disco de los trabajadores (haz clic para ampliar)

Aumenta el límite de almacenamiento del trabajador

Asigna almacenamiento adicional para los trabajadores de Airflow para que el DAG de muestra se ejecute correctamente:

  1. En la consola de Google Cloud , ve a la página Entornos.

    Ir a Entornos

  2. En la lista de entornos, haz clic en el nombre de tu entorno. Se abrirá la página Detalles del entorno.

  3. Ve a la pestaña Configuración del entorno.

  4. Busca la configuración de Recursos > Cargas de trabajo y haz clic en Editar.

  5. En la sección Trabajador, en el campo Almacenamiento, especifica el nuevo límite de almacenamiento para los trabajadores de Airflow. En este instructivo, establécelo en 2 GB.

  6. Guarda los cambios y espera varios minutos para que se reinicien los trabajadores de Airflow.

Prueba tu DAG con el nuevo límite de almacenamiento

Vuelve a activar el DAG de long_running_create_large_txt_file_print_logs y espera 1 hora y 15 minutos hasta que termine de ejecutarse.

  1. En los registros de salida de la ejecución del DAG, verás Marking task as SUCCESS, y el estado de la tarea indicará Success, con una duración de 1 hora y 15 minutos, que es igual al tiempo de espera establecido en el código del DAG.

  2. Revisa la sección Descripción general del entorno en la pestaña Supervisión y asegúrate de que no haya áreas rojas.

  3. Haz clic en la sección Trabajadores y busca el gráfico Uso total del disco de trabajadores. Verás que la línea Límite de disco refleja el cambio en el límite de almacenamiento y que la línea Uso del disco se encuentra dentro del rango permitido.

Resumen

En este instructivo, diagnosticaste el motivo de la falla de un DAG y, luego, identificaste el tipo de recurso que causa presión. Para ello, depuraste dos DAG de ejemplo que fallan debido a la falta de memoria y almacenamiento del trabajador. Luego, ejecutaste los DAG correctamente después de asignar más memoria y almacenamiento a tus trabajadores. Sin embargo, se recomienda optimizar tus DAG (flujos de trabajo) para reducir el consumo de recursos de los trabajadores en primer lugar, ya que no es posible aumentar los recursos más allá de un cierto umbral.

Limpia

Para evitar que se apliquen cargos a tu Google Cloud cuenta por los recursos usados en este instructivo, borra el proyecto que contiene los recursos o conserva el proyecto y borra los recursos individuales.

Borra el proyecto

  1. In the Google Cloud console, go to the Manage resources page.

    Go to Manage resources

  2. In the project list, select the project that you want to delete, and then click Delete.
  3. In the dialog, type the project ID, and then click Shut down to delete the project.

Borra los recursos individuales

Si planeas explorar varios instructivos y guías de inicio rápido, la reutilización de proyectos puede ayudarte a evitar exceder los límites de las cuotas del proyecto.

Borra el entorno de Cloud Composer. También borrarás el bucket del entorno durante este procedimiento.

¿Qué sigue?