Debug di un'estensione

Stai visualizzando la documentazione di Apigee Edge.
Vai alla documentazione di Apigee X.
informazioni

Puoi eseguire il debug di un'estensione utilizzando messaggi visibili in due posizioni: nello strumento Trace e nei log delle estensioni. Quando un'estensione non funziona, per identificare il problema a volte sono necessarie informazioni da entrambe le posizioni.

  • Lo strumento Traccia Apigee Edge ti consente di testare e modificare in modo iterativo il codice proxy API durante lo sviluppo. I messaggi di traccia includono errori del codice proxy API, tra cui il proxy API e la configurazione dei criteri.

    Gli errori relativi alle estensioni visualizzati nello strumento Trace di solito non contengono molti dettagli, ad eccezione del fatto che il callout dell'estensione non è riuscito, insieme a un codice di errore HTTP. Se non trovi nulla di utile qui, puoi consultare il log dell'estensione in uso.

  • Le estensioni generano voci di log in fase di esecuzione. I log delle estensioni sono disponibili solo per gli amministratori dell'organizzazione.

    Questi log includono le voci restituite dalla risorsa esterna con cui è configurata l'interazione per l'estensione. Ad esempio, se le credenziali delle risorse esterne non sono configurate correttamente nell'estensione, è probabile che l'errore venga visualizzato qui.

    I log includono anche voci provenienti dal codice dell'estensione interna. Quando esamini i log, tieni presente che alcune voci non sono pertinenti all'errore che stai correggendo. Le voci di log relative all'estensione di solito iniziano con la parola details, come nella seguente voce di log dell'estensione Cloud Pub/Sub:

    details: 'Invalid resource name given (name=projects/example-test-123456/topic/extension-example). Refer to https://cloud.google.com/pubsub/docs/admin#resource_names for more information.'
    

Tipi di errori e cause

L'elaborazione della richiesta di estensione passa da un criterio ExtensionCallout in un proxy API, attraverso l'estensione, alla risorsa esterna e poi di nuovo. Pertanto, può verificarsi un errore in una qualsiasi di queste posizioni.

Gli errori che visualizzi potrebbero rientrare nelle seguenti categorie.

Errori nella configurazione dell'estensione

Si tratta della configurazione eseguita da un amministratore dell'organizzazione quando aggiunge un'estensione a un ambiente.

Ad esempio, se configuri l'estensione Cloud Logging con un ID progetto Google Cloud errato, Google Cloud Logging restituirà un errore all'estensione. I dettagli relativi a questi errori in genere si trovano nel log delle estensioni.

Prove nello strumento Trace

Nell'editor proxy, questi errori in genere vengono visualizzati come errori di livello 4xx o 5xx. Tuttavia, l'editor proxy non mostrerà informazioni specifiche sulla causa dell'errore, tranne per il fatto che l'estensione ha restituito un errore.

{
  "fault": {
    "faultstring":"Execution of ConnectorCallout Logging-Extension failed. Reason: Connector returned error statuscode=500",
    "detail": {
      "errorcode":"steps.connectorcallout.ExecutionFailed"
    }
  }
}

Prove nei log delle estensioni

Se esistono dettagli relativi a questo tipo di errore, verranno visualizzati nelle voci di log dell'estensione. Il seguente messaggio di errore, restituito dal servizio Cloud Pub/Sub, deriva da un ID progetto non corretto.

details: 'Project does not exist: example-test-12345'

Errori nella configurazione delle norme relative ai callout Extension

Questi errori si verificano quando le norme relative ai callout estensione non sono configurate correttamente a causa di un errore di sintassi di configurazione dei criteri o di valori o chiavi di configurazione non corretti. Questi errori possono assumere due forme, a seconda della configurazione del criterio:

  • Valori errati valutati dalla risorsa esterna

    Questo può accadere quando l'errore di configurazione sembrava valido per l'estensione, ma non per la risorsa esterna. Ad esempio, se l'estensione passa un ID database errato a Cloud Spanner, Cloud Spanner restituisce un errore registrato nel log dell'estensione:

    details: 'Database not found: projects/example-test-123456/instances/spanner-extension-example-db/databases/my-business-d'
    

    Questo può verificarsi anche per il codice JSON di configurazione non corretto nell'elemento <Input> del criterio. Per alcune estensioni, una parte del codice JSON viene elaborata dall'estensione e una parte viene passata alla risorsa. Ad esempio, il JSON di configurazione dell'estensione Cloud Logging include un oggetto metadata i cui contenuti vengono passati a Cloud Logging. Nomi delle chiavi errati, ad esempio typ anziché type, possono restituire errori dalla risorsa esterna visualizzati come voci nel log delle estensioni:

    details: 'Resource type cannot be empty'
    
  • Valori errati valutati dall'estensione

    Questi errori includono errori di sintassi nelle parti dell'elemento <Input> valutate secondo i criteri, errori di ortografia nel nome dell'azione nell'elemento <Action> e così via. In genere questi errori vengono visualizzati nello strumento Trace, ma non nei log delle estensioni.

Prove nello strumento Trace

Nell'editor proxy, questi errori in genere vengono visualizzati come errori di livello 4xx o 5xx. Tuttavia, l'editor proxy non mostrerà informazioni specifiche sulla causa dell'errore, tranne per il fatto che l'estensione ha restituito un errore. Il seguente errore viene visualizzato nello strumento Trace quando viene digitato in modo errato il nome dell'azione nell'estensione Cloud Firestore.

{
  "fault":{
    "faultstring":"Execution of ConnectorCallout Add-User-Data failed. Reason: Connector returned error statuscode=404","detail":
    {
      "errorcode":"steps.connectorcallout.ExecutionFailed"
    }
  }
}

Prove nei log delle estensioni

Quando la configurazione del criterio genera un errore di elaborazione nella risorsa esterna, l'errore viene solitamente visualizzato nel log.

Si tratta di un errore per cui la richiesta alla risorsa esterna non è andata a buon fine per motivi non correlati all'estensione.

Ad esempio, immagina di utilizzare l'estensione Cloud Spanner per aggiungere una riga al database, ma il valore di chiave primaria della riga è già utilizzato in una riga esistente. Cloud Spanner restituirà un errore all'estensione, che lo aggiungerà al log delle estensioni.

Prove nello strumento Trace

Nell'editor proxy, questi errori in genere vengono visualizzati come errori di livello 4xx o 5xx. Tuttavia, l'editor proxy non mostrerà specifiche sulla causa dell'errore, tranne per il fatto che l'estensione ha restituito un errore.

{
  "fault":{
    "faultstring":"Execution of ConnectorCallout Add-User-Data failed. Reason: Connector returned error statuscode=404",
    "detail":{
      "errorcode":"steps.connectorcallout.ExecutionFailed"
    }
  }
}

Prove nei log delle estensioni

In genere il log contiene voci con messaggi provenienti dalla risorsa esterna stessa. Il seguente messaggio di log di Cloud Spanner descrive l'errore esistente relativo al valore della chiave primaria.

details: 'Row [jonesy42] in table user already exists'