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:
Ative a API Cloud Functions.
Defina e deploy funções no Cloud Functions para seu projeto do Google Cloud.
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.
Use o Console do GCP para gerar uma chave para a conta de serviço.
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. |