Risolvi i problemi di Cloud Functions (2nd gen)

Questo documento mostra come risolvere i messaggi di errore e i problemi relativi all'utilizzo di Cloud Functions (2nd gen).

Deployment

Questa sezione elenca i problemi che potresti riscontrare durante il deployment e fornisce suggerimenti su come risolverli. Molti dei problemi che potresti riscontrare durante il deployment sono correlati ai ruoli e alle autorizzazioni o a una configurazione errata.

L'utente non dispone delle autorizzazioni per l'account di servizio di runtime durante il deployment di una funzione

Ogni funzione è associata a un account di servizio che funge da identità quando la funzione accede ad altre risorse. Questo account di servizio di runtime può essere l'account di servizio predefinito o un account di servizio gestito dall'utente. In ambienti in cui più funzioni accedono a risorse diverse, è pratica comune utilizzare identità per funzione con account di servizio di runtime denominati anziché con l'account di servizio di runtime predefinito (PROJECT_NUMBER-compute@developer.gserviceaccount.com).

Per utilizzare un account di servizio di runtime, l'utente che esegue il deployment deve disporre dell'autorizzazione iam.serviceAccounts.actAs per quell'account di servizio. Questa autorizzazione viene concessa automaticamente a un utente che crea un account di servizio di runtime non predefinito, ma ad altri utenti di deployment deve essere concessa l'autorizzazione.

Assegna l'autorizzazione iam.serviceAccounts.actAs sull'account di servizio di runtime per l'utente con il ruolo Visualizzatore progetto, Sviluppatore Cloud Functions o Amministratore Cloud Functions.

Il messaggio di errore

Console

  You must have the iam.serviceAccounts.actAs permission on the selected service account. To obtain this permission, you can grant a role that includes it like the Service Account User role, on the project.

gcloud

Account di servizio predefinito:

