Actualización de funciones de solo código

Descubra cómo actualizar funciones de solo código en OCI Functions, incluida la sustitución de archivos, el cambio de manejadores y la actualización de la configuración de tiempo de ejecución.

Actualice una función de solo código cuando necesite cambiar el archivo, la configuración, los valores de tiempo de ejecución, el manejador o las etiquetas.

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.

Antes de actualizar una función de sólo código, es necesario:

  • Una función de solo código existente.
  • Permisos para actualizar la función.
  • Un archivo actualizado, si cambia el código fuente o las dependencias.
  • Si utiliza Object Storage, acceda al cubo, el objeto y la versión del objeto, si procede.
  • Si se utiliza Object Storage, una política de IAM que permite a la entidad de recurso de la aplicación OCI Functions leer el objeto de archivo.

Actualización del archivo

Si ha cambiado el código de función o sus dependencias, reconstruya o vuelva a crear el archivo de funciones. A continuación, actualice la definición de función para hacer referencia al nuevo archivo de función.

Uso de la consola

Después de volver a crear o empaquetar un archivo de funciones, puede utilizar la consola para actualizar la definición de función y hacer referencia al nuevo archivo de funciones.

  1. En la página de lista Aplicaciones, seleccione la aplicación que contiene la función con la que desea trabajar. Si necesita ayuda para buscar la página de lista o la aplicación, consulte Listado de aplicaciones.
  2. Seleccione el separador Funciones.

    Se abre la página de lista Funciones. Todas las funciones de la aplicación seleccionada se muestran en una tabla.

  3. En el menú Acciones (tres puntos) de la función que desea actualizar, seleccione Editar.
  4. Seleccione la opción Cambiar código de origen y actualice los detalles de Origen de archivo de la siguiente manera:
    • Seleccionar de Object Storage: seleccione el compartimento y el cubo de Object Storage que contiene el archivo y especifique el nombre y la versión (si corresponde) del archivo. El tamaño máximo de archivo es de 250 MB.
    • Cargar desde el dispositivo: seleccione el archivo de almacenamiento o arrastre y suelte el archivo en el cuadro. El tamaño máximo de archivo es de 25 MB.
    • Tiempo de ejecución: seleccione un tiempo de ejecución soportado para determinar el entorno de ejecución gestionado que utiliza OCI Functions.
    • Manejador: si el tiempo de ejecución que seleccione necesita un manejador, introduzca el manejador. Para algunos tiempos de ejecución, una función de solo código requiere un manejador. El manejador identifica el punto de entrada en el archivo de funciones al que llama OCI Functions cuando se llama a la función.

      Para las funciones de código solo de Java, Python y Node.js, debe especificar un manejador al crear la función.

      Las funciones de sólo código Go no utilizan un valor de manejador independiente. El archivo debe contener un ejecutable de Linux denominado func en la ubicación necesaria.

  5. Actualice otras propiedades de función si es necesario.
  6. Seleccione Guardar cambios para actualizar la función en el servidor de OCI Functions.

Uso de la interfaz de línea de comandos

Uso de la CLI de OCI

Después de volver a crear o empaquetar un archivo de funciones, puede utilizar la CLI de OCI para actualizar la definición de función y hacer referencia al nuevo archivo de funciones.

  • Actualice el archivo de Object Storage que utiliza una función de solo código introduciendo:

    oci fn function update archive-function --function-id <function-id> --bucket-name <bucket-name> --namespace <namespace> --object-name <object-name>
  • Actualice el archivo de almacenamiento cargado que utiliza una función de sólo código introduciendo:

    oci fn function update archive-function --function-id <function-id> --archive-file file:/<archive-file-path>

También puede cambiar una función de solo código que utilice un archivo de Object Storage para utilizar un archivo de almacenamiento cargado y viceversa:

  • Cambie una función de solo código que utilice un archivo de Object Storage para utilizar un archivo de almacenamiento cargado introduciendo en su lugar:
    oci fn function update archive-function --function-id <function-id> --archive-file file:/<archive-file-path>
  • Cambie una función de solo código que utilice un archivo de almacenamiento cargado para utilizarlo en Object Storage introduciendo:
    oci fn function update archive-function --function-id <function-id> --bucket-name <bucket-name> --namespace <namespace> --object-name <object-name>

Con la CLI de Fn Project

Consejo

