Adición de una función en OCI Functions como un backend de gateway de API

Descubra cómo crear un despliegue de API con gateway de API que muestre las funciones sin servidor definidas en OCI Functions.

Un requisito común es crear una API con funciones sin servidor como backend y un gateway de API que proporcione acceso de front-end a dichas funciones.

OCI Functions le permite crear funciones sin servidor incorporadas como imágenes de Docker y transferidas a un registro Docker especificado. Se almacena una definición de cada función como metadatos en el servidor de OCI Functions. Cuando se llama a una función por primera vez, OCI Functions extrae la imagen de Docker de la función desde el registro de Docker especificado, la ejecuta como un contenedor de Docker y ejecuta la función. Si hay solicitudes posteriores para la misma función, OCI Functions las dirige al mismo contenedor en ejecución. Después de un período de inactividad, el contenedor Docker se para.

Después de utilizar el servicio de gateway de API para crear un gateway de API, puede crear un despliegue de API que llame a funciones sin servidor definidas en OCI Functions.

Antes de utilizar funciones sin servidor en OCI Functions como backend para una API:

Puede agregar backends de función sin servidor a una especificación de despliegue de API mediante:

  • uso de la Consola
  • edición de un archivo JSON

Creación y despliegue de una función sin servidor en OCI Functions para su uso como backend de gateway de API

Para crear una función sin servidor en OCI Functions a la que se pueda llamar desde un gateway de API, siga las instrucciones de la documentación de OCI Functions para:

Uso de la consola para agregar backends de función sin servidor a una especificación de despliegue de API

Para agregar un backend de función de OCI Functions a una especificación de despliegue de API mediante la consola:

  1. Cree o actualice un despliegue de API con la consola, seleccione la opciónDesde cero e introduzca los detalles en la página Información básica.

    Para obtener más información, consulte Despliegue de una API en un gateway de API a través de la creación de un despliegue de API y Actualización de un gateway de API o un despliegue de API.

  2. En la página Autenticación, especifique las opciones de autenticación.

    Para obtener más información sobre las opciones de autenticación, consulte Agregación de autenticación y autorización a despliegues de API.

  3. En la página Rutas, cree una nueva ruta y especifique:

    • Ruta de acceso: ruta de acceso al servicio de backend para llamadas de API mediante los métodos enumerados. Tenga en cuenta que la ruta de acceso especificada:

    • Métodos: uno o varios métodos aceptados por el servicio de backend. Por ejemplo, GET, PUT.
    • Agregar un único backend o Agregar varios backends: indica si se deben enrutar todas las solicitudes al mismo backend o si se deben enrutar solicitudes a distintos backends según la variable de contexto y las reglas que introduzca.

      En estas instrucciones se supone que desea utilizar un único backend, por lo que seleccione Agregar un único backend. Como alternativa, si desea utilizar backends diferentes, seleccione Agregar varios backends y siga las instrucciones de Uso de la consola para agregar una selección de backend dinámica a una especificación de despliegue de API.

    • Tipo de backend: el tipo de servicio de backend es Oracle Functions.
    • Aplicación en <compartment-name>: nombre de la aplicación en OCI Functions que contiene la función. Puede seleccionar una aplicación de otro compartimento.
    • Nombre de función: nombre de la función de OCI Functions.

    En este ejemplo, la ruta define una función sencilla de Hello World sin servidor en OCI Functions como un único backend.

    Campo: Introducir:
    Ruta de acceso: /hello
    Métodos: GET
    Tipo de backend: Oracle Functions
    Aplicación en <compartment-name>: acmeapp
    Nombre de función: acme-func
  4. (Opcional) Haga clic en Otra ruta para introducir detalles de rutas adicionales.
  5. Haga clic en Siguiente para revisar los detalles introducidos para el despliegue de API.
  6. Haga clic en Crear o en Guardar cambios para crear o actualizar el despliegue de API.
  7. (Opcional) Confirme que la API se ha desplegado correctamente llamándola. Para ello, consulte Llamada a una API desplegada en un gateway de API.

    Si la función sin servidor acepta parámetros, inclúyalos en la llamada a la API. Por ejemplo:

    curl -k -X GET https://lak...sjd.apigateway.us-phoenix-1.oci.customer-oci.com/marketing/hello/ -d "name=john"

Edición de un archivo JSON para agregar backends de función sin servidor a una especificación de despliegue de API

Para agregar un backend de función de OCI Functions a una especificación de despliegue de API en un archivo JSON:

  1. Con su editor de JSON preferido, cree la especificación de despliegue API en un archivo JSON con el formato:

    {
      "requestPolicies": {},
      "routes": [
        {
          "path": "<api-route-path>",
          "methods": ["<method-list>"],
          "backend": {
            "type": "ORACLE_FUNCTIONS_BACKEND",
            "functionId": "<identifier>"
          },
          "requestPolicies": {}
        }
      ]
    }

    donde:

    • "requestPolicies" especifica políticas opcionales para controlar el comportamiento de un despliegue de API. Si desea aplicar políticas a todas las rutas de una especificación de despliegue de API, coloque las políticas fuera de la sección routes. Si desea aplicar las políticas únicamente a una ruta concreta, coloque las políticas en la sección routes. Consulte Agregación de políticas de solicitud y políticas de respuesta a especificaciones de despliegue de API.
    • <api-route-path> especifica una ruta de acceso al servicio de backend para las llamadas de API mediante los métodos enumerados. Tenga en cuenta que la ruta de acceso especificada:

    • <method-list> especifica uno o varios métodos aceptados por el servicio de backend, separados por comas. Por ejemplo, "GET, PUT".
    • <identifier> especifica el OCID de la función que desea utilizar como servicio de backend. Por ejemplo, "functionId": "ocid1.fnfunc.oc1.phx.aaaaaaaaab______xmq".

    Por ejemplo, la siguiente especificación de despliegue de API básico define una función sencilla de Hello World sin servidor en OCI Functions como un único backend:

    {
      "routes": [
        {
          "path": "/hello",
          "methods": ["GET"],
          "backend": {
            "type": "ORACLE_FUNCTIONS_BACKEND",
            "functionId": "ocid1.fnfunc.oc1.phx.aaaaaaaaab______xmq"
          }
        }
      ]
    }
  2. Guarde el archivo JSON que contiene la especificación de despliegue de API.
  3. Utilice la especificación de despliegue de API al crear o actualizar un despliegue de API de las siguientes formas:

    • Especificando el archivo JSON en la consola al seleccionar la opción Cargar API existente.
    • Especificando el archivo JSON en una solicitud para la API REST de gateway de API.

    Para obtener más información, consulte Despliegue de una API en un gateway de API mediante la creación de un despliegue de API.

  4. (Opcional) Confirme que la API se ha desplegado y que se puede llamar correctamente a la función sin servidor en OCI Functions llamando a la API. Para ello, consulte Llamada a una API desplegada en un gateway de API.

    Si la función sin servidor acepta parámetros, inclúyalos en la llamada a la API. Por ejemplo:

    curl -k -X GET https://lak...sjd.apigateway.us-phoenix-1.oci.customer-oci.com/marketing/hello/ -d "name=john"