Extensão do Google Cloud Functions

Você está visualizando a documentação do Apigee Edge.
Acesse a documentação da Apigee X.
info

Versão 2.0.0

Invocar as Funções do Cloud implantadas 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 oferece 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:

  1. Ative a API Cloud Functions.

  2. Defina e deploy funções no Cloud Functions para seu projeto do Google Cloud.

  3. Conceda o acesso do usuário pelo 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.

  4. Use o Console do GCP para gerar uma chave para a conta de serviço.

  5. Use o conteúdo do arquivo JSON de 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 em outro código. 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 a função Node.js

O exemplo a seguir mostra uma política ExtensionCallout que chama uma extensão do Google Cloud Functions. A extensão chama a função "hello world" padrão incluída quando você ativa a API Cloud Functions.

O JavaScript do 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 o 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, junto com os 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 Elemento<Output> para saber mais.

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. É o nome que você usou ao criar a função, não necessariamente um nome do código dela. 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 as informações a seguir ao configurar e implantar essa extensão para uso em proxies de API. Para saber como configurar uma extensão usando o console da Apigee, consulte 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 seguintes propriedades de configuração 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 de gerenciamento, é um valor codificado em base64 gerado a partir do arquivo de chave da conta de serviço. Nenhum. Sim.