Pianifica l'avvio o l'arresto di una VM di Compute Engine


Questo tutorial mostra come utilizzare Cloud Scheduler e Cloud Functions per avviare e arrestare automaticamente le istanze di Compute Engine in base a una pianificazione regolare utilizzando le etichette delle risorse.

Obiettivi

  • Scrivi ed esegui il deployment di un insieme di funzioni con Cloud Functions che avviano e interrompono le istanze di Compute Engine.
  • Crea un insieme di job con Cloud Scheduler che pianificano le istanze con etichetta di risorsa dev in modo che vengano eseguite dalle 09:00 alle 17:00, dal lunedì al venerdì, in base al tipico orario di lavoro.

Costi

In questo documento vengono utilizzati i seguenti componenti fatturabili di Google Cloud:

  • Cloud Scheduler
  • Cloud Functions
  • Pub/Sub
  • Compute Engine

Per generare una stima dei costi in base all'utilizzo previsto, utilizza il Calcolatore prezzi. I nuovi utenti di Google Cloud possono essere idonei a una prova senza costi aggiuntivi.

Prima di iniziare

  1. Configura il tuo ambiente per Cloud Scheduler.

    Configurazione dell'ambiente

  2. Abilita le API Cloud Functions, Pub/Sub, and Compute Engine.

    Abilita le API

Architettura dell'applicazione

Questa soluzione include i seguenti componenti di Google Cloud:

Diagramma dell'architettura di sistema che mostra Cloud Scheduler che pianifica un'istanza Compute Engine tramite Pub/Sub

Requisiti per le località

Alcuni componenti sono supportati solo in determinate regioni:

  • Istanza Compute Engine: supportata in qualsiasi regione elencata in Regioni e zone.
  • Cloud Functions: supportato nelle regioni elencate in Località.
  • Messaggi Pub/Sub: supportati a livello globale poiché Pub/Sub è un servizio globale.
  • Job Cloud Scheduler con destinazioni Pub/Sub: supportati in qualsiasi località Google Cloud.

Perché non HTTP anziché Pub/Sub?

Potresti voler semplificare questa architettura utilizzando i trigger HTTP di Cloud Functions anziché i trigger di Pub/Sub.

Questo tutorial utilizza Pub/Sub come trigger di Cloud Functions perché in precedenza questo metodo era più sicuro dell'utilizzo di HTTP. Tuttavia, anche HTTP è una scelta valida e ora può essere protetto richiedendo l'autenticazione.

Per informazioni sulla protezione di Cloud Functions, consulta la panoramica sulla sicurezza di Cloud Functions. Per un confronto tra i trigger HTTP e Pub/Sub, consulta la documentazione sui trigger di Cloud Functions.

Configura l'istanza Compute Engine

Console

  1. Vai alla pagina Istanze VM nella console Google Cloud.
    Vai alla pagina Istanze VM.
  2. Fai clic su Crea istanza.
  3. Imposta il campo Nome su dev-instance.
  4. In Etichette, fai clic su Aggiungi etichette.
  5. Fai clic su Aggiungi etichetta.
  6. Inserisci env per Chiave e dev per Valore.
  7. In Regione, seleziona us-west1.
  8. In Zona seleziona us-west1-b.
  9. Fai clic su Salva.
  10. Fai clic su Crea nella parte inferiore della pagina.

gcloud

gcloud compute instances create dev-instance \
    --network default \
    --zone us-west1-b \
    --labels=env=dev

Esegui il deployment delle funzioni attivate da Pub/Sub tramite Cloud Functions

Crea ed esegui il deployment delle funzioni

Console

