Acerca de las funciones de solo código
Descubra las funciones de solo código, una forma de crear funciones en OCI Functions a partir de archivos en lugar de imágenes de contenedor.
Descripción general
OCI Functions soporta dos modelos de despliegue:
- Funciones de sólo código que utilizan un archivo de funciones.
- Funciones basadas en imágenes de contenedor.
Con funciones de solo código, proporciona el código y las dependencias en un archivo y selecciona un tiempo de ejecución gestionado soportado. OCI Functions comprueba que el archivo utiliza el formato y la estructura de directorios necesarios para la arquitectura de aplicación y tiempo de ejecución seleccionada, y gestiona el entorno de ejecución utilizado para ejecutar la función.
Con funciones de solo código, OCI Functions gestiona el entorno de ejecución, incluido el sistema operativo y el tiempo de ejecución de lenguajes cuando corresponde. OCI Functions publica versiones de tiempo de ejecución soportadas a lo largo del tiempo, y usted controla cómo su función adopta esas versiones definiendo el modo de actualización de tiempo de ejecución.
Utilizar funciones de solo código cuando:
- Desea la ruta de incorporación más sencilla para los tiempos de ejecución de Functions estándar.
- Desea desplegar el código de función sin crear una imagen de contenedor.
- La función se puede ejecutar en uno de los tiempos de ejecución gestionados soportados.
- Desea que OCI Functions gestione el tiempo de ejecución.
- Puede empaquetar el código y las dependencias en la estructura de archivo necesaria.
- No necesita paquetes o configuración personalizados del sistema operativo, un tiempo de ejecución personalizado ni una imagen base personalizada.
Utilizar funciones basadas en imágenes de contenedor cuando:
- Necesita un control total sobre el sistema operativo, los paquetes, el tiempo de ejecución o el contenido de la imagen.
- La función requiere bibliotecas o herramientas del sistema personalizadas que no están disponibles en el tiempo de ejecución gestionado.
- Necesita una imagen base personalizada.
- Necesita un control total sobre cómo se crea, escanea, firma y publica el artefacto de despliegue final como una imagen de contenedor.
- Debe gestionar el análisis de vulnerabilidades de imágenes o la firma de imágenes como parte del proceso de despliegue.
Puede proporcionar el archivo para una función de solo código de una de las siguientes maneras:
Cargue el archivo de almacenamiento directamente al crear o actualizar la función. Utilice la carga directa de archivos para archivos de hasta 25 MB.
Almacene el archivo en Object Storage y cree o actualice la función especificando el cubo, el espacio de nombres y el nombre del objeto. Utilice un origen de archivo de Object Storage para archivos de hasta 250 MB.
Funciones de solo código comparadas con funciones basadas en imágenes
| Área | Funciones de solo código | Funciones basadas en imágenes |
|---|---|---|
| Artefacto de despliegue | Archivo de almacenamiento, como un archivo ZIP. Para Java, utilice JAR para una función simple o ZIP al incluir recursos o dependencias nativas. Los archivos JAR de Java deben ser archivos JAR uber/fat. | Imagen de contenedor |
| La imagen de contenedor se ha creado | Nº | Sí |
| Transfiere la imagen a OCIR | Nº | Sí |
| Tiempo de ejecución | Seleccione un tiempo de ejecución gestionado soportado | El tiempo de ejecución se incluye en la imagen |
| Gestión de tiempo de ejecución | Entorno de ejecución gestionado por OCI Functions | Gestionado por usted como parte de la imagen |
| Ideal para | Tiempos de ejecución estándar, incorporación más sencilla, gestión operativa simplificada y flujos de trabajo basados en archivos | Tiempos de ejecución personalizados, paquetes personalizados del sistema operativo, dependencias especializadas, pipelines personalizados de compilación/firma/escaneo |
| Su responsabilidad | Empaquetar el código correctamente, incluir dependencias, elegir tiempo de ejecución, función de prueba | Crear imagen, gestionar imagen base, aplicar parches al sistema operativo/tiempo de ejecución, transferir imagen, función de prueba |
Usted es responsable del código y las dependencias que incluye en los archivos de funciones. Escanee el código de función y las dependencias empaquetadas de acuerdo con las políticas de seguridad de su organización. OCI Functions gestiona el entorno de ejecución para la función de solo código según el modo de actualización de tiempo de ejecución seleccionado.
Las funciones de solo código admiten los siguientes tiempos de ejecución:
- Go (para las funciones de código Go, proporciona un binario ejecutable de Linux enlazado estáticamente y autónomo, y OCI Functions proporciona el entorno de tiempo de ejecución de Oracle Linux soportado)
- Java
- Node.js
- Python
Ruby y C# no están soportados para funciones de solo código.
Las funciones de solo código están disponibles en las regiones OC1.
Las funciones de solo código admiten aplicaciones x86, ARM y de arquitectura múltiple. El diseño del archivo debe coincidir con la arquitectura de la aplicación OCI Functions. La estructura del archivo puede variar según el tiempo de ejecución y la arquitectura de la aplicación.
Límites
| Límite | Valor |
|---|---|
| Tamaño de carga de archivo directo | 25 MB |
| Tamaño de origen de archivo de almacenamiento de objetos | 250 MB |
| Formatos de archivo soportados | Código postal. Para Java, JAR también está soportado para una función simple. Los archivos JAR de Java deben ser archivos JAR uber/fat. |
Cambio entre funciones basadas en imágenes y solo en código
No puede cambiar una función de solo código a una función basada en imágenes de contenedor. Tampoco puede cambiar una función basada en imágenes de contenedor a una función de solo código. Para cambiar entre modelos de despliegue de funciones solo de código y basados en imágenes, cree una nueva función.
Política de IAM necesaria para activar el acceso a los archivos de Object Storage
Si crea o actualiza una función de solo código mediante un archivo almacenado en Object Storage, debe existir una política de IAM en el arrendamiento donde reside el archivo para permitir que la entidad de recurso de la aplicación OCI Functions lea el objeto de archivo. Por ejemplo:
Allow any-user to read objects in compartment <compartment-name> where all {request.principal.type = 'fnapp', request.principal.compartment.id = '<compartment-ocid>', target.object.name = '<object-name-containing-the-archive>', target.bucket.name = '<bucket-name>'}