ERROR: (gcloud.functions.deploy) ResponseError: status=[403], code=[Ok], message=[Caller is missing permission 'iam.serviceaccounts.actAs' on service account projects/-/serviceAccounts/PROJECT_NUMBER-compute@developer.gserviceaccount.com.Grant the role 'roles/iam.serviceAccountUser' to the caller on the service account projects/-/serviceAccounts/PROJECT_NUMBER-compute@developer.gserviceaccount.com.You can do that by running 'gcloud iam service-accounts add-iam-policy-binding projects/-/serviceAccounts/PROJECT_NUMBER-compute@developer.gserviceaccount.com --member MEMBER --role roles/iam.serviceAccountUser'where MEMBER has a prefix like 'user:' or 'serviceAccount:'

Account di servizio non predefinito:

ERROR: (gcloud.functions.deploy) ResponseError: status=[403], code=[Ok], message=[Caller is missing permission 'iam.serviceaccounts.actAs' on service account projects/-/serviceAccounts/
SERVICE_ACCOUNT_NAME@PROJECT_ID
.iam.gserviceaccount.com.Grant the role 'roles/iam.serviceAccountUser' to the caller on the service account projects/-/serviceAccounts/
SERVICE_ACCOUNT_NAME@PROJECT_ID
.iam.gserviceaccount.com.You can do that by running 'gcloud iam service-accounts add-iam-policy-binding projects/-/serviceAccounts/
SERVICE_ACCOUNT_NAME@PROJECT_ID
.iam.gserviceaccount.com --member MEMBER --role roles/iam.serviceAccountUser'where MEMBER has a prefix like 'user:' or 'serviceAccount:'

La soluzione

Assegna all'utente il ruolo Utente account di servizio (roles/iam.serviceAccountUser) sull'account di servizio di runtime predefinito o non predefinito. Questo ruolo include l'autorizzazione iam.serviceAccounts.actAs.

L'account di servizio del deployment non dispone delle autorizzazioni Pub/Sub durante il deployment di una funzione basata su eventi

Il servizio Cloud Functions utilizza l'account di servizio dell'agente di servizio Cloud Functions (service-PROJECT_NUMBER@gcf-admin-robot.iam.gserviceaccount.com) per l'esecuzione di azioni amministrative. Per impostazione predefinita, a questo account è assegnato il ruolo cloudfunctions.serviceAgent di Cloud Functions. Per eseguire il deployment di funzioni basate su eventi, il servizio Cloud Functions deve accedere a Pub/Sub per configurare argomenti e abbonamenti. Se modifichi il ruolo assegnato all'account di servizio senza concedere le autorizzazioni appropriate, il servizio Cloud Functions non può accedere a Pub/Sub e il deployment non riesce.

Il messaggio di errore

Console

Validation failed for trigger projects/PROJECT_ID/locations/LOCATION/triggers/FUNCTION_NAME-EVENTARC_ID: Permission "iam.serviceAccounts.ActAs" denied on "EndUserCredentials to PROJECT_NUMBER-compute@developer.gserviceaccount.com"

gcloud

ERROR: (gcloud.functions.deploy) ResponseError: status=[403], code=[Ok], message=[Validation failed for trigger projects/test-project-356312/locations/LOCATION/triggers/FUNCTION_NAME-EVENTARC_ID: Permission "iam.serviceAccounts.ActAs" denied on "EndUserCredentials to PROJECT_NUMBER-compute@developer.gserviceaccount.com"]

La soluzione

Puoi reimpostare l'account di servizio al ruolo predefinito cloudfunctions.serviceAgent.

L'account di servizio di runtime predefinito non esiste

Se non specifichi un account di servizio di runtime gestito dall'utente, Cloud Functions (2nd gen) utilizza l'account di servizio di computing predefinito come account di servizio di runtime. I deployment non riescono se elimini l'account predefinito senza specificare un account gestito dall'utente.

Il messaggio di errore

gcloud

ERROR: (gcloud.functions.deploy) ResponseError: status=[404], code=[Ok], message=[Service account projects/-/serviceAccounts/PROJECT_NUMBER-compute@developer.gserviceaccount.com was not found.]

La soluzione

Per risolvere il problema, segui una delle seguenti soluzioni:

All'account di servizio dell'agente di servizio Cloud Functions mancano le autorizzazioni del bucket di progetto durante il deployment di una funzione

Le funzioni Cloud Functions possono essere attivate solo da eventi provenienti dai bucket Cloud Storage nello stesso progetto Google Cloud Platform. Inoltre, l'account di servizio dell'agente di servizio di Cloud Functions (service-PROJECT_NUMBER@gcf-admin-robot.iam.gserviceaccount.com) deve avere un ruolo cloudfunctions.serviceAgent nel progetto.

Il messaggio di errore

Console

ERROR: (gcloud.functions.deploy) ResponseError: status=[403], code=[Ok], message=[Validation failed for trigger projects/PROJECT_ID/locations/LOCATION/triggers/FUNCTION_NAME-EVENTARC_ID: Permission "iam.serviceAccounts.ActAs" denied on "EndUserCredentials to PROJECT_NUMBER-compute@developer.gserviceaccount.com"]

gcloud

ERROR: (gcloud.functions.deploy) ResponseError: status=[403], code=[Ok], message=[Validation failed for trigger projects/<project-id>/locations/LOCATION/triggers/FUNCTION_NAME-EVENTARC_ID: Permission "iam.serviceAccounts.ActAs" denied on "EndUserCredentials to PROJECT_NUMBER-compute@developer.gserviceaccount.com"]

La soluzione

Per risolvere il problema, reimposta questo account di servizio al ruolo predefinito.

L'utente con il ruolo di Editor di progetto non può rendere pubblica una funzione

Il ruolo Editor di progetto dispone di ampie autorizzazioni per gestire le risorse all'interno di un progetto, ma non concede intrinsecamente la possibilità di rendere pubblico Cloud Functions. L'utente o il servizio che esegue il deployment della funzione richiede l'autorizzazione run.services.setIamPolicy.

Il messaggio di errore

gcloud

ERROR: (gcloud.run.services.add-iam-policy-binding) PERMISSION_DENIED: Permission 'run.services.setIamPolicy' denied on resource 'projects/PROJECT_ID/locations/LOCATION/functions/FUNCTION_NAME' (or resource may not exist).

La soluzione

Puoi:

Il deployment delle funzioni non riesce quando si utilizza il criterio dell'organizzazione per la restrizione sulla località delle risorse

Se la tua organizzazione utilizza un criterio vincolo di località delle risorse, limita il deployment delle funzioni nelle regioni limitate dal criterio. Nella console Google Cloud, la regione limitata non sarà disponibile nel menu a discesa delle regioni durante il deployment di una funzione.

Il messaggio di errore

gcloud

ResponseError: status=[400], code=[Ok], message=["LOCATION" violates constraint "constraints/gcp.resourceLocations" on the resource "projects/PROJECT_ID/locations/LOCATION/functions/FUNCTION_NAME".]

La soluzione

Puoi aggiungere o rimuovere località dagli elenchi allowed_values o denied_values di un vincolo di località delle risorse in base alle esigenze del deployment.

Il deployment della funzione non riesce durante l'esecuzione dell'ambito globale della funzione

Questo errore indica un problema con il codice. La pipeline di deployment ha terminato il deployment della funzione, ma non è riuscita nell'ultimo passaggio, inviando un controllo di integrità alla funzione. Questo controllo di integrità ha lo scopo di eseguire l'ambito globale di una funzione, che potrebbe generare un'eccezione, un arresto anomalo o un timeout. Nell'ambito globale, di solito carichi nelle librerie e inizializzi i client.

Il messaggio di errore

Nei log di Cloud Logging:

Could not create or update Cloud Run service FUNCTION_NAME, Container Healthcheck failed. Revision REVISION_NAMEE is not ready and cannot serve traffic. The user-provided container failed to start and listen on the port defined provided by the PORT=8080 environment variable. Logs for this revision might contain more information.

La soluzione

Per risolvere il problema, segui una delle seguenti soluzioni:

  • Per un messaggio di errore più dettagliato, esamina i log di build della funzione e i log di runtime della funzione.

  • Se non è chiaro il motivo per cui la funzione non è riuscita a eseguire il suo ambito globale, valuta la possibilità di spostare temporaneamente il codice nella chiamata della richiesta utilizzando l'inizializzazione lazy delle variabili globali. In questo modo puoi aggiungere istruzioni di log aggiuntive per le librerie client che potrebbero scadere nella creazione di un'istanza (soprattutto se chiamano altri servizi), causare arresti anomali o generare eccezioni.

  • Prova anche ad aumentare il timeout della funzione. Limiti di timeout più lunghi in Cloud Functions 2ª generazionen.) offrono una maggiore respirazione per l'inizializzazione e un'allocazione delle risorse più scalabile in un ambiente Cloud Run, riducendo potenzialmente il problema se causato dall'esaurimento delle risorse.

  • Il codice sorgente deve contenere una funzione del punto di ingresso specificata correttamente nel deployment, tramite la console o gcloud.

L'utente con il ruolo Visualizzatore non può eseguire il deployment di una funzione

Gli utenti con il ruolo Visualizzatore progetto o Visualizzatore Cloud Functions hanno accesso di sola lettura alle funzioni e ai relativi dettagli e non possono eseguire il deployment di nuove funzioni. La funzionalità Crea funzione non è selezionabile nella console Google Cloud con il seguente errore:

Il messaggio di errore

gcloud

ERROR: (gcloud.functions.deploy) ResponseError: status=[403], code=[Ok], message=[Permission 'cloudfunctions.functions.generateUploadUrl' denied on 'projects/PROJECT_ID/locations/LOCATION/functions']

La soluzione

Assegna il ruolo utente Sviluppatore Cloud Functions.

Pubblicazione

Questa sezione elenca i problemi di pubblicazione che potresti riscontrare e fornisce suggerimenti per risolverli.

Errore di autorizzazione di pubblicazione a causa della funzione che richiede l'autenticazione

Le funzioni HTTP senza attivare l'opzione Consenti chiamate non autenticate e limitare l'accesso a utenti finali e account di servizio che non dispongono di autorizzazioni appropriate. Questo messaggio di errore indica che il chiamante non dispone dell'autorizzazione per richiamare la funzione.

Il messaggio di errore

Codice di risposta di errore HTTP: 403 accesso negato

Corpo della risposta di errore HTTP:

Error: Forbidden Your client does not have permission
to get URL /FUNCTION_NAME from this server.

La soluzione

Per risolvere il problema, segui una delle seguenti soluzioni:

Errore di pubblicazione dovuto alla configurazione di allow internal traffic only

Le impostazioni in entrata limitano se una funzione HTTP può essere richiamata da risorse esterne al perimetro di servizio del progetto Google Cloud o dei Controlli di servizio VPC. Quando configuri l'impostazione Consenti solo il traffico interno per il networking in entrata, questo messaggio di errore indica che sono consentite solo le richieste da reti VPC nello stesso progetto o perimetro dei Controlli di servizio VPC.

Il messaggio di errore

Codice di risposta di errore HTTP: 404 NOT FOUND

La soluzione

Per risolvere questo errore, segui una delle seguenti soluzioni:

  • Assicurati che la richiesta provenga dal tuo progetto Google Cloud o dal perimetro di servizio dei Controlli di servizio VPC.

  • Modifica le impostazioni di traffico in entrata in modo da consentire tutto il traffico per la funzione.

  • Il codice sorgente di Cloud Functions può inoltre restituire un errore 404 a causa di URL della funzione non corretto, metodi HTTP, errori logici e così via.

La chiamata della funzione non dispone di credenziali di autenticazione valide

La chiamata a una funzione Cloud Functions configurata con accesso limitato richiede un token ID. I token di accesso o i token di aggiornamento non funzionano.

Il messaggio di errore

Codice di risposta di errore HTTP: 401 Non autorizzato

Corpo della risposta di errore HTTP:

Your client does not have permission to the requested URL 'FUNCTION_NAME'

La soluzione

Per risolvere questo errore, segui una delle seguenti soluzioni:

  • Assicurati che le richieste includano un'intestazione Authorization: Bearer ID_TOKEN e che il token sia un token ID, non un token di accesso o di aggiornamento. Se generi questo token manualmente con la chiave privata di un account di servizio, devi scambiare il token JWT autofirmato con un token di identità firmato da Google. Per ulteriori informazioni, consulta Autenticazione per le chiamate.

    Richiama la funzione HTTP utilizzando le credenziali di autenticazione nell'intestazione della richiesta. Ad esempio, puoi ricevere un token di identità utilizzando gcloud nel seguente modo:

      curl  -H "Authorization: Bearer $(gcloud auth print-identity-token)" 
    https://REGION-PROJECT_ID.cloudfunctions.net/FUNCTION_NAME
    Per scoprire di più, consulta Autenticazione per le chiamate .

  • Esegui di nuovo il deployment della funzione per consentire chiamate non autenticate, se questa funzionalità è supportata dalla tua organizzazione. È utile per i test.

La funzione si interrompe a metà esecuzione o continua in esecuzione al termine del codice

Alcuni runtime di Cloud Functions consentono agli utenti di eseguire attività asincrone. Se la funzione crea attività di questo tipo, deve anche attenderne esplicitamente il completamento. In caso contrario, la funzione potrebbe interrompersi al momento sbagliato.

Comportamento dell'errore

La funzione mostra uno dei seguenti comportamenti:

  • La funzione termina mentre le attività asincrone sono ancora in esecuzione, ma prima che sia trascorso il periodo di timeout specificato.
  • L'esecuzione della funzione non viene interrotta al termine di queste attività e continua a essere eseguita fino alla scadenza del periodo di timeout.

La soluzione

Se la funzione viene terminata in anticipo, devi assicurarti che tutte le attività asincrone della funzione siano completate prima che la funzione esegua una delle seguenti azioni:

  • Restituzione di un valore
  • Risoluzione o rifiuto di un oggetto Promise restituito (solo funzioni Node.js)
  • Generazione di eccezioni o errori non rilevati
  • Invio di una risposta HTTP
  • Chiamata a una funzione di callback

Se la funzione non viene terminata dopo aver completato le attività asincrone, devi verificare che la funzione stia segnalando correttamente Cloud Functions dopo il completamento. In particolare, assicurati di eseguire una delle operazioni elencate in precedenza non appena la funzione ha terminato le proprie attività asincrone.

Errore di runtime durante l'accesso alle risorse protette dai Controlli di servizio VPC

Per impostazione predefinita, Cloud Functions utilizza indirizzi IP pubblici per effettuare richieste in uscita ad altri servizi. Se le tue funzioni non si trovano all'interno di un perimetro dei Controlli di servizio VPC, a causa dei rifiuti dei perimetro di servizio potrebbero essere ricevute risposte HTTP 403 durante il tentativo di accedere ai servizi Google Cloud protetti dai Controlli di servizio VPC.

Il messaggio di errore

Nei log delle risorse controllate, una voce simile alla seguente:

"protoPayload": {
  "@type": "type.googleapis.com/google.cloud.audit.AuditLog",
  "status": {
    "code": 7,
    "details": [
      {
        "@type": "type.googleapis.com/google.rpc.PreconditionFailure",
        "violations": [
          {
            "type": "VPC_SERVICE_CONTROLS",
  ...
  "authenticationInfo": {
    "principalEmail": "CLOUD_FUNCTION_RUNTIME_SERVICE_ACCOUNT",
  ...
  "metadata": {
    "violationReason": "NO_MATCHING_ACCESS_LEVEL",
    "securityPolicyInfo": {
      "organizationId": "ORGANIZATION_ID",
      "servicePerimeterName": "accessPolicies/NUMBER/servicePerimeters/SERVICE_PERIMETER_NAME"
  ...

La soluzione

Per risolvere questo errore, segui una delle seguenti soluzioni:

Scalabilità

Questa sezione elenca i problemi di scalabilità e fornisce suggerimenti su come risolverli.

Errori di Cloud Logging relativi all'interruzione di richieste di coda in attesa

Gli errori di scalabilità possono verificarsi nei seguenti scenari:

  • Un enorme aumento improvviso del traffico.
  • Inizio a freddo lungo.
  • Tempi di elaborazione lunghi delle richieste.
  • Elevato tasso di errori delle funzioni.
  • È stato raggiunto il limite massimo di istanze e impedisce la scalabilità del sistema.
  • Fattori temporanei attribuiti al servizio Cloud Functions.

In ogni caso, Cloud Functions potrebbe non fare lo scale up abbastanza rapidamente per gestire il traffico.

Il messaggio di errore

  • The request was aborted because there was no available instance
    • severity=WARNING ( codice di risposta: 429 ) Cloud Functions non è in grado di scalare a causa del limite di max-instances impostato durante la configurazione.
    • severity=ERROR ( Codice di risposta: 500) Le funzioni Cloud Functions intrinsecamente non possono gestire la frequenza di traffico.

La soluzione

  • Per risolvere il problema, risolvi le cause elencate in precedenza.

  • Per le funzioni basate su trigger HTTP, chiedi al client di implementare il backoff esponenziale e di riprovare per le richieste che non devono essere ignorate. Se stai attivando Cloud Functions da Workflows, puoi utilizzare la sintassi try/retry per ottenere questo risultato.

  • Per le funzioni in background o basate su eventi, Cloud Functions supporta la distribuzione at-least-once. Anche senza abilitare esplicitamente la ripetizione, l'evento viene automaticamente pubblicato e ritentare l'esecuzione della funzione. Per ulteriori informazioni, consulta Ripetere le funzioni basate su eventi.

  • Se la causa principale del problema è un periodo di gravi errori temporanei attribuiti esclusivamente a Cloud Functions o se hai bisogno di aiuto per il problema, contatta l'assistenza.

  • Per i problemi relativi agli avvii a freddo, configura un minimo di istanze per ridurre il numero di avvii a freddo con un'implicazione di fatturazione più elevata.

Logging

La sezione seguente illustra i problemi relativi al logging e come risolverli.

Le voci di log non hanno livelli di gravità dei log errati o sono errati

Cloud Functions include il logging del runtime per impostazione predefinita. I log scritti in stdout o stderr vengono visualizzati automaticamente in Cloud Logging. Tuttavia, queste voci di log, per impostazione predefinita, contengono solo messaggi di tipo stringa.

Il messaggio di errore

Livelli di gravità assenti o errati nei log.

La soluzione

Per includere la gravità dei log, devi inviare una voce di log strutturata.

Gestire o registrare le eccezioni in modo diverso in caso di arresto anomalo

Potrebbe essere opportuno personalizzare la gestione e la registrazione delle informazioni sugli arresti anomali.

La soluzione

Aggrega la funzione in un blocco try per personalizzare la gestione delle eccezioni e le analisi dello stack di logging.

Esempio

import logging
import traceback
def try_catch_log(wrapped_func):
  def wrapper(*args, **kwargs):
    try:
      response = wrapped_func(*args, **kwargs)
    except Exception:
      # Replace new lines with spaces so as to prevent several entries which
      # would trigger several errors.
      error_message = traceback.format_exc().replace('\n', '  ')
      logging.error(error_message)
      return 'Error';
    return response;
  return wrapper;

#Example hello world function
@try_catch_log
def python_hello_world(request):
  request_args = request.args

  if request_args and 'name' in request_args:
    1 + 's'
  return 'Hello World!'

Log troppo grandi in Node.js 10+, Python 3.8, Go 1.13 e Java 11

La dimensione massima per una normale voce di log in questi runtime è 105 KiB.

La soluzione

Invia voci di log inferiori a questo limite.

Log mancanti nonostante Cloud Functions restituisca errori

Cloud Functions invia i flussi di log delle Cloud Function a un bucket predefinito. Quando crei un progetto, Cloud Functions crea e abilita il bucket predefinito. Se il bucket predefinito è disabilitato o se i log della funzione Cloud Function si trovano nel filtro di esclusione, non verranno visualizzati in Esplora log.

La soluzione

Abilita i log predefiniti.

I log di Cloud Functions non vengono visualizzati in Esplora log

Alcune librerie client di Cloud Logging utilizzano un processo asincrono per scrivere le voci di log. Se una funzione si arresta in modo anomalo o termina in altro modo, è possibile che alcune voci di log non siano ancora state scritte e vengano visualizzate in un secondo momento. Alcuni log potrebbero essere andati persi e non essere visibili in Esplora log.

La soluzione

Utilizza l'interfaccia della libreria client per eliminare le voci di log presenti nel buffer prima di uscire dalla funzione o utilizza la libreria per scrivere voci di log in modo sincrono. Puoi anche scrivere i log in modo sincrono direttamente in stdout o stderr.

Log di Cloud Functions mancanti quando utilizzi il sink del router dei log

Il router dei log acquisisce le voci di log del route verso varie destinazioni.

Screenshot del router dei log della console con Visualizza dettagli sink evidenziati

I filtri di esclusione definiscono le voci che puoi ignorare.

La soluzione

Rimuovi il filtro di esclusione impostato per resource.type = "cloud_run_revision".

Connessioni al database

Durante la connessione a un database possono verificarsi vari problemi, molti dei quali associati al superamento dei limiti di connessione o al timeout. Se nei log viene visualizzato un avviso di Cloud SQL, ad esempio Context deadline exceeded, potresti dover modificare la configurazione della connessione. Per ulteriori informazioni, consulta le best practice per Cloud SQL.

Networking

Questa sezione elenca i problemi di rete e fornisce suggerimenti su come risolverli.

Connettività di rete

Se tutte le richieste in uscita da una Cloud Function non vanno a buon fine anche dopo aver configurato le impostazioni in uscita, puoi eseguire Connectivity Tests per identificare eventuali problemi di connettività di rete sottostanti. Per maggiori informazioni, vedi Creare ed eseguire Connectivity Tests.

Il connettore di accesso VPC serverless non è pronto o non esiste

In caso di errore di un connettore di accesso VPC serverless, potrebbe non utilizzare una subnet mask /28 dedicata al connettore come obbligatorio.

Il messaggio di errore

Problem connecting to VPC Connector projects/xxxxx/locations/REGION/connectors/xxxx: Serverless VPC Access is not found.

Quando viene eseguito il deployment di Cloud Functions con un connettore in stato non valido a causa della mancanza dell'autorizzazione sull'account di servizio dell'agente di servizio delle API di Google PROJECT_NUMBER@cloudservices.gserviceaccount.com, si verifica il seguente errore:

Il messaggio di errore

Failed to prepare VPC connector. Please try again later.

La soluzione

Elenca le subnet per verificare se il connettore utilizza una subnet mask /28. Se il connettore non utilizza la subnet mask /28, ricrea o crea un nuovo connettore.

Per risolvere il problema, segui una delle seguenti soluzioni:

  • Se ricrei il connettore, non è necessario eseguire nuovamente il deployment di altre funzioni. Potrebbe verificarsi un'interruzione di rete durante la creazione del connettore.

  • Se crei un nuovo connettore alternativo, esegui nuovamente il deployment delle funzioni per utilizzare il nuovo connettore, quindi elimina il connettore originale. Questo metodo evita interruzioni di rete.

  • Assicurati che il deployment di Cloud Functions e del connettore associato venga eseguito nella stessa regione.

  • Per la configurazione del VPC condiviso:

    • Assicurati che gli account di servizio SERVICE_PROJECT_NUMBER@cloudservices.gserviceaccount.com e service-SERVICE_PROJECT_NUMBER@gcp-sa-vpcaccess.iam.gserviceaccount.com utilizzati dal connettore VPC per eseguire il provisioning delle risorse nel progetto non manchino le autorizzazioni. Questi account di servizio devono avere il ruolo roles/compute.networkUser nel progetto host della configurazione del VPC condiviso quando il connettore si trova nel progetto di servizio.

    • Se il connettore viene creato nel progetto host, assicurati che il ruolo Serverless VPC Access User sia concesso nell'agente di servizio Cloud Run nel progetto host.

  • Se lo stato del connettore mostra l'errore Connector is in a bad state, manual deletion recommended e l'agente di servizio API di Google non dispone delle autorizzazioni necessarie per eseguire il provisioning delle risorse di computing nel progetto del connettore, concedi roles/compute.admin all'account di servizio PROJECT_NUMBER@cloudservices.gserviceaccount.com. In alcuni casi potrebbe essere necessario ricreare il connettore dopo aver aggiunto queste autorizzazioni.

Il traffico SMTP verso indirizzi IP di destinazione esterni che utilizzano la porta TCP 25 è bloccato

Per maggiore sicurezza, Google Cloud blocca le connessioni alla porta di destinazione TCP 25 durante l'invio di email dalle funzioni.

La soluzione

Per sbloccare queste connessioni, segui una delle seguenti soluzioni: