Przeglądasz dokumentację Apigee Edge.
Otwórz dokumentację Apigee X. Informacje
Wersja 1.0.5
Wywoływanie funkcji w Cloud Functions, które są wdrożone za pomocą projektu Google Cloud.
Obecnie to rozszerzenie obsługuje wywoływanie funkcji aktywatorów HTTP.
Wymagania wstępne
Ta treść zawiera informacje na temat konfigurowania tego rozszerzenia i korzystania z niego. Zanim użyjesz zasady ExtensionCallout, musisz użyć rozszerzenia z serwera proxy interfejsu API:
Włącz Cloud Functions API.
Definiowanie i deploy funkcji w Cloud Functions na potrzeby projektu Google Cloud.
Przyznaj użytkownikom dostęp za pomocą uprawnień na poziomie odpowiedniego poziomu dostępu do funkcji. Możesz na przykład ograniczyć dostęp do funkcji tylko do konta usługi, którego używasz do konfigurowania rozszerzenia.
Podczas dodawania i konfigurowania rozszerzenia przy użyciu dokumentu dotyczącego konfiguracji użyj zawartości powstałego klucza pliku JSON.
Informacje o Cloud Functions
Za pomocą funkcji Google Cloud Functions możesz tworzyć i wdrażać funkcje w Google Cloud, a następnie wywoływać je z innego kodu. Wprowadzenie do Cloud Functions znajdziesz w jednym z krótkich wstępów.
Sample
Poniższy przykład pokazuje, jak wywoływać funkcje w Cloud Functions za pomocą zasady ExtensionCallout.
Wywołaj funkcję Node.js
Poniższy przykład przedstawia zasadę ExtensionCallout wywołującą rozszerzenie Google Cloud Functions. Rozszerzenie wywołuje domyślną funkcję „hello world” dostępną po włączeniu interfejsu Cloud Functions API.
Poniższy kod JavaScript Node.js jest wdrożony w Cloud Functions na koncie GCP. Jeśli żądanie zawiera właściwość wiadomości, kod ją zwraca. W przeciwnym razie zwraca w odpowiedzi „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 obejmuje skonfigurowane rozszerzenie Google Cloud Functions za pomocą danych logowania potrzebnych do uwierzytelnienia i uzyskania autoryzacji do wywoływania kodu w Cloud Functions.
Poprzedni kod funkcji jest zapisywany w Cloud Functions jako po prostu helloWorld
. Następujący kod konfiguracji zasady ExtensionCallout używa tej nazwy, a także wartości regionu i identyfikatora projektu pasujące do specyfiki środowiska Cloud Functions, w którym ta funkcja jest wdrożona.
<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>
Ta zasada AssignMessage przechwytuje 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ższą prośbę wyglądałaby w następujący sposób:
Hello yourself!
Wartością domyślną parsed
jest true
. W tym przykładzie ustawia się parsed="false"
w tagu <Output>
zasady, co uniemożliwia zasadę przeanalizowanie odpowiedzi JSON.
W większości przypadków podczas korzystania z rozszerzenia Cloud Functions ustawiasz parsed="false"
.
Więcej informacji znajdziesz w sekcji Element<output>.
Jeśli funkcja w Cloud Functions zwraca odpowiedź JSON, a Ty ustawisz parsed="true"
, odpowiedź z rozszerzenia jest odwołaniem do obiektu. Aby wyodrębnić odpowiedź z pliku referencyjnego, 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 aktywatorów 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ślne | Wymagane |
---|---|---|---|---|
region | Region Google Cloud, w którym wdrożona jest funkcja. | Ciąg tekstowy. | Brak. | Tak. |
projectId | 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 jej kodu). | Ciąg tekstowy. | Brak. | Tak. |
method | Metoda HTTP używana podczas wywoływania funkcji. | Ciąg tekstowy. | GET |
Nie. |
payload | Ładunek do wysłania za pomocą wywołania funkcji. | Plik JSON | Brak. | Nie. |
Odpowiedź
Wartość odpowiedzi określonej funkcji (jeśli istnieje).
Właściwości odpowiedzi
Brak.
Dokumentacja konfiguracji
Skorzystaj z podanych niżej instrukcji podczas konfigurowania i wdrażania tego rozszerzenia na potrzeby serwerów proxy interfejsów API. Instrukcje konfigurowania rozszerzenia w konsoli Apigee znajdziesz w artykule Dodawanie i konfigurowanie rozszerzenia.
Typowe 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ń
Podaj wartości następujących właściwości konfiguracji specyficznych dla tego rozszerzenia.
Właściwość | Opis | Domyślne | Wymagane |
---|---|---|---|
dane logowania | Wpisana w konsoli Apigee Edge jest to zawartość pliku klucza konta usługi. Gdy jest wysyłana przez interfejs API zarządzania, jest to wartość zakodowana w formacie base64 wygenerowana z pliku klucza konta usługi. | Brak. | Tak. |