De vez en cuando, se lanzan nuevas versiones de la CLI de Fn Project. Le recomendamos comprobar periódicamente que la última versión está instalada. Para obtener más información, consulte Pasos para actualizar la CLI de Fn Project.

Después de volver a crear o empaquetar un archivo de funciones, puede utilizar la CLI de Fn Project para actualizar la definición de función y hacer referencia al nuevo archivo de funciones.

  • Actualice el archivo de Object Storage que utiliza una función de solo código introduciendo:

    fn update function <app-name> <function-name> --code-only --source-type object-storage --bucket-name <bucket-name> --namespace <namespace> --object-name <object-name>
  • Actualice el archivo de almacenamiento cargado que utiliza una función de sólo código introduciendo:

    fn update function <app-name> <function-name> --code-only --source-type direct --source-file <path-to-function-source.zip>

También puede cambiar una función de solo código que utilice un archivo de Object Storage para utilizar un archivo de almacenamiento cargado y viceversa:

  • Cambie una función de solo código que utilice un archivo de Object Storage para utilizar un archivo de almacenamiento cargado introduciendo en su lugar:
    fn update function <app-name> <function-name> --code-only --source-type direct --source-file <path-to-function-source.zip>
  • Cambie una función de solo código que utilice un archivo de almacenamiento cargado para utilizarlo en Object Storage introduciendo:
    fn update function <app-name> <function-name> --code-only --source-type object-storage --bucket-name <bucket-name> --namespace <namespace> --object-name <object-name>

Uso de la API

Después de volver a crear o empaquetar un archivo de funciones, ejecute la operación de API UpdateFunction para actualizar la definición de función y hacer referencia al nuevo archivo de funciones.

Actualización del manejador

Para las funciones de código solo de Java, Python y Node.js, el punto de entrada en el archivo al que llama OCI Functions cuando se llama a la función se identifica mediante el valor de la propiedad Handler. Si el punto de entrada del archivo cambia, cambie el valor de la propiedad Handler según corresponda.

Por ejemplo, cambie el valor de la propiedad Handler si:

Tiempo de ejecución Cambio en archivo Valor de propiedad de manejador de ejemplo
Java Los cambios de nombre de clase o método com.example.NewFunction::handleRequest
Python El archivo del manejador o el nombre de la función cambian new_func.handler
Node.js Cambios en el archivo JavaScript del controlador new_func.js

Tenga en cuenta que las funciones de sólo código Go no utilizan un manejador. Para las funciones de sólo código Go, el archivo debe contener un ejecutable de Linux denominado func en la ubicación necesaria.

Antes de cambiar el valor de la propiedad Handler:

  • Confirme que el nuevo punto de entrada existe en el archivo.
  • Confirme que el valor que especifique para la propiedad Manejador utiliza el formato requerido por el tiempo de ejecución.
  • Volver a crear o crear un nuevo conjunto de concesiones para el archivo si el código de función ha cambiado.

Por ejemplo, después de cambiar el manejador, puede utilizar la consola para cambiar el valor de la propiedad Handler de la siguiente manera:

  1. En la página de lista Aplicaciones, seleccione la aplicación que contiene la función con la que desea trabajar. Si necesita ayuda para buscar la página de lista o la aplicación, consulte Listado de aplicaciones.
  2. Seleccione el separador Funciones.

    Se abre la página de lista Funciones. Todas las funciones de la aplicación seleccionada se muestran en una tabla.

  3. En el menú Acciones (tres puntos) de la función que desea actualizar, seleccione Editar.
  4. Seleccione la opción Cambiar código de origen y cambie el valor de la propiedad Manejador según sea necesario.

    Si el archivo también ha cambiado, cargue otro archivo o seleccione otro objeto de Object Storage.

Gestión de tiempos de ejecución de funciones de solo código

Descubra cómo gestionar tiempos de ejecución de funciones de solo código definiendo el modo de actualización de tiempo de ejecución.

Actualizaciones de tiempo de ejecución gestionadas

Las funciones de solo código utilizan tiempos de ejecución gestionados. OCI Functions es propietaria de la aplicación de parches de tiempo de ejecución gestionada y publica versiones de tiempo de ejecución actualizadas. Puede controlar cuándo una función de solo código se mueve a una versión de tiempo de ejecución compatible más reciente definiendo el modo de actualización de tiempo de ejecución.

