Przeglądasz dokumentację Apigee Edge.
Przejdź do
Dokumentacja Apigee X. informacje.
Wersja 1.0.5
Wywołuj funkcje w Cloud Functions wdrożone za pomocą projektu Google Cloud.
Obecnie to rozszerzenie obsługuje wywoływanie funkcji aktywatorów HTTP.
Wymagania wstępne
W tym artykule znajdziesz informacje na temat konfigurowania i używania tego rozszerzenia. Zanim użyjesz rozszerzenia z serwera proxy interfejsu API za pomocą zasady ExtensionCallout, musisz:
Włącz Cloud Functions API.
Definiowanie i wdrażanie funkcji w Cloud Functions na potrzeby projektu Google Cloud.
Przyznaj użytkownikom dostęp za pomocą uprawnień, aby ustawić odpowiedni poziom dostępu do funkcji. Możesz na przykład ograniczyć dostęp do funkcji tylko do konta usługi używanego do konfigurowania rozszerzenia.
Użyj zawartości wynikowego pliku JSON klucza podczas dodawania i konfigurowania rozszerzenia w dokumentacji konfiguracji.
Informacje o Cloud Functions
Dzięki Google Cloud Functions możesz tworzyć i wdrażać funkcje w Google Cloud, a następnie wywoływać je z innego kodu. Aby poznać Cloud Functions, zapoznaj się z jednym z krótkich wprowadzenia.
Przykłady
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 zawiera zasadę ExtensionCallout wywołującą rozszerzenie Google Cloud Functions. Rozszerzenie nazywa domyślny element „hello world” uwzględniana po włączeniu interfejsu Cloud Functions API.
Poniższy kod JavaScript Node.js został wdrożony w Cloud Functions na koncie GCP. Jeśli żądanie zawiera właściwość wiadomości, kod ją zwróci. Jeśli nie, wyświetli się „Hello, World!”. jako odpowiedź na pytanie.
/**
* 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 rozszerzenie Google Cloud Functions skonfigurowane z danymi logowania potrzebnymi do uwierzytelnienia i uzyskania autoryzacji do wywoływania kodu w Cloud Functions.
Poprzedni kod funkcji jest zapisywany w Cloud Functions jako helloWorld
. Ten kod konfiguracji zasady ExtensionCallout używa tej nazwy wraz z wartościami regionu i identyfikatora projektu zgodnymi ze szczegółami środowiska Cloud Functions, w którym 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>
Poniższa zasada AssignMessage przechwytuje wartość odpowiedzi do celów 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 wygląda tak:
Hello yourself!
Wartość domyślna pola parsed
to true
. W tym przykładzie ustawiamy parsed="false"
w tagu <Output>
zasady,
, co zapobiega przeanalizowaniu odpowiedzi JSON przez zasadę.
W większości sytuacji, gdy używasz rozszerzenia Cloud Functions, ustawiasz parsed="false"
.
Patrz sekcja <Output> (Dane wyjściowe). .
Jeśli funkcja w Cloud Functions zwraca odpowiedź JSON i 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 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ślny | Wymagane |
---|---|---|---|---|
region | Region Google Cloud, w którym funkcja jest wdrożona. | 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 (nie musi to być nazwa z kodu funkcji). | Ciąg tekstowy. | Brak. | Tak. |
method | Metoda HTTP używana do wywoływania funkcji. | Ciąg tekstowy. | GET |
Nie. |
ładunek | Ładunek do wysłania za pomocą wywołania funkcji. | JSON. | Brak. | Nie. |
Odpowiedź
Wartość odpowiedzi określonej funkcji (jeśli istnieje).
Właściwości odpowiedzi
Brak.
Odniesienie do konfiguracji
Podczas konfigurowania i wdrażania tego rozszerzenia na potrzeby serwerów proxy interfejsów API użyj poniższych wskazówek. Instrukcje konfigurowania rozszerzenia za pomocą 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ń
Określ wartości następujących właściwości konfiguracji specyficznych dla tego rozszerzenia.
Właściwość | Opis | Domyślny | Wymagane |
---|---|---|---|
dane logowania | Wprowadzona w konsoli Apigee Edge plik ten zawiera zawartość pliku klucza konta usługi. W przypadku wysyłania przez interfejs API zarządzania jest to wartość zakodowana w formacie base64 generowana na podstawie pliku klucza konta usługi. | Brak. | Tak. |