Crea la funzione iniziale.

  1. Vai alla pagina Cloud Functions nella console Google Cloud.
    Vai alla pagina Cloud Functions.
  2. Fai clic su Crea funzione.
  3. Per Ambiente, seleziona 1ª generazione.
  4. Imposta Nome funzione su startInstancePubSub.
  5. Lascia invariato il valore predefinito per Regione.
  6. In Tipo di trigger, seleziona Cloud Pub/Sub.
  7. In Seleziona un argomento Cloud Pub/Sub, fai clic su Crea un argomento.
  8. Dovrebbe essere visualizzata una finestra di dialogo Crea argomento.
    1. In ID argomento, inserisci start-instance-event.
    2. Fai clic su Crea per terminare la finestra di dialogo.
  9. Fai clic su Salva nella parte inferiore della casella Attivatore.
  10. Fai clic su Avanti nella parte inferiore della pagina.
  11. Per Runtime, seleziona Node.js 16 o versioni successive.
  12. In Punto di ingresso, inserisci startInstancePubSub.
  13. Sul lato sinistro dell'editor di codice, seleziona index.js.
  14. Sostituisci il codice di avvio con il seguente codice:

    const compute = require('@google-cloud/compute');
    const instancesClient = new compute.InstancesClient();
    const operationsClient = new compute.ZoneOperationsClient();
    
    async function waitForOperation(projectId, operation) {
      while (operation.status !== 'DONE') {
        [operation] = await operationsClient.wait({
          operation: operation.name,
          project: projectId,
          zone: operation.zone.split('/').pop(),
        });
      }
    }
    
    /**
     * Starts Compute Engine instances.
     *
     * Expects a PubSub message with JSON-formatted event data containing the
     * following attributes:
     *  zone - the GCP zone the instances are located in.
     *  label - the label of instances to start.
     *
     * @param {!object} event Cloud Function PubSub message event.
     * @param {!object} callback Cloud Function PubSub callback indicating
     *  completion.
     */
    exports.startInstancePubSub = async (event, context, callback) => {
      try {
        const project = await instancesClient.getProjectId();
        const payload = _validatePayload(event);
        const options = {
          filter: `labels.${payload.label}`,
          project,
          zone: payload.zone,
        };
    
        const [instances] = await instancesClient.list(options);
    
        await Promise.all(
          instances.map(async instance => {
            const [response] = await instancesClient.start({
              project,
              zone: payload.zone,
              instance: instance.name,
            });
    
            return waitForOperation(project, response.latestResponse);
          })
        );
    
        // Operation complete. Instance successfully started.
        const message = 'Successfully started instance(s)';
        console.log(message);
        callback(null, message);
      } catch (err) {
        console.log(err);
        callback(err);
      }
    };
    
    /**
     * Validates that a request payload contains the expected fields.
     *
     * @param {!object} payload the request payload to validate.
     * @return {!object} the payload object.
     */
    const _validatePayload = event => {
      let payload;
      try {
        payload = JSON.parse(Buffer.from(event.data, 'base64').toString());
      } catch (err) {
        throw new Error('Invalid Pub/Sub message: ' + err);
      }
      if (!payload.zone) {
        throw new Error("Attribute 'zone' missing from payload");
      } else if (!payload.label) {
        throw new Error("Attribute 'label' missing from payload");
      }
      return payload;
    };
  15. Sul lato sinistro dell'editor di codice, seleziona package.json.

  16. Sostituisci il codice di avvio con il seguente codice:

    {
      "name": "cloud-functions-schedule-instance",
      "version": "0.1.0",
      "private": true,
      "license": "Apache-2.0",
      "author": "Google Inc.",
      "repository": {
        "type": "git",
        "url": "https://github.com/GoogleCloudPlatform/nodejs-docs-samples.git"
      },
      "engines": {
        "node": ">=16.0.0"
      },
      "scripts": {
        "test": "c8 mocha -p -j 2 test/*.test.js --timeout=20000"
      },
      "devDependencies": {
        "c8": "^8.0.0",
        "mocha": "^10.0.0",
        "proxyquire": "^2.0.0",
        "sinon": "^16.0.0"
      },
      "dependencies": {
        "@google-cloud/compute": "^4.0.0"
      }
    }
    
  17. Fai clic su Esegui il deployment nella parte inferiore della pagina.