Las actualizaciones de tiempo de ejecución gestionadas pueden incluir actualizaciones del sistema operativo, actualizaciones de tiempo de ejecución de lenguaje, actualizaciones del kit de desarrollo de funciones (FDK), correcciones de seguridad y otros cambios de tiempo de ejecución gestionados por la plataforma. Usted es responsable de probar que el código de función y las dependencias empaquetadas siguen siendo compatibles con la versión de tiempo de ejecución que utiliza la función.

OCI Functions es responsable de mantener el tiempo de ejecución gestionado (incluidas las actualizaciones del sistema operativo, las actualizaciones de tiempo de ejecución de lenguaje, las actualizaciones de FDK, las correcciones de seguridad y otros cambios de tiempo de ejecución gestionados por la plataforma). Usted es responsable del código de función, las dependencias de la aplicación y la validación de la compatibilidad con las actualizaciones en tiempo de ejecución.

Tiempos de ejecución de funciones de sólo código soportados

Las funciones de solo código soportan los siguientes tiempos de ejecución gestionados:

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

Para conocer las versiones de tiempo de ejecución soportadas, consulte Idiomas soportados por OCI Functions.

Modos de actualización de tiempo de ejecución

El modo de actualización de tiempo de ejecución controla cómo una función de solo código adopta actualizaciones de tiempo de ejecución gestionadas. Especifique el modo de actualización en tiempo de ejecución al crear una función de solo código. Si es necesario, puede actualizar posteriormente la función para cambiar el modo de actualización en tiempo de ejecución.

Modo de actualización de tiempo de ejecución Descripción Utilizar cuando
Actualización de función La función se mueve a la versión de tiempo de ejecución compatible soportada actual al actualizar la función. La función no se mueve a una versión de tiempo de ejecución más reciente hasta que actualiza la función. Desea que la función adopte versiones de tiempo de ejecución compatibles más recientes como parte de las actualizaciones de funciones normales.
Manual La función se fija a una versión de tiempo de ejecución soportada específica hasta que cambie explícitamente la versión de tiempo de ejecución (o cambie el modo de actualización de tiempo de ejecución). Desea probar y controlar exactamente qué versión de tiempo de ejecución utiliza la función.

El modo de actualización de función no es el mismo que las actualizaciones de tiempo de ejecución totalmente automáticas. En el modo de actualización de función, la función se mueve a una versión de tiempo de ejecución compatible más reciente solo cuando actualiza la función.

Las actualizaciones de tiempo de ejecución solo se aplican a versiones de tiempo de ejecución compatibles para el tiempo de ejecución seleccionado. Para los tiempos de ejecución de Python, las actualizaciones compatibles incluyen versiones de parches para la versión secundaria de Python seleccionada. Para los tiempos de ejecución de Java y Node.js, las actualizaciones compatibles incluyen versiones secundarias y de parches para la familia de tiempo de ejecución seleccionada. Para las funciones de solo código Go, OCI Functions proporciona el entorno de tiempo de ejecución de Oracle Linux soportado, pero proporciona el ejecutable de Go compilado.

Utilice el modo Manual cuando necesite mantener la función en una versión de tiempo de ejecución específica. Por ejemplo, utilice el modo manual si desea probar una versión más reciente del tiempo de ejecución en otro entorno antes de actualizar una función de producción.

Nota

Las versiones de tiempo de ejecución especificadas para una función deben pertenecer al tiempo de ejecución seleccionado y deben estar activas. No se admiten actualizaciones de tiempo de ejecución totalmente automáticas. El modo de actualización de función mueve la función a una versión de tiempo de ejecución compatible más reciente solo cuando actualiza la función. El modo manual mantiene la función en la versión de tiempo de ejecución seleccionada hasta que la cambie.

Ciclo de vida de tiempo de ejecución y desuso

OCI Functions publica versiones de tiempo de ejecución gestionadas para los tiempos de ejecución de funciones de solo código soportados. Las versiones de tiempo de ejecución pueden quedar en desuso y retirarse a medida que el sistema operativo o el tiempo de ejecución del lenguaje subyacente lleguen al final del ciclo de vida soportado.

La fecha de desuso es la fecha en la que OCI Functions deja de proporcionar actualizaciones, parches de seguridad y soporte activo para la versión en tiempo de ejecución. La fecha de retirada es la fecha en la que la versión de tiempo de ejecución se elimina de la plataforma y ya no está disponible para nuevos despliegues.

