Archivos de empaquetado para funciones de solo código

Obtén más información sobre los requisitos de archivo para las funciones de solo código en OCI Functions, incluidas las reglas de empaquetado específicas del tiempo de ejecución y de la arquitectura.

Descripción general

Un archivo de funciones de solo código debe utilizar la estructura esperada por el tiempo de ejecución seleccionado y la arquitectura de la aplicación OCI Functions. Las funciones de solo código admiten aplicaciones x86, Arm y de arquitectura múltiple, y el diseño del archivo debe coincidir con la unidad de la aplicación.

Formatos de archivo soportados

Las funciones de solo código admiten archivos ZIP.

Para las funciones de solo código Java, también puede utilizar un archivo JAR para una función simple. Utilice un archivo ZIP para funciones de solo código Java cuando la función incluya directorios de archivo específicos del tiempo de ejecución, recursos o dependencias nativas. Cualquier archivo JAR que proporcione debe ser un JAR uber/fat.

Resumen de archivo en tiempo de ejecución

El diseño del archivo para una función de solo código depende del tiempo de ejecución y de si la aplicación utiliza una sola unidad de arquitectura o una unidad de arquitectura múltiple.

Tiempo de ejecución Código de función o artefacto necesarios Recursos opcionales Dependencias opcionales Requisito de controlador
Ir Un binario ejecutable de Linux enlazado estáticamente y autónomo denominado func. Para aplicaciones de arquitectura única, coloque func en la raíz del archivo. Para aplicaciones de arquitectura múltiple, coloque func en fn-arch-x86/ y fn-arch-arm/. Un directorio denominado resources/ es opcional. Para los archivos Go de varias arquitecturas, coloque resources/ dentro de cada directorio de arquitectura cuando sea necesario. Dependencias de paquetes en el ejecutable Go. No hay ninguna propiedad de manejador independiente. El ejecutable debe tener el nombre func.
Java Archivo JAR Uber/fat para una función simple, o archivo ZIP que contiene exactamente un archivo JAR uber/fat de nivel raíz. Un directorio denominado resources/ es opcional en la raíz del archivo cuando se utiliza un archivo ZIP. Un directorio denominado native/ es opcional cuando se necesitan dependencias nativas. Coloque los archivos de dependencia nativos en los directorios específicos de la arquitectura que necesita la unidad de aplicación. Manejador necesario.
Node.js Directorio function/ que contiene el archivo JavaScript del manejador. Un directorio denominado resources/ es opcional en la raíz del archivo. Un directorio denominado node_modules/ es opcional. Para las dependencias nativas de varias arquitecturas, native/ es opcional, pero, si está presente, debe contener fn-arch-x86/ y fn-arch-arm/. Manejador necesario.
Python Directorio function/ que contiene el archivo Python del manejador. Un directorio denominado resources/ es opcional en la raíz del archivo. Un directorio denominado python/ es opcional. Para las dependencias nativas de varias arquitecturas, native/ es opcional, pero, si está presente, debe contener fn-arch-x86/ y fn-arch-arm/. El manejador es necesario en formato <file>.<function>.

Cómo afecta la arquitectura de la aplicación al diseño del archivo

La unidad de aplicación determina la arquitectura del procesador en la que se pueden ejecutar las funciones de la aplicación. Un archivo de funciones de solo código debe incluir los archivos necesarios para la unidad de la aplicación.

Para aplicaciones con una unidad de arquitectura única, empaquete archivos para la arquitectura seleccionada. Para aplicaciones con una unidad de arquitectura múltiple, los archivos de paquetes para arquitecturas x86 y Arm cuando el tiempo de ejecución requiere archivos específicos de la arquitectura.

El empaquetado específico de la arquitectura es más importante cuando la función incluye artefactos compilados que son específicos de una arquitectura de CPU.

Por ejemplo, las funciones Go se compilan como binarios ejecutables de Linux conectados estáticamente y autónomos. En un binario enlazado estáticamente, todas las bibliotecas externas, dependencias y código de tiempo de ejecución que una aplicación necesita ejecutar se compilan y empaquetan directamente en un único archivo ejecutable independiente. Las funciones Node.js, Python y Java también pueden incluir dependencias nativas que deben coincidir con la arquitectura del sistema operativo y del procesador que utiliza la función.

Para obtener más información sobre la selección de una unidad de aplicación, consulte Especificación de la arquitectura de recursos informáticos en la que ejecutar funciones. Para los diseños de archivo específicos del tiempo de ejecución, consulte los siguientes temas:

Dependencias nativas

Las dependencias nativas son bibliotecas compiladas o binarios que una función utiliza en tiempo de ejecución. Las dependencias nativas se crean para un sistema operativo y una arquitectura de procesador específicos, como Linux en x86 o Linux en Arm.

Puesto que las dependencias nativas son específicas de la plataforma, empaquételas para la arquitectura en la que se puede ejecutar la función. Si la aplicación utiliza una unidad de arquitectura única, incluya dependencias nativas para esa arquitectura. Si la aplicación utiliza una unidad de arquitectura múltiple, incluya dependencias nativas para las arquitecturas x86 y Arm, utilizando el diseño de archivo específico del tiempo de ejecución.

Instalación de dependencia

Para las funciones de código solo de Python y Node.js, OCI Functions no descarga las dependencias de usuario durante la creación de la función. Empaquetar las dependencias necesarias en el archivo antes de crear o actualizar la función.

Temas específicos de tiempo de ejecución