Wyświetlasz dokumentację Apigee Edge.
Przejdź do
dokumentacji Apigee X. info
Wersja 1.0.5
Wywołuj funkcje w Cloud Functions wdrożone w projekcie w chmurze 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 proxy interfejsu API za pomocą zasady ExtensionCallout, musisz:
włączyć Cloud Functions API;
Zdefiniuj i wdroż funkcje w Cloud Functions w projekcie Google Cloud.
przyznać użytkownikom dostęp za pomocą uprawnień na poziomie dostępu, 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.
podczas dodawania i konfigurowania rozszerzenia za pomocą odniesienia do konfiguracji użyć zawartości pliku JSON z kluczem.
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 zapoznać się z Cloud Functions, wypróbuj jeden z przewodników Szybki start.
Przykłady
Poniższy przykład pokazuje, jak wywoływać funkcje w Cloud Functions za pomocą zasady ExtensionCallout.
Wywoływanie funkcji Node.js
Poniższy przykład zawiera zasadę ExtensionCallout wywołującą rozszerzenie Google Cloud Functions. Rozszerzenie wywołuje domyślną funkcję „Hello World” (Witaj świecie), która jest dołączana po włączeniu Cloud Functions API.
Poniższy kod JavaScript Node.js jest wdrażany w Cloud Functions na koncie GCP. Jeśli żądanie zawiera właściwość message, kod ją zwraca. 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 do 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 oraz wartości regionu i identyfikatora projektu pasujących do szczegółów ś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 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ższe żądanie będzie wyglądać tak:
Hello yourself!
Domyślna wartość parsed to true. Ten przykład ustawia parsed="false" w tagu <Output> zasady,
co uniemożliwia jej analizowanie 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 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 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 wdrożono funkcję. | 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 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. |
| payload | Ładunek do wysłania podczas wywoływania funkcji. | JSON. | Brak. | Nie. |
Odpowiedź
Wartość odpowiedzi określonej funkcji, jeśli taka istnieje.
Właściwości odpowiedzi
Brak.
Odwołanie do konfiguracji
Podczas konfigurowania i wdrażania tego rozszerzenia do użycia w proxy interfejsu API użyj tych informacji. Aby dowiedzieć się, jak skonfigurować rozszerzenie za pomocą konsoli Apigee, przeczytaj artykuł Dodawanie i konfigurowanie rozszerzenia.
Wspólne właściwości rozszerzenia
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 rozszerzenia
Określ wartości tych właściwości konfiguracji specyficznych dla tego rozszerzenia.
| Właściwość | Opis | Domyślny | Wymagane |
|---|---|---|---|
| credentials | Gdy wpiszesz te dane w konsoli Apigee Edge, będą to treści pliku klucza konta usługi. Gdy wysyłasz je za pomocą Management API, jest to wartość zakodowana w base64 wygenerowana z pliku klucza konta usługi. | Brak. | Tak. |