Crea la funzione di interruzione.

  1. Dovresti essere nella pagina Cloud Functions della console Google Cloud.
  2. Fai clic su Crea funzione.
  3. Per Ambiente, seleziona 1ª generazione.
  4. Imposta Nome funzione su stopInstancePubSub.
  5. Lascia invariato il valore predefinito per Regione.
  6. In Tipo di trigger, seleziona Cloud Pub/Sub.
  7. In Seleziona un argomento Cloud Pub/Sub, fai clic su Crea un argomento.
  8. Dovrebbe essere visualizzata una finestra di dialogo Crea argomento.
    1. In ID argomento, inserisci stop-instance-event.
    2. Fai clic su Crea per terminare la finestra di dialogo.
  9. Fai clic su Salva nella parte inferiore della casella Attivatore.
  10. Fai clic su Avanti nella parte inferiore della pagina.
  11. Per Runtime, seleziona Node.js 16 o versioni successive.
  12. In Punto di ingresso, inserisci stopInstancePubSub.
  13. Sul lato sinistro dell'editor di codice, seleziona index.js.
  14. Sostituisci il codice di avvio con il seguente codice:

    const compute = require('@google-cloud/compute');
    const instancesClient = new compute.InstancesClient();
    const operationsClient = new compute.ZoneOperationsClient();
    
    async function waitForOperation(projectId, operation) {
      while (operation.status !== 'DONE') {
        [operation] = await operationsClient.wait({
          operation: operation.name,
          project: projectId,
          zone: operation.zone.split('/').pop(),
        });
      }
    }
    
    /**
     * Stops Compute Engine instances.
     *
     * Expects a PubSub message with JSON-formatted event data containing the
     * following attributes:
     *  zone - the GCP zone the instances are located in.
     *  label - the label of instances to stop.
     *
     * @param {!object} event Cloud Function PubSub message event.
     * @param {!object} callback Cloud Function PubSub callback indicating completion.
     */
    exports.stopInstancePubSub = async (event, context, callback) => {
      try {
        const project = await instancesClient.getProjectId();
        const payload = _validatePayload(event);
        const options = {
          filter: `labels.${payload.label}`,
          project,
          zone: payload.zone,
        };
    
        const [instances] = await instancesClient.list(options);
    
        await Promise.all(
          instances.map(async instance => {
            const [response] = await instancesClient.stop({
              project,
              zone: payload.zone,
              instance: instance.name,
            });
    
            return waitForOperation(project, response.latestResponse);
          })
        );
    
        // Operation complete. Instance successfully stopped.
        const message = 'Successfully stopped instance(s)';
        console.log(message);
        callback(null, message);
      } catch (err) {
        console.log(err);
        callback(err);
      }
    };
    
    /**
     * Validates that a request payload contains the expected fields.
     *
     * @param {!object} payload the request payload to validate.
     * @return {!object} the payload object.
     */
    const _validatePayload = event => {
      let payload;
      try {
        payload = JSON.parse(Buffer.from(event.data, 'base64').toString());
      } catch (err) {
        throw new Error('Invalid Pub/Sub message: ' + err);
      }
      if (!payload.zone) {
        throw new Error("Attribute 'zone' missing from payload");
      } else if (!payload.label) {
        throw new Error("Attribute 'label' missing from payload");
      }
      return payload;
    };
  15. Sul lato sinistro dell'editor di codice, seleziona package.json.

  16. Sostituisci il codice di avvio con il seguente codice:

    {
      "name": "cloud-functions-schedule-instance",
      "version": "0.1.0",
      "private": true,
      "license": "Apache-2.0",
      "author": "Google Inc.",
      "repository": {
        "type": "git",
        "url": "https://github.com/GoogleCloudPlatform/nodejs-docs-samples.git"
      },
      "engines": {
        "node": ">=16.0.0"
      },
      "scripts": {
        "test": "c8 mocha -p -j 2 test/*.test.js --timeout=20000"
      },
      "devDependencies": {
        "c8": "^8.0.0",
        "mocha": "^10.0.0",
        "proxyquire": "^2.0.0",
        "sinon": "^16.0.0"
      },
      "dependencies": {
        "@google-cloud/compute": "^4.0.0"
      }
    }
    
  17. Fai clic su Esegui il deployment nella parte inferiore della pagina.

gcloud

Creare gli argomenti Pub/Sub.

gcloud pubsub topics create start-instance-event
gcloud pubsub topics create stop-instance-event

Ottieni il codice

  1. Scarica il codice.

    git clone https://github.com/GoogleCloudPlatform/nodejs-docs-samples.git

    In alternativa, puoi scaricare l'esempio come file ZIP ed estrarlo.

  2. Vai alla directory corretta.

    cd nodejs-docs-samples/functions/scheduleinstance/
    

Crea le funzioni di avvio e arresto.

Dovresti trovarti nella directory nodejs-docs-samples/functions/scheduleinstance/.

gcloud functions deploy startInstancePubSub \
    --trigger-topic start-instance-event \
    --runtime nodejs18 \
    --allow-unauthenticated
gcloud functions deploy stopInstancePubSub \
    --trigger-topic stop-instance-event \
    --runtime nodejs18 \
    --allow-unauthenticated

