Você está lendo a documentação do Apigee Edge.
Acesse a documentação da
Apigee X. info
Versão 2.0.2
Invocar o Cloud Functions implantado no seu projeto do Google Cloud.
No momento, essa extensão oferece suporte à invocação de funções de gatilho HTTP.
Pré-requisitos
Este conteúdo fornece uma referência para configurar e usar essa extensão. Antes de usar a extensão de um proxy de API com a política ExtensionCallout, você precisa:
Ative a API Cloud Functions.
Defina e implante funções no Cloud Functions para seu projeto do Google Cloud.
Conceda acesso de usuário via IAM para o nível de acesso que você quer para a função. Por exemplo, é possível 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 usando a referência de configuração.
Sobre o Cloud Functions
Com o Google Cloud Functions, é possível criar e implantar funções no Google Cloud e invocá-las de outros códigos. Para uma introdução ao Cloud Functions, teste um dos guias de início rápido.
Amostras
O exemplo a seguir ilustra como invocar funções no Cloud Functions usando a política ExtensionCallout.
Invocar função do Node.js
O exemplo a seguir apresenta uma política ExtensionCallout 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 vai retornar essa propriedade. Caso contrário, ele vai retornar "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 código no Cloud Functions.
O código da função anterior é salvo no Cloud Functions como helloWorld. O código de configuração da política ExtensionCallout a seguir usa esse nome, além de valores de região e ID do projeto que correspondem aos detalhes 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 AssignMessage 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 semelhante a esta:
Hello yourself!
O valor padrão de parsed é true. Este exemplo define parsed="false" na tag <Output> da política,
o que impede que ela analise a resposta JSON.
Na maioria das situações ao usar a extensão do Cloud Functions, você define parsed="false".
Consulte o 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 a seguinte sintaxe: {objectName}.{jsonKey}. Exemplo:
function.response.message
Ações
invocar
Invoca uma função do Cloud.
No momento, essa extensão oferece suporte à 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 |
|---|---|---|---|---|
| região | A região do Google Cloud em que 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 ao criar a função (não necessariamente um nome do código da função). | String. | Nenhum. | Sim. |
| método | 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 da resposta
Nenhum.
Referência de configuração
Use o seguinte ao configurar e implantar essa extensão para uso em proxies de API. Para saber como configurar uma extensão usando o console do Apigee, consulte Adicionar e configurar uma extensão.
Propriedades comuns de extensão
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 seguintes propriedades de configuração específicas dessa 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 sua conta de serviço. Quando enviado pela API Management, é um valor codificado em base64 gerado do arquivo de chave da conta de serviço. | Nenhum. | Sim. |