Rozszerzenie Google Cloud Functions

Wyświetlasz dokumentację Apigee Edge.
Otwórz dokumentację Apigee X. info

Wersja 2.0.2

wywoływać funkcje Cloud Functions wdrożone w projekcie Google Cloud;

Obecnie to rozszerzenie obsługuje wywoływanie funkcji aktywowanych przez HTTP.

Wymagania wstępne

Te treści zawierają informacje o konfigurowaniu i używaniu tego rozszerzenia. Zanim zaczniesz korzystać z rozszerzenia w ramach serwera proxy interfejsu API za pomocą zasady ExtensionCallout, musisz:

  1. Włącz Cloud Functions API.

  2. Definiuj i wdrażaj funkcje w Cloud Functions w projekcie Google Cloud.

  3. Przyznaj użytkownikowi dostęp za pomocą uprawnień na poziomie, który chcesz przyznać funkcji. Możesz na przykład ograniczyć dostęp do funkcji tylko do konta usługi, którego używasz do konfigurowania rozszerzenia.

  4. Wygeneruj klucz konta usługi w konsoli GCP

  5. Podczas dodawania i konfigurowania rozszerzenia za pomocą dokumentacji konfiguracji użyj zawartości utworzonego pliku JSON z kluczem.

Informacje o Cloud Functions

Za pomocą Google Cloud Functions możesz tworzyć i wdrażać funkcje w Google Cloud, a następnie wywoływać je z innego kodu. Aby zapoznać się z Cloud Functions, wypróbuj jeden z szybkich przewodników.

Przykłady

Poniższy przykład pokazuje, jak wywoływać funkcje w Cloud Functions za pomocą zasady ExtensionCallout.

Wywoływanie funkcji Node.js

W tym przykładzie zasady ExtensionCallout wywołują rozszerzenie Google Cloud Functions. Rozszerzenie wywołuje domyślną funkcję „Hello World” dołączoną po włączeniu interfejsu Cloud Functions API.

Poniższy kod JavaScript w Node.js jest wdrażany w Cloud Functions na koncie GCP. Jeśli żądanie zawiera właściwość message, kod zwraca tę właściwość. W przeciwnym razie zwraca „Hello World!”.

/**
 * 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);
};

Ten przykład zawiera rozszerzenie Google Cloud Functions skonfigurowane z danymi logowania potrzebnymi do uwierzytelniania i autoryzacji wywoływania kodu w Cloud Functions.

Powyższy kod funkcji jest zapisywany w Cloud Functions jako helloWorld. Poniższy kod konfiguracji zasady ExtensionCallout używa tej nazwy wraz z wartościami regionu i identyfikatora projektu, które odpowiadają szczegółom środowiska Cloud Functions, w którym wdrożono funkcję.

<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>

Poniższa zasada AssignMessage rejestruje wartość odpowiedzi na potrzeby debugowania.

<?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>

Odpowiedź na powyższe żądanie będzie wyglądać tak:

Hello yourself!

Wartość domyślna parametru parsed to true. W tym przykładzie w tagu <Output> zasady ustawiono wartość parsed="false", co uniemożliwia im przetworzenie odpowiedzi JSON. W większości sytuacji podczas korzystania z rozszerzenia Cloud Functions ustawiasz parsed="false". Więcej informacji znajdziesz w sekcji Element<Output>.

Jeśli funkcja Cloud Function zwraca odpowiedź JSON, a Ty ustawisz parsed="true", odpowiedź z rozszerzenia będzie odwołaniem do obiektu. Aby wyodrębnić odpowiedź z odwołania, użyj tej składni: {objectName}.{jsonKey}. Na przykład:

function.response.message

Działania

wywołać

Wywołuje funkcję w Cloud Functions.

Obecnie to rozszerzenie obsługuje wywoływanie funkcji aktywowanych przez HTTP.

Składnia

<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>

Przykład

<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>

Parametry żądania

Parametr Opis Typ Domyślny Wymagane
region Region Google Cloud, w którym jest wdrożona funkcja. Ciąg tekstowy. Brak. Tak.
Identyfikator projektu Identyfikator projektu GCP. Ciąg tekstowy. Brak. Tak.
functionName Nazwa funkcji HTTP do wywołania. Jest to nazwa użyta podczas tworzenia funkcji (niekoniecznie nazwa z kodu funkcji). Ciąg tekstowy. Brak. Tak.
method Metoda HTTP, która ma być używana podczas wywoływania funkcji. Ciąg tekstowy. GET Nie.
ładunek Ładunek do wysłania z wywołaniem funkcji. JSON. Brak. Nie.

Odpowiedź

Wartość odpowiedzi określonej funkcji (jeśli występuje).

Właściwości odpowiedzi

Brak.

Odwołanie do konfiguracji

Podczas konfigurowania i wdrażania tego rozszerzenia do użycia w proxy interfejsów API postępuj zgodnie z tymi instrukcjami. Instrukcje konfigurowania rozszerzenia za pomocą konsoli Apigee znajdziesz w artykule Dodawanie i konfigurowanie rozszerzenia.

Wspólne właściwości rozszerzeń

Dla każdego rozszerzenia dostępne są poniższe właściwości.

Usługa Opis Domyślnie Wymagany
name Nazwa nadana konfiguracji rozszerzenia. Brak Tak
packageName Nazwa pakietu rozszerzeń podana przez Apigee Edge. Brak Tak
version Numer wersji pakietu rozszerzenia, z którego konfigurujesz rozszerzenie. Brak Tak
configuration Wartość konfiguracji specyficzna dla dodawanego rozszerzenia. Zobacz Właściwości tego pakietu rozszerzeń Brak Tak

Właściwości tego pakietu rozszerzeń

Określ wartości tych właściwości konfiguracji, które są specyficzne dla tego rozszerzenia.

Właściwość Opis Domyślny Wymagane
dane logowania Po wpisaniu w konsoli Apigee Edge jest to zawartość pliku klucza konta usługi. Gdy jest wysyłany za pomocą interfejsu Management API, jest to wartość zakodowana w formacie base64 wygenerowana z pliku klucza konta usługi. Brak. Tak.