(Facoltativo) Verificare il funzionamento delle funzioni

Console

Arresta l'istanza

  1. Vai alla pagina Cloud Functions nella console Google Cloud.
    Vai alla pagina Cloud Functions.
  2. Fai clic sulla funzione denominata stopInstancePubSub.
  3. Dovresti vedere una serie di schede: Generale, Trigger, Origine, Autorizzazioni e Test. Fai clic sulla scheda Test.
  4. In Evento di trigger, inserisci quanto segue:

    {"data":"eyJ6b25lIjoidXMtd2VzdDEtYiIsICJsYWJlbCI6ImVudj1kZXYifQo="}
    

    • Questa è semplicemente la stringa con codifica Base64 per {"zone":"us-west1-b", "label":"env=dev"}

    • Se vuoi codificare una stringa personalizzata, puoi utilizzare qualsiasi strumento di codifica Base64 online.

  5. Fai clic sul pulsante Testa la funzione.

  6. Al termine dell'esecuzione, dovresti vedere Successfully stopped instance dev-instance stampato in Output. Potrebbero essere necessari fino a 60 secondi per terminare l'esecuzione.

    • Se invece vedi error: 'Error: function failed to load.', attendi circa 10 secondi affinché la funzione termini il deployment e riprova.

    • Se invece vedi error: 'Error: function execution attempt timed out.', vai al passaggio successivo per verificare se l'arresto dell'istanza sta richiedendo molto tempo.

    • Se invece termina l'esecuzione, ma non mostra nulla, è probabile che si sia semplicemente verificato il timeout. Vai al passaggio successivo per vedere se l'arresto dell'istanza sta richiedendo molto tempo.

  7. Vai alla pagina Istanze VM nella console Google Cloud.
    Vai alla pagina Istanze VM.

  8. Verifica che accanto al nome dell'istanza denominata dev-instance sia presente un quadrato grigio, che ne indica l'interruzione. Potrebbero essere necessari fino a 30 secondi per completare l'arresto.

    • Se la pagina non termina correttamente, prova a fare clic su Aggiorna nella parte superiore della pagina.

Avvia l'istanza

  1. Vai alla pagina Cloud Functions nella console Google Cloud.
    Vai alla pagina Cloud Functions.
  2. Fai clic sulla funzione denominata startInstancePubSub.
  3. Dovresti vedere una serie di schede: Generale, Trigger, Origine, Autorizzazioni e Test. Fai clic sulla scheda Test.
  4. In Evento di trigger, inserisci quanto segue:

    {"data":"eyJ6b25lIjoidXMtd2VzdDEtYiIsICJsYWJlbCI6ImVudj1kZXYifQo="}
    

    • Anche in questo caso, questa è semplicemente la stringa con codifica Base64 per {"zone":"us-west1-b", "label":"env=dev"}
  5. Fai clic sul pulsante Testa la funzione.

  6. Al termine dell'esecuzione, dovresti vedere Successfully started instance dev-instance stampato in Output.

  7. Vai alla pagina Istanze VM nella console Google Cloud.
    Vai alla pagina Istanze VM.

  8. Verifica che accanto al nome dell'istanza denominata dev-instance sia presente un segno di spunta verde che ne indica che è in esecuzione. L'avvio potrebbe richiedere fino a 30 secondi.

gcloud

Arresta l'istanza

  1. Richiama la funzione per arrestare l'istanza.

    gcloud functions call stopInstancePubSub \
        --data '{"data":"eyJ6b25lIjoidXMtd2VzdDEtYiIsICJsYWJlbCI6ImVudj1kZXYifQo="}'
    
    • Questa è semplicemente la stringa con codifica Base64 per {"zone":"us-west1-b", "label":"env=dev"}

    • Se vuoi codificare la tua stringa, puoi usare qualsiasi strumento. Ecco un esempio di utilizzo dello strumento a riga di comando base64:

      echo '{"zone":"us-west1-b", "label":"env=dev"}' | base64
      
      eyJ6b25lIjoidXMtd2VzdDEtYiIsICJsYWJlbCI6ImVudj1kZXYifQo=
      

    Al termine della funzione, dovresti vedere quanto segue:

    result: Successfully stopped instance dev-instance
    

    Potrebbero essere necessari fino a 60 secondi per terminare l'esecuzione.

    • Se invece viene visualizzato l'errore:

      error: 'Error: function failed to load.`
      

      Attendi circa 10 secondi per il completamento del deployment della funzione e riprova.

    • Se invece viene visualizzato l'errore:

      error: `Error: function execution attempt timed out.`
      

      Vai al passaggio successivo per verificare se l'arresto dell'istanza sta richiedendo molto tempo.

    • Se invece non ottieni alcun risultato, è probabile che la funzione sia scaduta. Vai al passaggio successivo per verificare se l'arresto dell'istanza sta richiedendo molto tempo.

  2. Verifica che lo stato dell'istanza sia TERMINATED. Il completamento dell'arresto potrebbe richiedere fino a 30 secondi.

    gcloud compute instances describe dev-instance \
        --zone us-west1-b \
        | grep status
    
    status: TERMINATED
    

