Creación de Funciones de Sólo Código Go

Descubra cómo empaquetar y crear funciones de solo código Go en OCI Functions.

Utilice una función de sólo código Go cuando desee desplegar una función Go sin crear ni publicar una imagen de contenedor

Las funciones de solo código Go se ejecutan desde binarios ejecutables de Linux enlazados estáticamente y autónomos.

Antes de crear una función de sólo código Go, empaquete el ejecutable Go con el diseño de archivo necesario para la arquitectura de la aplicación. Para conocer los requisitos generales de las funciones de solo código, consulte Creación de funciones de solo código. Para que el nombre de tiempo de ejecución se utilice con funciones de sólo código Go, consulte Idiomas soportados para funciones de sólo código.

Además, para crear y empaquetar funciones de código Go, necesita:

  • Un entorno de desarrollo Go.
  • Código fuente de la función Go.
  • Capacidad para crear binarios ejecutables de Linux autónomos enlazados estáticamente para la arquitectura de la aplicación de destino.

Ir a requisitos de archivo

Para las funciones de sólo código Go:

  • El ejecutable debe ser un binario ejecutable de Linux enlazado estáticamente y autónomo.
  • El archivo ejecutable debe tener el nombre func.
  • Los binarios Go son específicos de la arquitectura.
  • Un binario creado para macOS o Windows no se puede ejecutar directamente en tiempo de ejecución de OCI Functions Linux.
  • Un binario creado para x86 no se puede ejecutar en ARM.
  • Un binario creado para ARM no se puede ejecutar en x86.
  • Las aplicaciones de arquitectura múltiple requieren un binario por arquitectura.

Ir a valores objetivo de creación

Cree el ejecutable Go para Linux y para la arquitectura de procesador utilizada por la aplicación OCI Functions.

Arquitectura de aplicación GOOS GOARCH
x86 linux amd64
Brazo linux arm64

Archivo Go de una sola arquitectura

Para una aplicación de arquitectura única, empaquete un archivo binario ejecutable de Linux enlazado estáticamente y autónomo denominado func en la raíz del archivo.

archive-root/
├── func
└── resources/  # optional

Reglas:

  • func es necesario en la raíz del archivo.
  • resources/ es opcional.
  • El archivo no es válido si falta func.
  • El binario debe estar enlazado estáticamente, ser autónomo y estar creado para Linux y para la arquitectura de destino de la aplicación.

Ejemplo para x86:

GOOS=linux GOARCH=amd64 go build -o func .
zip function.zip func

Ejemplo de ARM:

GOOS=linux GOARCH=arm64 go build -o func .
zip function.zip func

Si utiliza recursos:

zip -r function.zip func resources/

Multi-arquitectura Go archive

Para una aplicación de arquitectura múltiple, empaquete un archivo binario ejecutable de Linux enlazado estáticamente y autónomo denominado func para cada arquitectura soportada en el directorio de arquitectura correspondiente.

archive-root/
├── fn-arch-x86/
    ├── func
    └── resources/  # optional
└── fn-arch-arm/
    ├── func
    └── resources/  # optional

Reglas:

  • Se necesita fn-arch-x86/.
  • fn-arch-arm/ es necesario.
  • Cada directorio de arquitectura debe contener un binario denominado func.
  • El archivo no es válido si falta alguno de los directorios de arquitectura.
  • El archivo no es válido si a alguno de los directorios de arquitectura le falta func.
  • Cada binario debe estar enlazado estáticamente, ser autónomo y estar creado para Linux y para la arquitectura correspondiente.

Ejemplo:

mkdir -p fn-arch-x86 fn-arch-arm
GOOS=linux GOARCH=amd64 go build -o fn-arch-x86/func .
GOOS=linux GOARCH=arm64 go build -o fn-arch-arm/func .
zip -r function.zip fn-arch-x86 fn-arch-arm

Directorio de recursos opcionales

Utilice el directorio resources/ opcional para los archivos que la función necesita en tiempo de ejecución, como archivos estáticos, plantillas o archivos de configuración.

Para los archivos de arquitectura única, coloque resources/ en la raíz del archivo. Para los archivos de arquitectura múltiple, coloque los recursos específicos de la arquitectura en cada directorio de arquitectura si es necesario.

Creación de una función de sólo código Go

Para crear una función de sólo código Go, siga las instrucciones de Creación de funciones de sólo código. Por ejemplo, para crear una función de sólo código Go mediante la consola:

  1. En la página de lista Aplicaciones, seleccione la aplicación en la que desea crear la función de sólo código Go. 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. Seleccione Crear a partir de archivo y especifique los detalles de la función de sólo código Go, incluido el origen de archivo, el archivo Go y el tiempo de ejecución soportado para las funciones de sólo código Go.

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

  4. Especifique otros detalles para la función según sea necesario (consulte Creación de Funciones de Sólo Código).
  5. Seleccione Crear para crear la función.

    La función Go de solo código se crea y se puede llamar como cualquier otra función.

Solución de problemas

Código de error Problema Causa probable Corrección recomendada
400 La validación del archivo falla porque falta func El binario no está en la ruta esperada Coloque func en la raíz del archivo para aplicaciones de arquitectura única o en ambos directorios de arquitectura para aplicaciones de arquitectura múltiple.
400 La función falla después del despliegue El binario se construyó para el sistema operativo o la arquitectura incorrectos Vuelva a crear con GOOS=linux y el GOARCH correcto.
400 Se ha rechazado el archivo de varias arquitecturas Falta un directorio de arquitectura Incluya fn-arch-x86/ y fn-arch-arm/.
400 El archivo de arquitectura múltiple se ha rechazado porque falta un binario Un directorio de arquitectura no incluye func Cree e incluya func en ambos directorios de arquitectura.
400 No se han encontrado recursos en tiempo de ejecución Los recursos se empaquetaron en una ubicación inesperada Utilice la estructura de directorios resources/ soportada.
500 Fallo al procesar el archivo de almacenamiento Error transitorio Vuelva a intentarlo o comuníquese con Servicios de Soporte Oracle.