Estensione di Google Cloud Functions

Stai visualizzando la documentazione di Apigee Edge.
Consulta la documentazione di Apigee X.
info

Versione 1.0.5

Richiama le funzioni Cloud Functions di cui è stato eseguito il deployment tramite il tuo progetto cloud Google.

Al momento, questa estensione supporta la chiamata delle funzioni di trigger HTTP.

Prerequisiti

Questo contenuto fornisce un riferimento per la configurazione e l'utilizzo di questa estensione. Prima di utilizzare l'estensione da un proxy API utilizzando il criterio ExtensionCallout, devi:

  1. Abilitare l'API Cloud Functions.

  2. Definire ed eseguire il deployment delle funzioni in Cloud Functions per il tuo progetto Google Cloud.

  3. Concedere l'accesso utente tramite IAM per il livello di accesso che vuoi per la funzione. Ad esempio, puoi limitare l'accesso alla funzione solo al service account che utilizzi per configurare l'estensione.

  4. Utilizzare la console Google Cloud per generare una chiave per il service account.

  5. Utilizzare i contenuti del file JSON della chiave risultante quando si aggiunge e si configura l'estensione utilizzando il riferimento di configurazione.

Informazioni su Cloud Functions

Con Google Cloud Functions, puoi creare ed eseguire il deployment di funzioni su Google Cloud, quindi richiamarle da altro codice. Per un'introduzione a Cloud Functions, prova una delle guide rapide.

Esempi

L'esempio seguente illustra come richiamare le funzioni in Cloud Functions utilizzando il criterio ExtensionCallout.

Richiamare la funzione Node.js

L'esempio seguente mostra un criterio ExtensionCallout che chiama un'estensione di Google Cloud Functions. L'estensione chiama la funzione predefinita "Hello World" inclusa quando abiliti l'API Cloud Functions.

Il seguente JavaScript Node.js viene sottoposto a deployment in Cloud Functions per un account Google Cloud. Se la richiesta include una proprietà message, il codice la restituisce. In caso contrario, restituisce "Hello World!" come risposta.

/**
 * Responds to any HTTP request.
 *
 * @param {!express:Request} req HTTP request context.
 * @param {!express:Response} res HTTP response context.
 */
exports.helloWorld = (req, res) => {
  let message = req.query.message || req.body.message || 'Hello World!';
  res.status(200).send(message);
};

Questo esempio include un'estensione di Google Cloud Functions configurata con le credenziali necessarie per l'autenticazione e l'autorizzazione alla chiamata del codice in Cloud Functions.

Il codice della funzione precedente viene salvato in Cloud Functions semplicemente come helloWorld. Il seguente codice di configurazione del criterio ExtensionCallout utilizza questo nome, insieme ai valori di regione e ID progetto che corrispondono ai dettagli dell'ambiente Cloud Functions in cui è stato eseguito il deployment della funzione.

<Action>invoke</Action>
<Input><![CDATA[
  {
    "region" : "us-central1",
    "projectId" : "my-project",
    "functionName" : "hello-world",
    "method" : "POST",
    "payload" : { "message" : "Hello yourself!" }
  }
]]></Input>
<Output parsed="false">function.response</Output>

Il seguente criterio AssignMessage acquisisce il valore di risposta a scopo di debug.

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<AssignMessage async="false" continueOnError="false" enabled="true" name="Get-Function-Response">
    <DisplayName>Get Function Response</DisplayName>
    <AssignTo type="response" createNew="false"/>
    <Set>
        <Payload contentType="application/json">{function.response}</Payload>
    </Set>
</AssignMessage>

La risposta alla richiesta precedente sarà simile alla seguente:

Hello yourself!

Il valore predefinito di parsed è true. Questo esempio imposta parsed="false" nel tag <Output> del criterio, impedendo al criterio di analizzare la risposta JSON. Nella maggior parte delle situazioni in cui utilizzi l'estensione Cloud Functions, imposta parsed="false". Per ulteriori informazioni, vedi l'elemento <Output>.

Se la funzione Cloud Functions restituisce una risposta JSON e imposti parsed="true", la risposta dell'estensione è un riferimento a un oggetto. Per estrarre la risposta dal riferimento, utilizza la seguente sintassi: {objectName}.{jsonKey}. Ad esempio:

function.response.message

Azioni

richiamare

Richiama una funzione Cloud.

Al momento, questa estensione supporta la chiamata delle funzioni di trigger HTTP.

Sintassi

<Action>invoke</Action>
<Input><![CDATA[
  {
    "region" : "deployment-region",
    "projectId" : "project-id",
    "functionName" : "function-name",
    "method" : "http-method",
    "payload" : { json-payload }
  }
]]></Input>
<Output>function.response</Output>

Esempio

<Action>invoke</Action>
<Input><![CDATA[
  {
    "region" : "us-central1",
    "projectId" : "my-project",
    "functionName" : "hello-world",
    "method" : "POST",
    "payload" : { "message" : "Hello yourself!" }
  }
]]></Input>
<Output>function.response</Output>

Parametri di richiesta

Parametro Descrizione Tipo Predefinito Obbligatorio
regione La regione Google Cloud in cui è stato eseguito il deployment della funzione. Stringa. Nessuno. Sì.
projectId ID progetto Google Cloud. Stringa. Nessuno. Sì.
functionName Il nome della funzione HTTP da richiamare. Questo è il nome che hai utilizzato quando hai creato la funzione (non necessariamente un nome del codice della funzione). Stringa. Nessuno. Sì.
metodo Il metodo HTTP da utilizzare quando si richiama la funzione. Stringa. GET No.
payload Il payload da inviare con la chiamata della funzione. JSON. Nessuno. No.

Risposta

Il valore di risposta della funzione specificata, se presente.

Proprietà di risposta

Nessuno.

Riferimento per la configurazione

Utilizza le seguenti informazioni quando configuri ed esegui il deployment di questa estensione per l'utilizzo nei proxy API. Per i passaggi per configurare un'estensione utilizzando la console Apigee, vedi Aggiungere e configurare un'estensione.

Proprietà comuni dell'estensione

Per ogni estensione sono presenti le seguenti proprietà.

Proprietà Descrizione Predefinito Obbligatorio
name Il nome che assegni a questa configurazione dell'estensione. Nessuno
packageName Nome del pacchetto dell'estensione fornito da Apigee Edge. Nessuno
version Numero di versione del pacchetto dell'estensione da cui stai configurando un'estensione. Nessuno
configuration Valore di configurazione specifico per l'estensione che stai aggiungendo. Vedi Proprietà per questo pacchetto di estensioni Nessuno

Proprietà per questo pacchetto di estensioni

Specifica i valori per le seguenti proprietà di configurazione specifiche per questa estensione.

Proprietà Descrizione Predefinito Obbligatorio
credenziali Se inserito nella console Apigee Edge, questo è il contenuto del file della chiave del service account. Se inviato tramite l'API di gestione, è un valore codificato in base64 generato dal file della chiave del service account. Nessuno. Sì.