Avvia l'istanza

  1. Richiama la funzione per avviare l'istanza.

    gcloud functions call startInstancePubSub \
        --data '{"data":"eyJ6b25lIjoidXMtd2VzdDEtYiIsICJsYWJlbCI6ImVudj1kZXYifQo="}'
    
    • Anche in questo caso, questa è semplicemente la stringa con codifica Base64 per {"zone":"us-west1-b", "label":"env=dev"}

    Al termine della funzione, dovresti vedere quanto segue:

    result: Successfully started instance dev-instance
    
  2. Verifica che lo stato dell'istanza sia RUNNING. L'avvio potrebbe richiedere fino a 30 secondi.

    gcloud compute instances describe dev-instance \
        --zone us-west1-b \
        | grep status
    
    status: RUNNING
    

Configura i job Cloud Scheduler per chiamare Pub/Sub

crea i job

Console

Crea il job di avvio.

  1. Vai alla pagina Cloud Scheduler nella console Google Cloud.
    Vai alla pagina di Cloud Scheduler.
  2. Fai clic su Crea un job.
  3. Lascia la regione predefinita.
  4. Imposta il campo Nome su startup-dev-instances.
  5. In Frequenza, inserisci 0 9 * * 1-5.
    • L'operazione verrà eseguita ogni giorno alle 09:00, dal lunedì al venerdì.
  6. Per Fuso orario, seleziona il paese e il fuso orario che preferisci. Questo esempio utilizzerà United States e Los Angeles.
  7. Fai clic su Continua.
  8. In Tipo di target, seleziona Pub/Sub.
  9. Seleziona start-instance-event dal menu a discesa dell'argomento.
  10. In Messaggio, inserisci quanto segue:
    {"zone":"us-west1-b","label":"env=dev"}
    
  11. Fai clic su Crea.

Crea l'interruzione del job.

  1. Dovresti essere nella pagina Cloud Scheduler della console Google Cloud.
  2. Fai clic su Crea job.
  3. Lascia l'area predefinita e fai clic su Avanti in fondo alla pagina.
  4. Imposta il campo Nome su shutdown-dev-instances.
  5. In Frequenza, inserisci 0 17 * * 1-5.
    • L'operazione verrà eseguita ogni giorno alle ore 17:00 dal lunedì al venerdì.
  6. Per Fuso orario, seleziona il paese e il fuso orario che preferisci. Questo esempio utilizzerà United States e Los Angeles.
  7. Fai clic su Continua.
  8. In Tipo di target, seleziona Pub/Sub.
  9. Seleziona stop-instance-event dal menu a discesa dell'argomento.
  10. In Messaggio, inserisci quanto segue:
    {"zone":"us-west1-b","label":"env=dev"}
    
  11. Fai clic su Crea.

gcloud

Crea il job di avvio.

gcloud scheduler jobs create pubsub startup-dev-instances \
    --schedule '0 9 * * 1-5' \
    --topic start-instance-event \
    --message-body '{"zone":"us-west1-b", "label":"env=dev"}' \
    --time-zone 'America/Los_Angeles' \
    --location us-central1

Crea l'interruzione del job.

gcloud scheduler jobs create pubsub shutdown-dev-instances \
    --schedule '0 17 * * 1-5' \
    --topic stop-instance-event \
    --message-body '{"zone":"us-west1-b", "label":"env=dev"}' \
    --time-zone 'America/Los_Angeles' \
    --location us-central1

(Facoltativo) Verificare il funzionamento dei job

Console