Antes de seleccionar o anclar una versión de tiempo de ejecución, revise la información del ciclo de vida para el tiempo de ejecución de lenguaje y el sistema operativo que utiliza el tiempo de ejecución gestionado.

  • Para las funciones de solo código de Java, Python y Node.js, revise la información del ciclo de vida para el tiempo de ejecución de lenguaje y el entorno de tiempo de ejecución de Oracle Linux (consulte Idiomas soportados para funciones de solo código).
  • Para las funciones de solo código Go, revise la información del ciclo de vida del entorno de tiempo de ejecución de Oracle Linux. Las funciones de solo código de Go utilizan binarios ejecutables de Linux autónomos enlazados estáticamente, por lo que OCI Functions no proporciona un tiempo de ejecución de lenguaje Go en el momento de la llamada. Para conocer las fechas del ciclo de vida de Oracle Linux 9, consulte la información del ciclo de vida de soporte de Oracle Linux.

Las fechas del ciclo de vida de tiempo de ejecución y las acciones permitidas en cada fase del ciclo de vida están sujetas a cambios. Revise la información de tiempo de ejecución soportada antes de crear una función, actualizar una función o anclar una función a una versión de tiempo de ejecución.

En la siguiente tabla se resume el comportamiento de OCI Functions en las distintas fases del ciclo de vida de tiempo de ejecución y se muestran las acciones permitidas o restringidas durante cada fase en todas las versiones de tiempo de ejecución soportadas. Está previsto que la fecha de retirada sea seis meses después del desuso, con notificaciones proporcionadas a través de la consola de OCI y la CLI de Fn Project.

Acción Antes de desuso en tiempo de ejecución Entre el tiempo de ejecución en desuso y la retirada Después de la retirada del tiempo de ejecución
Nueva función crea o despliega Permitido No permitido No permitido
Actualizaciones de funciones existentes Permitido Permitido No permitido, excepto para cambiar la función para utilizar un tiempo de ejecución soportado
Invocación de funciones existentes Permitido Permitido Permitido
Mostrar, leer y suprimir funciones Permitido Permitido Permitido
Soporte y parches Soporte completo, incluidas las correcciones de seguridad y de bugs Sin soporte Sin soporte

Rollback después de una actualización de tiempo de ejecución

Las funciones de solo código pueden utilizar versiones activas de tiempo de ejecución que se encuentran en una fase de ciclo de vida soportada. Aunque OCI Functions gestiona las actualizaciones en tiempo de ejecución, los riesgos de compatibilidad pueden permanecer, al igual que con cualquier actualización de software.

Si una función de producción utiliza el modo de actualización de función y comienza a fallar después de que se mueve a una versión de tiempo de ejecución más reciente, puede mitigar el impacto cambiando la función al modo Manual y seleccionando una versión de tiempo de ejecución compatible publicada anteriormente, como la versión anterior más reciente que funcionó con la función.

Después de cambiar al modo Manual, abra una solicitud de soporte para investigación y orientación. Puede continuar operando la función en modo manual mientras se investiga el problema. Los Servicios de Soporte Oracle evaluarán el problema notificado y proporcionarán orientación sobre el camino a seguir adecuado, incluida la asistencia para adoptar una versión más reciente del tiempo de ejecución, si es necesario.

Uso de la consola

Para definir el modo de actualización de tiempo de ejecución mediante la consola

  1. En la página de lista Aplicaciones, seleccione la aplicación que contiene la función con la que desea trabajar. Si necesita ayuda para buscar la página de lista o la aplicación, consulte Listado de aplicaciones.
  2. Seleccione el separador Funciones.

    Se abre la página de lista Funciones. Todas las funciones de la aplicación seleccionada se muestran en una tabla.

  3. En el menú Acciones (tres puntos) de la función que desea actualizar, seleccione Editar.
  4. En Configuración de gestión de versiones en tiempo de ejecución, defina el modo de actualización de tiempo de ejecución de la función:

    • Seleccione el modo Actualización de función para mover la función a la última versión de tiempo de ejecución compatible cuando se actualice la función.
    • Seleccione el modo Manual para anclar la función a una versión de tiempo de ejecución específica. Si selecciona Manual, seleccione una versión de tiempo de ejecución válida para el tiempo de ejecución seleccionado.
  5. Seleccione Guardar cambios para actualizar la función en el servidor de OCI Functions.

