Wyświetlasz dokumentację Apigee Edge.
Otwórz dokumentację Apigee X. info
Wersja 2.0.0
Wywoływanie funkcji w Cloud Functions, które zostały wdrożone w projekcie Google Cloud.
Obecnie to rozszerzenie obsługuje wywoływanie funkcji aktywatora HTTP.
Wymagania wstępne
Te treści zawierają informacje na temat konfigurowania i używania tego rozszerzenia. Zanim użyjesz rozszerzenia z serwera proxy interfejsu API przy użyciu zasad dotyczących rozszerzeń, musisz:
Włącz Cloud Functions API.
Zdefiniuj i deploy funkcje w Cloud Functions w projekcie Google Cloud.
Przyznaj użytkownikowi dostęp za pomocą usługi IAM na odpowiednim poziomie 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 utworzonego pliku klucza JSON podczas dodawania i konfigurowania rozszerzenia za pomocą dokumentacji konfiguracji.
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, skorzystaj z jednego z krótkich samouczków.
Przykłady
W tym przykładzie pokazujemy, jak wywoływać funkcje w Cloud Functions za pomocą polityki ExtensionCallout.
Wywoływanie funkcji Node.js
W tym przykładzie użyto polityki ExtensionCallout, która wywołuje rozszerzenie Google Cloud Functions. Rozszerzenie wywołuje domyślną funkcję „hello world” zawartą w interfejsie Cloud Functions API.
Ten kod JavaScript w Node.js jest wdrażany w Cloud Functions na koncie GCP. Jeśli żądanie zawiera właściwość wiadomości, kod zwraca tę właściwość. W przeciwnym razie zwraca „Hello World!” (Witaj świecie).
/**
* 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 uwierzytelnienia i uzyskania autoryzacji na wywoływanie kodu w Cloud Functions.
Powyższy kod funkcji jest zapisywany w Cloud Functions jako helloWorld
. Podany niżej kod konfiguracji zasady ExtensionCallout używa tej nazwy wraz z wartościami regionu i identyfikatora projektu odpowiadającymi szczegółom środowiska Cloud Functions, w którym funkcja została 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>
Podana niżej zasada przypisywania wiadomości 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 to żądanie będzie wyglądać tak:
Hello yourself!
Wartością domyślną parametru parsed
jest true
. W tym przykładzie w tagu <Output>
zasady ustawiono wartość parsed="false"
, co uniemożliwia przetworzenie odpowiedzi w formacie JSON.
W większości sytuacji, gdy używasz rozszerzenia Cloud Functions, ustawiasz parsed="false"
.
Więcej informacji znajdziesz w sekcji <Output>.
Jeśli funkcja w Cloud Functions zwraca odpowiedź JSON, a Ty ustawisz parametr parsed="true"
, odpowiedź z rozszerzenia będzie odwołaniem do obiektu. Aby wyodrębnić odpowiedź z odniesienia, 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 aktywatora 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 została wdrożona. | Ciąg tekstowy. | Brak. | Tak. |
Identyfikator projektu | Identyfikator projektu GCP. | Ciąg tekstowy. | Brak. | Tak. |
functionName | Nazwa wywoływanej funkcji HTTP. Jest to nazwa użyta podczas tworzenia funkcji (niekoniecznie nazwa z kodu funkcji). | Ciąg tekstowy. | Brak. | Tak. |
method | Metoda HTTP do użycia podczas wywołania funkcji. | Ciąg tekstowy. | GET |
Nie. |
ładunek | ładunek do wysłania wraz z wywołaniem funkcji. | JSON. | Brak. | Nie. |
Odpowiedź
Wartość odpowiedzi określonej funkcji (jeśli istnieje).
Właściwości odpowiedzi
Brak.
Informacje o konfiguracji
Podczas konfigurowania i wdrażania tego rozszerzenia do użycia w serwerach proxy API postępuj zgodnie z tymi instrukcjami. Instrukcje konfigurowania rozszerzenia za pomocą konsoli Apigee znajdziesz w artykule Dodawanie i konfigurowanie rozszerzenia.
Właściwości wspólne 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 tych właściwości konfiguracji, które są specyficzne dla tego rozszerzenia.
Właściwość | Opis | Domyślny | Wymagane |
---|---|---|---|
dane logowania | Gdy wpiszesz go w konsoli Apigee Edge, będzie to zawartość pliku klucza konta usługi. Gdy jest wysyłany za pomocą interfejsu API zarządzania, jest to wartość zakodowana w formacie base64 wygenerowana z pliku klucza konta usługi. | Brak. | Tak. |