Arresta l'istanza

  1. Vai alla pagina Cloud Scheduler nella console Google Cloud.
    Vai alla pagina di Cloud Scheduler.
  2. Per il job denominato shutdown-dev-instances, fai clic sul pulsante Esegui ora all'estrema destra della pagina.
  3. Vai alla pagina Istanze VM nella console Google Cloud.
    Vai alla pagina Istanze VM.
  4. Verifica che accanto al nome dell'istanza denominata dev-instance sia presente un quadrato grigio, che ne indica l'interruzione. Potrebbero essere necessari fino a 30 secondi per il completamento dell'arresto.

Avvia l'istanza

  1. Vai alla pagina Cloud Scheduler nella console Google Cloud.
    Vai alla pagina di Cloud Scheduler.
  2. Per il job denominato startup-dev-instances, fai clic sul pulsante Esegui ora all'estrema destra della pagina.
  3. Vai alla pagina Istanze VM nella console Google Cloud.
    Vai alla pagina Istanze VM.
  4. Verifica che accanto al nome dell'istanza denominata dev-instance sia presente un segno di spunta verde che ne indica che è in esecuzione. L'avvio potrebbe richiedere fino a 30 secondi.

gcloud

Arresta l'istanza

  1. Esegui il job dello scheduler per arrestare l'istanza.

    gcloud beta scheduler jobs run shutdown-dev-instances
    
  2. Verifica che lo stato dell'istanza sia TERMINATED. Il completamento dell'arresto potrebbe richiedere fino a 30 secondi.

    gcloud compute instances describe dev-instance \
        --zone us-west1-b \
        | grep status
    
    status: TERMINATED
    

Avvia l'istanza

  1. Esegui il job dello scheduler per avviare l'istanza.

    gcloud beta scheduler jobs run startup-dev-instances
    
  2. Verifica che lo stato dell'istanza sia RUNNING. L'avvio potrebbe richiedere fino a 30 secondi.

    gcloud compute instances describe dev-instance \
        --zone us-west1-b \
        | grep status
    
    status: RUNNING
    

Esegui la pulizia

Al termine del tutorial, puoi eseguire la pulizia delle risorse che hai creato in modo che smettano di utilizzare la quota e smettano di essere addebitati. Le sezioni seguenti descrivono come eliminare o disattivare queste risorse.

Elimina i job Cloud Scheduler

  1. Vai alla pagina Cloud Scheduler nella console Google Cloud.

    Vai alla pagina di Cloud Scheduler.

  2. Fai clic sulle caselle di controllo accanto ai job.

  3. Fai clic sul pulsante Elimina nella parte superiore della pagina e conferma l'eliminazione.

Elimina gli argomenti Pub/Sub

  1. Vai alla pagina Pub/Sub nella console Google Cloud.

    Vai alla pagina Pub/Sub

  2. Fai clic sulle caselle di controllo accanto agli argomenti.

  3. Fai clic su Elimina nella parte superiore della pagina e conferma l'eliminazione.

Elimina le funzioni di cui è stato eseguito il deployment tramite Cloud Functions

  1. Vai alla pagina Cloud Functions nella console Google Cloud.

    Vai alla pagina Cloud Functions.

  2. Fai clic sulle caselle di controllo accanto alle funzioni.

  3. Fai clic sul pulsante Elimina nella parte superiore della pagina e conferma l'eliminazione.

Elimina l'istanza Compute Engine

Per eliminare un'istanza di Compute Engine:

  1. Nella console Google Cloud, vai alla pagina Istanze VM.

    Vai a Istanze VM

  2. Seleziona la casella di controllo per l'istanza che vuoi eliminare.
  3. Per eliminare l'istanza, fai clic su Altre azioni, quindi su Elimina e segui le istruzioni.

Elimina il progetto

Il modo più semplice per eliminare la fatturazione è eliminare il progetto che hai creato per il tutorial.

Per eliminare il progetto:

  1. Nella console Google Cloud, vai alla pagina Gestisci risorse.

    Vai a Gestisci risorse

  2. Nell'elenco dei progetti, seleziona il progetto che vuoi eliminare, quindi fai clic su Elimina.
  3. Nella finestra di dialogo, digita l'ID del progetto e fai clic su Chiudi per eliminare il progetto.

Passaggi successivi

  • Esplora le architetture di riferimento, i diagrammi e le best practice su Google Cloud. Visita il nostro Cloud Architecture Center.