Descubra los kits de desarrollo de funciones (FDK) que utiliza OCI Functions para soportar diferentes idiomas.
OCI Functions utiliza Fn Project Function Development Kits (FDK) para soportar lenguajes populares: Java, Node.js, Python, Go, Ruby y C#. Un FDK es un conjunto de bibliotecas auxiliares que manejan elementos internos del sistema (como protocolos, análisis de entrada y salida y lógica para contenedores de funciones). Cada idioma FDK consta de tres componentes:
Una imagen base en tiempo de creación, que contiene bibliotecas y herramientas específicas del lenguaje para crear funciones ejecutables.
Una imagen base de tiempo de ejecución, para proporcionar un entorno de tiempo de ejecución específico del lenguaje en el que ejecutar funciones ejecutables.
Una biblioteca FDK (en el caso de Java, la biblioteca FDK se incluye en las imágenes base de tiempo de creación y tiempo de ejecución).
Los FDK son específicos de versiones particulares de un idioma determinado. Oracle publica periódicamente nuevas imágenes base de tiempo de creación y tiempo de ejecución de FDK para los idiomas soportados (por ejemplo, para emitir un parche o para soportar una versión recién publicada del idioma). En el caso de Java, una actualización de FDK siempre incluye los tres componentes (las imágenes base de tiempo de espera y tiempo de ejecución, así como la biblioteca de FDK). En el caso de otros idiomas, una actualización de FDK puede incluir uno o más de los componentes.
Al crear una función por primera vez con el comando fn init de la CLI de Fn Project, especifique el idioma en el que se escribe el código fuente de la función mediante la opción de comando --runtime. Además de especificar un idioma, puede especificar opcionalmente una versión del idioma. Si no especifica la versión de idioma, la CLI de Fn Project asume que desea usar la versión más reciente del FDK de idioma disponible. La CLI de Fn Project registra el valor de la opción de comando --runtime como el valor del parámetro runtime: en func.yaml de la función. La CLI de Fn Project también agrega valores para los parámetros build_image: y run_image: en el archivo func.yaml según la opción de comando --runtime que especifique, de la siguiente manera:
Si especifica simplemente un idioma como valor de la opción de comando --runtime, la CLI de Fn Project agrega las versiones más recientes de las imágenes base de tiempo de creación y tiempo de ejecución de FDK de ese idioma como valores para los parámetros build_image: y run_image:. Por ejemplo, si introduce fn init --runtime python helloworld-func y Python 3.11 es la versión más reciente disponible, la CLI de Fn Project agrega lo siguiente:
Si especifica un idioma y una versión como valor de la opción de comando --runtime, la CLI de Fn Project agrega la versión correspondiente de las imágenes base de tiempo de creación y tiempo de ejecución de FDK del idioma como valores para los parámetros build_image: y run_image:. Por ejemplo, si introduce fn init --runtime python3.9 helloworld-func, la CLI de Fn Project agrega lo siguiente:
Al crear una función con fn build o fn deploy, la CLI de Fn Project crea una imagen de Docker (y, en el caso de fn deploy, transfiere la imagen a un registro de Docker). La imagen de Docker contiene las dependencias de tiempo de ejecución de la función. Si la función está escrita en un idioma para el que está disponible un FDK, la CLI de Fn Project:
Utiliza la imagen base de tiempo de creación especificada por el parámetro build_image: para crear una versión ejecutable de la función e incluye la función ejecutable en la imagen de Docker.
Incluye la imagen base de tiempo de ejecución especificada por el parámetro run_image: en la imagen de Docker, para proporcionar el entorno de tiempo de ejecución en el que ejecutar la función ejecutable.
La CLI de Fn Project utiliza versiones almacenadas en caché de las imágenes base de tiempo de compilación y tiempo de ejecución del FDK, si están disponibles. Si las versiones almacenadas en caché de las imágenes base no están disponibles, la CLI de Fn Project extrae las imágenes base de tiempo de creación y tiempo de ejecución del lenguaje de FDK de Docker Hub.
Tenga en cuenta que si se publica una nueva versión de un lenguaje FDK, los valores de los parámetros build_image: y run_image: en el archivo func.yaml de una función existente no se actualizan automáticamente. Las versiones iniciales de las imágenes base de tiempo de creación y tiempo de ejecución del lenguaje de FDK que se especificaron anteriormente como valores para los parámetros build_image: y run_image: cuando se creó la función se siguen utilizando para crear el ejecutable de la función y para proporcionar el entorno de tiempo de ejecución. El uso de los valores iniciales de los parámetros build_image: y run_image: ayuda a garantizar que el código de función siga siendo compatible con las imágenes base de tiempo de creación y tiempo de ejecución del lenguaje de FDK.
Si desea volver a crear una función existente con una versión de idioma diferente e incluir un tiempo de ejecución diferente en la imagen de Docker de la función, cambie los valores de los parámetros build_image: y run_image: en el archivo func.yaml de la función para hacer referencia a una versión diferente del lenguaje FDK. Para mantener la coherencia y evitar confusiones, actualice el valor del parámetro runtime: para que se corresponda con la opción de comando --runtime para la versión del lenguaje FDK. En el caso de las funciones Java, también tiene que cambiar la versión de FDK en el archivo pom.xml de la función.
Ejemplos
En los ejemplos de esta sección, se asume que está utilizando la versión 0.6.7 (o posterior) de la CLI de Fn Project y que Python 3.11 es la versión más reciente de Python admitida por el FDK de Python.
Ejemplo 1: Creación de una nueva función con Python 3.11
Si desea crear una nueva función con Python 3.11, ejecute uno de los siguientes comandos:
Comando
CopiarProbar
fn init --runtime python helloworld-func
Comando
CopiarProbar
fn init --runtime python3.11 helloworld-func
En el caso de fn init --runtime python helloworld-func, la CLI de Fn Project registra el valor de la opción de comando --runtime como el valor del parámetro runtime: en func.yaml de la función y agrega los números de versión más recientes de las imágenes base de tiempo de creación y tiempo de ejecución de FDK de Python como valores para los parámetros build_image: y run_image::
En el caso de fn init --runtime python3.11 helloworld-func, la CLI de Fn Project registra el valor de la opción de comando --runtime como el valor del parámetro runtime: en func.yaml de la función y agrega las imágenes base de tiempo de creación y tiempo de ejecución de FDK de Python 3.11 como valores para los parámetros build_image: y run_image::
A partir de ahora, cuando se crea la función, la CLI de Fn Project sigue utilizando las versiones iniciales de las imágenes base de tiempo de creación y tiempo de ejecución para crear el ejecutable de la función y proporcionar el entorno de tiempo de ejecución.
Ejemplo 2: Creación de una nueva función con Python 3.9
Si desea crear una nueva función con Python 3.9, ejecute el siguiente comando:
Comando
CopiarProbar
fn init --runtime python3.9 helloworld-func
La CLI de Fn Project registra el valor de la opción de comando --runtime como el valor del parámetro runtime: en func.yaml de la función y agrega la versión de las imágenes base de tiempo de creación y tiempo de ejecución de FDK de Python que son adecuadas para Python 3.9 como valores para los parámetros build_image: y run_image:, como se muestra:
A partir de ahora, al crear la función, la CLI de Fn Project sigue utilizando las versiones iniciales de Python 3.9 de las imágenes base de tiempo de creación y tiempo de ejecución para crear el ejecutable de la función y proporcionar el entorno de tiempo de ejecución.
Ejemplo 3: Reconstrucción de una función existente con Python 3.8
Si desea reconstruir una función existente que se ha creado inicialmente con Python 3.8 y desea continuar con la creación con Python 3.8, ejecute el siguiente comando:
Comando
CopiarProbar
fn build helloworld-func
Los parámetros build_image: y run_image: del archivo func.yaml se definieron originalmente en versiones de las imágenes base de tiempo de creación y tiempo de ejecución del FDK de Python adecuadas para Python 3.8. Al crear la función, la CLI de Fn Project sigue utilizando las mismas imágenes base de tiempo de compilación y tiempo de ejecución de Python 3.8 para crear el ejecutable de la función y proporcionar el entorno de tiempo de ejecución.
Ejemplo 4: Reconstrucción de una función Python 3.8 existente con Python 3.11
Si desea reconstruir una función existente que se creó inicialmente con Python 3.8 y ahora desea crearla con Python 3.11:
Para mantener la coherencia y evitar confusiones, actualice el valor del parámetro runtime: para que se corresponda con la opción de comando --runtime para Python 3.11.
La CLI de Fn Project utiliza las versiones de las imágenes base de tiempo de creación y tiempo de ejecución del FDK de Python especificadas por los parámetros build_image: y run_image: en el archivo func.yaml para crear el ejecutable de la función y proporcionar el entorno de tiempo de ejecución. A partir de ahora, cuando se crea la función, la CLI de Fn Project utiliza esas versiones de las imágenes base de tiempo de creación y tiempo de ejecución.
Comportamiento en versiones anteriores de la CLI de Fn Project (anterior a la versión 0.6.7) 🔗
Con versiones de la CLI de Fn Project anteriores a la versión 0.6.7, cada vez que creaba o reconstruía una función escrita en un lenguaje compatible con un FDK (con la excepción de Java, consulte a continuación), la CLI de Fn Project utilizaba versiones almacenadas en caché de las imágenes base de tiempo de creación y tiempo de ejecución del lenguaje de FDK, si estaban disponibles. Si las versiones almacenadas en caché de las imágenes base no estaban disponibles, la CLI de Fn Project extrajo las versiones más recientes de las imágenes base de Docker Hub. Como resultado, no puede estar seguro de que el código de función sea compatible con la imagen base de tiempo de compilación del lenguaje de FDK utilizada para crear el ejecutable de la función o con la imagen base de tiempo de ejecución utilizada para proporcionar el entorno de tiempo de ejecución.
Puede seguir creando funciones existentes exactamente como antes, no especificando explícitamente la versión del lenguaje FDK al crear una función. La CLI de Fn Project seguirá utilizando versiones almacenadas en caché de las imágenes base de tiempo de creación y tiempo de ejecución del FDK (si están disponibles) o extraerá las versiones más recientes de las imágenes base de Docker Hub (si las imágenes almacenadas en caché no están disponibles).
A partir de la versión 0.6.7 de la CLI de Fn Project:
Si especifica explícitamente la versión del lenguaje FDK al crear una función, la CLI de Fn Project agrega esa versión como el valor de los parámetros build_image: y run_image: en el archivo func.yaml de la función.
Si crea o despliega una función y el archivo func.yaml de la función aún no contiene los parámetros build_image: y run_image: porque se creó con una versión anterior de la CLI de Fn Project, la CLI de Fn Project agrega los parámetros al archivo func.yaml. Los valores de los parámetros build_image: y run_image: registran las versiones de las imágenes base de tiempo de creación y tiempo de ejecución de FDK que utiliza actualmente la CLI de Fn Project.
A menos que especifique explícitamente una versión diferente al volver a crear la función más tarde, la CLI de Fn Project sigue utilizando la versión de FDK especificada por los parámetros build_image: y run_image:.
Tenga en cuenta que, en el caso de las funciones Java, las versiones anteriores de Fn Project CLI agregaron los parámetros runtime:, build_image: y run_image: a los archivos func.yaml, para ayudar a garantizar que el código de función siguiera siendo compatible con las imágenes base de tiempo de creación y tiempo de ejecución de Java FDK.
Si desea volver a crear una función existente con una versión de idioma diferente e incluir un tiempo de ejecución diferente en la imagen de Docker de la función, cambie los valores de los parámetros build_image: y run_image: en el archivo func.yaml de la función para hacer referencia a una versión diferente del lenguaje FDK. Para mantener la coherencia y evitar confusiones, actualice el valor del parámetro runtime: para que se corresponda con la opción de comando --runtime para la versión del lenguaje FDK. En el caso de las funciones Java, también tiene que cambiar la versión de FDK en el archivo pom.xml de la función.
Cómo averiguar las versiones de idioma soportadas por los FDK 🔗
Para conocer las versiones de lenguajes soportados por los FDK (Java, Node.js, Python, Go, Ruby y C#):
Si aún no se ha actualizado, actualice la CLI de Fn Project a la versión más reciente. Consulte Upgrading the Fn Project CLI.
Cómo averiguar la versión de las imágenes base de tiempo de creación y tiempo de ejecución de FDK utilizadas para una función existente 🔗
Para averiguar la versión de las imágenes base de tiempo de creación y tiempo de ejecución de FDK que la CLI de Fn Project está utilizando actualmente para crear el ejecutable de la función y proporcionar el entorno de tiempo de ejecución:
Si aún no se ha actualizado, actualice la CLI de Fn Project a la versión más reciente. Consulte Upgrading the Fn Project CLI.
En una ventana de terminal, cambie al directorio que contiene el código de la función.
Utilice los comandos de fn build o fn deploy para crear o desplegar la función.
Los parámetros build_image: y run_image: se agregan al archivo func.yaml de la función, si aún no están presentes. Los valores de parámetro muestran la versión de las imágenes base de tiempo de creación y tiempo de ejecución de FDK que la CLI de Fn Project está utilizando actualmente para crear el ejecutable de la función y proporcionar el entorno de tiempo de ejecución.
Cómo averiguar las versiones de imagen base de tiempo de creación y tiempo de ejecución de FDK por defecto para un idioma determinado 🔗
Para averiguar las versiones predeterminadas de la imagen base de tiempo de creación y tiempo de ejecución de FDK que la CLI de Fn Project está utilizando actualmente para crear ejecutables de funciones, y para proporcionar el entorno de tiempo de ejecución, para las funciones escritas en un lenguaje determinado:
Si aún no se ha actualizado, actualice la CLI de Fn Project a la versión más reciente. Consulte Upgrading the Fn Project CLI.
En una ventana de terminal, introduzca:
Comando
CopiarProbar
fn init --runtime <language> hello-func
donde <language> es el idioma concreto en el que está interesado (uno de los siguientes: java, python, node, ruby, go, kotlin o dotnet (para C#)).
Por ejemplo:
Comando
CopiarProbar
fn init --runtime java hello-func
Cambie al directorio /hello-func creado para la nueva función y abra el archivo func.yaml en un editor de texto.
Las versiones de imagen base de tiempo de creación y tiempo de ejecución de FDK por defecto para el idioma especificado se muestran como valores de los parámetros build_image: y run_image:.
Cómo averiguar las últimas versiones de imagen base de tiempo de compilación y tiempo de ejecución de FDK para una versión de idioma soportada concreta 🔗
Para averiguar las últimas versiones de imagen base de tiempo de compilación y tiempo de ejecución de FDK que utiliza actualmente la CLI de Fn Project para crear ejecutables y proporcionar el entorno de tiempo de ejecución para funciones de una versión concreta de un lenguaje determinado.
Si aún no se ha actualizado, actualice la CLI de Fn Project a la versión más reciente. Consulte Upgrading the Fn Project CLI.
Para ver las versiones de idioma soportadas disponibles, ejecute:
Tenga en cuenta los valores válidos de la opción de comando --runtime para el idioma concreto en el que está interesado, que incluyen los números de versiones soportadas. Por ejemplo:
java17, java11, java8
python3.11, python3.9, python3.8
node18, node16, node14
ruby2.7, ruby3.1
go1.19, go1.18
dotnet3.1, dotnet6.0, dotnet8.0 (para C#)
En una ventana de terminal, introduzca:
Comando
CopiarProbar
fn init --runtime <language-version> hello-func
donde <language-version> es el idioma y la versión particulares en los que está interesado.
Por ejemplo:
Comando
CopiarProbar
fn init --runtime java17 hello-func
Cambie al directorio /hello-func creado para la nueva función y abra el archivo func.yaml en un editor de texto.
Las últimas versiones de imagen base de tiempo de creación y tiempo de ejecución de FDK soportadas para la versión de idioma especificada se muestran como valores de los parámetros build_image: y run_image:.
Cómo actualizar una función existente para utilizar la última versión de imagen base de tiempo de compilación y tiempo de ejecución de FDK para un lenguaje soportado 🔗
Para actualizar una función existente de modo que la CLI de Fn Project utilice las últimas versiones de imagen base de tiempo de creación y tiempo de ejecución de FDK para un lenguaje soportado para crear el ejecutable de la función y para proporcionar el entorno de tiempo de ejecución:
Si aún no se ha actualizado, actualice la CLI de Fn Project a la versión más reciente. Consulte Upgrading the Fn Project CLI.
En una ventana de terminal, cambie al directorio que contiene el código de la función y abra el archivo func.yaml en un editor de texto.
Los parámetros build_image: y run_image: muestran las versiones de imagen base de tiempo de creación y tiempo de ejecución de FDK que utiliza actualmente la CLI de Fn Project para crear el ejecutable de la función y proporcionar el entorno de tiempo de ejecución. Por ejemplo:
Si los parámetros build_image: y run_image: no están presentes en el archivo func.yaml, utilice los comandos fn build o fn deploy para crear la función. Si lo hace, se agregarán los parámetros build_image: y run_image: al archivo func.yaml, definidos en las versiones de imagen de compilación de FDK y de imagen de tiempo de ejecución que utiliza actualmente la CLI de Fn Project.
Abra el archivo func.yaml en un editor de texto (si aún no está abierto) y actualícelo de la siguiente manera:
Cambie los valores de los parámetros build_image: y run_image: a las versiones de imagen base de tiempo de creación y tiempo de ejecución de FDK identificadas en el paso anterior.
Para mantener la coherencia y evitar confusiones, cambie el valor del parámetro runtime: para que se corresponda con la opción de comando --runtime para la versión del idioma. Por ejemplo:
runtime: java11
Sólo para las funciones Java, abra el archivo pom.xml en un editor de texto y actualice el elemento <fdk.version> para que se corresponda con la versión especificada en func.yaml.
Por ejemplo, puede cambiar <fdk.version>1.0.105</fdk.version> a <fdk.version>1.0.130</fdk.version>.
Vuelva a desplegar la función y pruébela para confirmar que el código de función es compatible con las nuevas versiones de imagen base de tiempo de creación y tiempo de ejecución de FDK que la CLI de Fn Project está utilizando ahora para crear el ejecutable de la función y proporcionar el entorno de tiempo de ejecución.