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:

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:

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:

  1. 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.

  2. 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.

  3. 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:

    • 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
  4. (Opcional) Selecione Outra Rota para inserir detalhes de rotas adicionais.
  5. Selecione Próximo para revisar os detalhes informados para a implantação de API.
  6. Selecione Criar ou Salvar Alterações para criar ou atualizar a implantação de API.
  7. (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:

  1. 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ção routes. Se quiser aplicar as políticas apenas a uma rota específica, coloque as políticas na seção routes. 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:

    • <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"
          }
        }
      ]
    }
  2. Salve o arquivo JSON que contém a especificação de implantação de API.
  3. 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.

  4. (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"