Adicionando uma Função no Serviço OCI Functions como um Back-End do API Gateway
Descubra como criar uma implantação de API com o Gateway de API que expõe funções sem servidor definidas no OCI Functions.
Um requisito comum é criar uma API com funções sem servidor como um back-end e um gateway API fornecendo acesso de front-end a essas funções.
O OCI Functions permite criar funções sem servidor criadas como imagens Docker e enviadas para um registro Docker especificado. Uma definição de cada função é armazenada como metadados no servidor do OCI Functions. Quando uma função é chamada pela primeira vez, o OCI Functions extrai a imagem Docker da função do registro Docker especificado, executa-a como um contêiner Docker e executa a função. Se houver solicitações subsequentes para a mesma função, o OCI Functions direcionará essas solicitações ao mesmo contêiner em execução. Após um período de inatividade, o contêiner do Docker é interrompido.
Tendo usado o serviço do Gateway de API para criar um gateway de API, você poderá criar uma implantação de API que chame funções sem servidor definidas no OCI Functions.
Para que você possa usar funções sem servidor no OCI Functions como o back-end de uma API:
- As funções sem servidor referenciadas na especificação da implantação de API já devem ter sido criadas e implantadas em Funções do OCI. As funções devem ser roteáveis da VCN especificada para o gateway de API, por meio de um gateway de internet (no caso de um gateway de API pública) ou por meio de um gateway de serviço (no caso de um gateway de API privada). As funções devem usar códigos de status HTTP compatíveis com RFC para comunicar o status. Consulte Criando e Implantando Funções. Para obter um Tutorial do Desenvolvedor relacionado, consulte Funções: Chamar uma Função usando o Serviço API Gateway.
Políticas apropriadas já deverão existir que concedam acesso a funções sem servidor definidas no OCI Functions para:
- um grupo ao qual a sua conta de usuário pertence (consulte Criar uma Política para Conceder aos Usuários do Serviço API Gateway Acesso ao Serviço Functions)
- Gateways de API (consulte Criar uma Política para Fornecer Acesso de Gateways de API ao Serviço Functions)
Você pode adicionar back-ends de função sem servidor à especificação de implantação de API:
- usando a Console
- editando um arquivo JSON
Criação e Implantação de uma Função sem Servidor no OCI Functions para Uso como um Back-End do Serviço API Gateway
Para criar uma função sem servidor no OCI Functions que possa ser chamada de um gateway de API, siga as instruções na documentação do OCI Functions para:
- Confirmar se você concluiu as etapas de pré-requisito para usar o OCI Functions, conforme descrito em Preparação para o Serviço Functions.
- Crie e implante a função em um compartimento para o qual os gateways de API receberam acesso, conforme descrito em Criando e Implantando Funções.
Usando a Console para Adicionar Back-Ends de Função sem Servidor a uma Especificação de Implantação de API
Para adicionar um back-end de função do OCI Functions a uma especificação de implantação de API usando a Console:
-
Crie ou atualize uma implantação de API usando a Console. Selecione a opção Totalmente Nova e insira os detalhes na página Informações Básicas.
Para obter mais informações, consulte Implantando uma API em um Gateway de API por meio da Criação de uma Implantação de API e Atualizando um Gateway de API.
-
Na página Autenticação, especifique opções de autenticação.
Para obter mais informações sobre opções de autenticação, consulte Adicionando Autenticação e Autorização às Implantações de API.
-
Na página Rotas, crie uma nova rota e especifique:
-
Caminho: Um caminho para chamadas de API usando os métodos listados para o serviço de back-end. Observe que o caminho da rota que você especificar:
- é relativo ao prefixo do caminho de implantação (consulte Implantando uma API em um Gateway de API por meio da Criação de uma Implantação de API)
- deve ser precedido por uma barra ( / ) e pode ser apenas uma barra
- pode conter várias barras (desde que elas não sejam adjacentes) e pode terminar com uma barra
- pode incluir caracteres alfanuméricos maiúsculos e minúsculos
- pode incluir os caracteres especiais
$ - _ . + ! * ' ( ) , % ; : @ & =
- pode incluir parâmetros e curingas (consulte Adicionando Parâmetros de Caminho e Curingas a Caminhos de Rota)
- Métodos: Um ou mais métodos aceitos pelo serviço de back-end. Por exemplo,
GET, PUT
. -
Adicionar um único backend ou Adicionar vários backends: Se todas as solicitações devem ser roteadas para o mesmo back-end ou para rotear solicitações para diferentes back-ends de acordo com a variável de contexto e as regras informadas.
Essas instruções pressupõem que você deseja usar um único back-end; portanto, selecione Adicionar um único backend. Como alternativa, se você quiser usar back-ends diferentes, selecione Adicionar vários back-ends e siga as instruções em Usando a Console para Adicionar Seleção de Back-End Dinâmico a uma Especificação de Implantação de API.
- Tipo de Backend: O tipo do serviço de back-end como
Oracle Functions
. - Aplicativo no <compartment-name>: O nome do aplicativo no OCI Functions que contém a função. Você pode selecionar um aplicativo de outro compartimento.
- Nome da Função: O nome da função no OCI Functions.
Neste exemplo, a rota define uma função simples sem servidor Hello World no OCI Functions como um único back-end.
Campo: Informe: Caminho: /hello
Métodos: GET
Tipo de Back-end: Oracle Functions
Aplicativo no <compartment-name>: acmeapp
Nome da Função: acme-func
-
- (Opcional) Selecione Outra Rota para inserir detalhes de rotas adicionais.
- Selecione Próximo para revisar os detalhes informados para a implantação de API.
- Selecione Criar ou Salvar Alterações para criar ou atualizar a implantação de API.
-
(Opcional) Confirme se a API foi implantada com êxito, chamando-a (consulte Chamando uma API Implantada em um Gateway de API).
Se a função sem servidor aceitar parâmetros, inclua os da chamada à API. Por exemplo:
curl -k -X GET https://lak...sjd.apigateway.us-phoenix-1.oci.customer-oci.com/marketing/hello/ -d "name=john"
Editando um Arquivo JSON para Adicionar Back-Ends de Função sem Servidor a uma Especificação de Implantação de API
Para adicionar um back-end de função do OCI Functions a uma especificação de implantação de API em um arquivo JSON:
-
Usando seu editor de JSON preferido, crie a especificação de implantação de API em um arquivo JSON no formato:
{ "requestPolicies": {}, "routes": [ { "path": "<api-route-path>", "methods": ["<method-list>"], "backend": { "type": "ORACLE_FUNCTIONS_BACKEND", "functionId": "<identifier>" }, "requestPolicies": {} } ] }
em que:
"requestPolicies"
especifica políticas opcionais para controlar o comportamento de uma implantação de API. Se você quiser aplicar políticas a todas as rotas em uma especificação de implantação de API, coloque as políticas fora da seçãoroutes
. Se quiser aplicar as políticas apenas a uma rota específica, coloque as políticas na seçãoroutes
. Consulte Adicionando Políticas de Solicitação e Políticas de Resposta a Especificações de Implantação de API.-
<api-route-path>
especifica um caminho para chamadas de API usando os métodos listados para o serviço de back-end. Observe que o caminho da rota que você especificar:- é relativo ao prefixo do caminho de implantação (consulte Implantando uma API em um Gateway de API por meio da Criação de uma Implantação de API)
- deve ser precedido por uma barra ( / ) e pode ser apenas uma barra
- pode conter várias barras (desde que elas não sejam adjacentes) e pode terminar com uma barra
- pode incluir caracteres alfanuméricos maiúsculos e minúsculos
- pode incluir os caracteres especiais
$ - _ . + ! * ' ( ) , % ; : @ & =
- pode incluir parâmetros e curingas (consulte Adicionando Parâmetros de Caminho e Curingas a Caminhos de Rota)
<method-list>
especifica um ou mais métodos aceitos pelo serviço de back-end, separados por vírgulas. Por exemplo,GET, PUT
.<identifier>
especifica o OCID da função que você deseja usar como o serviço de back-end. Por exemplo,"functionId": "ocid1.fnfunc.oc1.phx.aaaaaaaaab______xmq"
.
Por exemplo, a seguinte especificação básica de implantação de API define uma função simples sem servidor Hello World no OCI Functions como um único back-end:
{ "routes": [ { "path": "/hello", "methods": ["GET"], "backend": { "type": "ORACLE_FUNCTIONS_BACKEND", "functionId": "ocid1.fnfunc.oc1.phx.aaaaaaaaab______xmq" } } ] }
- Salve o arquivo JSON que contém a especificação de implantação de API.
-
Use a especificação de implantação de API ao criar ou atualizar uma implantação de API das seguintes formas:
- especificando o arquivo JSON na Console quando você selecionar a opção Carregar uma API existente
- especificando o arquivo JSON em uma solicitação à API REST do serviço API Gateway
Para obter mais informações, consulte Implantando uma API em um Gateway de API por meio da Criação de uma Implantação de API.
-
(Opcional) Verifique se a API foi implantada e se a função sem servidor no OCI Functions pode ser chamada com sucesso ao chamar a API (consulte Chamando uma API Implantada em um Gateway de API).
Se a função sem servidor aceitar parâmetros, inclua os da chamada à API. Por exemplo:
curl -k -X GET https://lak...sjd.apigateway.us-phoenix-1.oci.customer-oci.com/marketing/hello/ -d "name=john"