Você está vendo a documentação do Apigee Edge.
Acesse a
documentação da Apigee X. informações
Versão 1.0.5
Invoque o Cloud Functions implantado por meio do projeto do Google Cloud.
Atualmente, essa extensão é compatível com a invocação de funções de gatilho HTTP.
Pré-requisitos
Este conteúdo oferece referência para configurar e usar essa extensão. Antes de usar a extensão de um proxy de API com a política Extension callout, você precisa fazer o seguinte:
Ative a API Cloud Functions.
Defina e deploy funções no Cloud Functions para seu projeto do Google Cloud.
Conceda acesso ao usuário via IAM para o nível de acesso que você quer para a função. Por exemplo, você pode limitar o acesso à função apenas à conta de serviço usada para configurar a extensão.
Use o console do GCP para gerar uma chave para a conta de serviço.
Use o conteúdo do arquivo JSON da chave resultante ao adicionar e configurar a extensão com a referência de configuração.
Sobre o Cloud Functions
Com o Google Cloud Functions, você pode criar e implantar funções no Google Cloud e invocá-las usando outro código. Para uma introdução ao Cloud Functions, teste um dos guias de início rápido.
Exemplos
O exemplo a seguir ilustra como invocar funções no Cloud Functions usando a política Extension callout.
Invocar função Node.js
O exemplo a seguir apresenta uma política ExtensionHeadline que chama uma extensão do Google Cloud Functions. A extensão chama a função padrão "hello world" incluída quando você ativa a API Cloud Functions.
O JavaScript Node.js a seguir é implantado no Cloud Functions para uma conta do GCP. Se a solicitação incluir uma propriedade de mensagem, o código a retornará. Caso contrário, ela retorna "Hello World!" como resposta.
/**
* 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);
};
Este exemplo inclui uma extensão do Google Cloud Functions configurada com as credenciais necessárias para autenticar e receber autorização para invocar o código no Cloud Functions.
O código da função anterior é salvo no Cloud Functions como simplesmente helloWorld
. O código de configuração da política Extension callout a seguir usa esse nome com valores de região e ID do projeto correspondentes às especificações do ambiente do Cloud Functions em que a função é implantada.
<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>
A política AttributionMessage a seguir captura o valor da resposta para fins de depuração.
<?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>
A resposta à solicitação acima seria a seguinte:
Hello yourself!
O valor padrão de parsed
é true
. Este exemplo define parsed="false"
na tag <Output>
da política,
o que a impede de analisar a resposta JSON.
Para a maioria das situações, ao usar a extensão do Cloud Functions, você define parsed="false"
.
Consulte Elemento<Output> para mais informações.
Se a função do Cloud retornar uma resposta JSON e você definir parsed="true"
, a resposta da extensão será uma referência de objeto. Para extrair a resposta da referência, use esta sintaxe: {objectName}.{jsonKey}
. Exemplo:
function.response.message
Ações
invocar
Invoca uma função do Cloud.
Atualmente, essa extensão é compatível com a invocação de funções de gatilho HTTP.
Sintaxe
<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>
Exemplo
<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>
Parâmetros de solicitação
Parâmetro | Descrição | Tipo | Padrão | Obrigatório |
---|---|---|---|---|
region | A região do Google Cloud onde a função é implantada. | String. | Nenhum. | Sim. |
projectId | ID do projeto do GCP. | String. | Nenhum. | Sim. |
functionName | O nome da função HTTP a ser invocada. Esse é o nome que você usou quando criou a função (não necessariamente um nome do código da função). | String. | Nenhum. | Sim. |
method | O método HTTP a ser usado ao invocar a função. | String. | GET |
Não. |
payload | O payload a ser enviado com a invocação da função. | JSON: | Nenhum. | Não. |
Resposta
O valor de resposta da função especificada, se houver.
Propriedades de resposta
Nenhum.
Referência de configuração
Use o código a seguir ao configurar e implantar a extensão para uso em proxies de API. Para saber como configurar uma extensão usando o console da Apigee, consulte Como adicionar e configurar uma extensão.
Propriedades de extensão comuns
As propriedades a seguir estão presentes para cada extensão.
Propriedade | Descrição | Padrão | Obrigatório |
---|---|---|---|
name |
Nome que será dado a esta configuração da extensão. | Nenhum | Sim |
packageName |
Nome do pacote de extensão fornecido pelo Apigee Edge. | Nenhum | Sim |
version |
Número da versão do pacote de extensão a partir do qual você está configurando uma extensão. | Nenhum | Sim |
configuration |
Valor de configuração específico da extensão que você está adicionando. Consulte Propriedades para este pacote de extensão. | Nenhum | Sim |
Propriedades deste pacote de extensão
Especifique valores para as propriedades de configuração a seguir específicas desta extensão.
Propriedade | Descrição | Padrão | Obrigatório |
---|---|---|---|
credenciais | Quando inserido no console do Apigee Edge, esse é o conteúdo do arquivo de chave da conta de serviço. Quando enviado pela API Management, ele é um valor codificado em base64 gerado no arquivo de chave da conta de serviço. | Nenhum. | Sim. |