Uso de la interfaz de línea de comandos

Uso de la CLI de OCI

Puede utilizar la CLI de OCI para definir el modo de actualización de tiempo de ejecución al crear una función de solo código. Por ejemplo:

  • Para crear una función de solo código que utilice el modo de actualización de tiempo de ejecución Function update (y que utilice un archivo almacenado en Object Storage), introduzca:

    oci fn function create archive-function object-storage fn-update-runtime-config --application-id <app-id> --bucket-name <bucket-name> --display-name <display-name> --functions-runtime-name <functions-runtime-name> --memory-in-mbs <memory> --namespace <namespace> --object-name <object-name>
  • Para crear una función de solo código que utilice el modo de actualización de tiempo de ejecución manual (y que utilice un archivo almacenado en Object Storage), introduzca:

    oci fn function create archive-function object-storage manual-runtime-config --application-id <app-id> --bucket-name <bucket-name> --display-name <display-name> --functions-runtime-name <functions-runtime-name> --functions-runtime-version-id <functions-runtime-version-id> --memory-in-mbs <memory> --namespace <namespace> --object-name <object-name>

También puede utilizar la CLI de OCI para cambiar el modo de actualización de tiempo de ejecución para una función de solo código existente:

  • Cambie el modo de actualización de tiempo de ejecución de una función de solo código existente de Manual a Actualización de función introduciendo:

    oci fn function update archive-function --function-id <function-ocid> --runtime-config FUNCTION_UPDATE --functions-runtime-name <runtime-name>  --handler <handler>
  • Cambie el modo de actualización en tiempo de ejecución de una función de solo código existente de Actualización de función a Manual introduciendo:

    oci fn function update archive-function --function-id <function-ocid> --runtime-config MANUAL --functions-runtime-name <runtime-name> --functions-runtime-version-id <runtime-version-ocid> --handler <handler>

Con la CLI de Fn Project

Consejo

De vez en cuando, se lanzan nuevas versiones de la CLI de Fn Project. Le recomendamos comprobar periódicamente que la última versión está instalada. Para obtener más información, consulte Pasos para actualizar la CLI de Fn Project.

Puede utilizar la CLI de Fn Project para definir el modo de actualización en tiempo de ejecución para una función de solo código mediante la opción --runtime-config-type al crear o actualizar la función. Por ejemplo:

  • Para actualizar una función de solo código para utilizar el modo de actualización de tiempo de ejecución Function update, introduzca:

    fn update function <app-name> <function-name> \
      --code-only \
      --runtime-config-type function-update \
      --runtime-name <runtime-name>
  • Para actualizar una función de solo código para utilizar el modo de actualización de tiempo de ejecución manual, introduzca:

    fn update function <app-name> <function-name> \
      --code-only \
      --runtime-config-type manual \
      --runtime-name <runtime-name> \
      --runtime-version-id <runtime-version-ocid>

    Para averiguar el OCID de la versión en tiempo de ejecución, introduzca

    fn list runtime-versions --runtime-name <runtime-name> --output json

Uso de la API

Ejecute las operaciones de API CreateFunction y UpdateFunction para definir y cambiar el modo de actualización de tiempo de ejecución para funciones de solo código.

Solución de problemas

ProblemaCausa probableCorrección recomendada
Fallo en la actualización de funciónEl archivo no coincide con la estructura de arquitectura o el tiempo de ejecución necesariosCree un nuevo conjunto de concesiones para el archivo utilizando el tema específico del tiempo de ejecución.
No se puede leer el archivo de almacenamiento de objetosFalta la política de lectura de Object Storage o es incorrectaAgregue o corrija la política para la entidad de recurso de aplicación de OCI Functions.
Error del manejador después de la actualizaciónEl valor del manejador ya no coincide con el código empaquetadoActualice el manejador o vuelva a empaquetar el archivo.
Error de versión de tiempo de ejecuciónLa versión de tiempo de ejecución no coincide con el tiempo de ejecución seleccionado o no está activaSeleccione una versión de tiempo de ejecución válida.
El cambio de modelo de despliegue no está disponible No se admite el cambio entre modelos de despliegue basados en imágenes y de solo códigoCree una nueva función con el modelo de despliegue necesario.