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:
funces 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:
- 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.
-
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.
- 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
funcen la ubicación necesaria. - Especifique otros detalles para la función según sea necesario (consulte Creación de Funciones de Sólo Código).
- 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. |