Función de compresión de archivos de Object Storage
Descubra cómo utilizar la función predefinida de zip de archivo de almacenamiento de objetos en OCI Functions para comprimir los archivos almacenados en un cubo de OCI Object Storage y guardar el archivo zip en el cubo de destino especificado.
Casos de Uso Común
Entre las formas comunes de utilizar la función Zip del archivo de almacenamiento de objetos se incluyen:
- Coloque los archivos en Object Storage y utilice Data Integration para comprimir los archivos y almacenar el archivo zip resultante en Object Storage.
- Coloque los archivos en el almacenamiento de objetos y llame directamente a una función para comprimir los archivos y almacenar el archivo zip resultante en el almacenamiento de objetos.
Los servicios relacionados con la función de compresión de archivos de Object Storage incluyen:
Ámbito
Las consideraciones de ámbito para esta función incluyen:
- La función predefinida funciona mejor si el tiempo de espera predeterminado se establece en 300 segundos.
- El tiempo de ejecución de la función varía según el número de archivos de entrada.
- Los nombres de archivo y de directorio deben ser únicos. Si un archivo y un directorio comparten el mismo nombre, la función no puede garantizar la corrección del resultado.
Requisitos y recomendaciones
A continuación, se muestran las mejores prácticas al utilizar esta función incorporada:
- Establezca el tiempo de espera de la función predefinida en 300 segundos.
- La VCN enlazada a la aplicación facilita el acceso a otros servicios de OCI mediante un gateway de servicio, un gateway de Internet o un gateway de NAT.
- Defina el tamaño de memoria por defecto en la memoria máxima permitida para una función.
- Evite incluir una carpeta y un archivo con el mismo nombre en el mismo nivel en el cubo de origen.
Configuración de la función de compresión de archivos de Object Storage
Para configurar una función Zip de archivo de almacenamiento de objetos, realice los siguientes pasos:
El cuadro de diálogo de despliegue muestra las tareas para desplegar la función (consulte Finalización del despliegue de funciones incorporadas).
Opciones de Configuración
Parámetros de Configuración
Nombre | Descripción | necesario |
---|---|---|
PBF_LOG_LEVEL |
Nivel de registro, las opciones son DEBUG , INFO , WARN y ERROR . El valor predeterminado es INFO. |
No |
Permisos
La ejecución de una función requiere determinadas políticas de IAM. Si ha seleccionado la opción No crear un grupo dinámico y una política de IAM al crear la función, debe definir el grupo dinámico y la política de IAM usted mismo.
Para definir las políticas adecuadas, realice los siguientes pasos:
- Crear un grupo dinámico con la regla:
ALL {resource.id = '<function_ocid>', resource.compartment.id = '<compartment_ocid>'}
- Configure una política de IAM mediante el grupo dinámico:
Allow dynamic-group <dynamic-group-name> to read objectstorage-namespaces in compartment <compartment-name> Allow dynamic-group <dynamic-group-name> to manage objects in compartment <compartment-name> Allow dynamic-group <dynamic-group-name> to manage buckets in compartment <compartment-name>
Sustituya
<function-ocid>
por el OCID de la función que ha creado en los pasos anteriores. Sustituya
<dynamic-group-name>
por el nombre del grupo dinámico que ha creado mediante el OCID de la función.Sustituya
<compartment_ocid>
por el OCID del compartimento que contiene la función.Llamando a esta función
Puede llamar a la función de las siguientes formas:
- Llame a la función directamente como se documenta en Llamada a funciones creando un cuerpo de solicitud como se muestra en el siguiente ejemplo de JSON.
- Llame a la función a través de Data Integration. Utilice la tarea de la API de REST para configurar el punto final de llamada con el cuerpo de la solicitud junto con los parámetros para disparar la función. El cuerpo REST se adhiere a los siguientes valores de JSON.
Valores de JSON de solicitud HTTP
Nombre | Descripción | necesario |
---|---|---|
COMPARTMENT_ID | OCID de compartimento del cubo de origen. | Si |
REGIÓN | Región en la que existen los cubos. El valor por defecto es la región en la que se crea la función. | No |
SOURCE_BUCKET | Nombre del cubo de origen que contiene los archivos y directorios que se van a comprimir. | Si |
SOURCE_FILES |
Ejemplos:
|
Si |
TARGET_BUCKET | Nombre completo del archivo zip de salida. Si el cubo de destino con el nombre proporcionado no existe, la función crea el cubo. Si solo se proporciona el nombre del cubo, la función genera automáticamente el nombre del archivo zip. Ejemplo: PBF_ZIP_di_pbf_zip_destination_new_2023-02-22T05:27:53.654Z.zip |
Si |
ALLOW_OVERWRITE | Se aceptan true o false . Si el atributo no se proporciona, el valor por defecto es false . El valor true significa que si ya existe un archivo zip con el mismo nombre en el cubo de destino, el archivo se sustituye. Un valor false significa que un intento de sustituir el archivo zip con el mismo nombre falla la ejecución de la función. |
No |
Ejemplo de entrada JSON:
{
"COMPARTMENT_ID": "ocid1.compartment.oc1...",
"REGION": "us-ashburn-1",
"SOURCE_BUCKET": "origin-storage",
"SOURCE_FILES": "folder_1/test_file_1.txt,test_file_2.txt,folder_2/",
"TARGET_BUCKET": "target-storage/my_zip_file.zip",
"ALLOW_OVERWRITE": "false"
}
Cuerpo de Respuesta
- Registros de hora: utilice UTC para evitar problemas de zona horaria.
- Código: la función devuelve un código 200 si la tarea finaliza correctamente.
- Estado: la función devuelve "Correcto" como estado si la tarea se completa correctamente.
- datos: cuerpo de mensaje JSON que incluye información de respuesta específica para la tarea. La información adicional proporciona un mensaje de confirmación de la operación de descompresión correcta.
Ejemplo
En el siguiente ejemplo se muestran los datos de retorno de JSON:
{
"startTime": "2023-02-22T05:27:53.505Z",
"endTime": "2023-02-22T05:28:13.908Z",
"runTime": "PT20.403S",
"code": 200,
"status": "Success",
"data": {
"additionalInformation": {
"Message": "Zip File: PBF_ZIP_di_pbf_zip_destination_new_2023-02-22T05:27:53.654Z.zip, uploaded to Bucket: target_storage"
}
}
}
Solución de Problemas
Códigos de estado comunes de OCI Functions
En la siguiente tabla se resumen los errores comunes de OCI Functions que puede encontrar al trabajar con funciones predefinidas:
Código de Error | Mensaje de Error | Acción |
---|---|---|
200 | Correcto | Ninguna. |
404 | NotAuthorizedOrNotFound | Verifique que las políticas necesarias estén configuradas (consulte Ejecución de comandos de la CLI de Fn Project devuelve un error 404). |
444 | Timeout |
La conexión entre el cliente y OCI Functions se ha interrumpido durante la ejecución de la función (consulte La llamada a una función hace que el cliente informe de un timeout y se muestra un error 444 en los logs de la función). Un reintento podría resolver el problema. Tenga en cuenta que la mayoría de los clientes tienen un timeout interno de 60 segundos. Incluso cuando el tiempo de espera de la función predefinida se establece en 300 segundos, puede ser necesario lo siguiente:
Para obtener más información, consulte Llamada a funciones. |
502 504 | (varios) | La mayoría de los problemas devuelven un código de estado 502 (consulte Llamada a una función devuelve un mensaje de fallo de función y un error 502). Se puede resolver un error 502 con el mensaje "error receive function response" mediante el aumento de la asignación de memoria. Un 502 puede ocurrir ocasionalmente cuando la función está en algún estado transitorio. Un reintento podría resolver el problema. |
Para identificar aún más la causa, active las funciones de registro para la función predefinida (consulte Almacenamiento y visualización de logs de funciones). Para obtener información detallada sobre la solución de problemas de una función, consulte Solución de problemas de OCI Functions.
Códigos de estado de función predefinidos de zip de archivo de almacenamiento de objetos
En la siguiente tabla se resumen los errores que puede encontrar al trabajar con esta función creada previamente:
Código de Error | Mensaje de Error | Acción |
---|---|---|
400 | Falta el valor de configuración obligatorio | El mensaje de error indica el nombre de campo necesario. Verifique que se proporciona el campo correcto en el cuerpo de la solicitud. |
400 | El nombre de archivo zip de salida proporcionado no tiene una extensión .zip |
Verifique que el nombre del archivo proporcionado para el campo TARGET_BUCKET tiene la extensión .zip . |
409 | El cubo de destino ya contiene un archivo comprimido con el mismo nombre | Si ALLOW_OVERWRITE está definido en false , verifique que el cubo de destino no tenga ya un archivo zip con el mismo nombre. |
Para identificar aún más la causa, active las funciones de registro para la función predefinida (consulte Almacenamiento y visualización de logs de funciones).
Consejos de análisis de logs
Todas las funciones predefinidas proporcionan una opción para especificar el nivel de registro como parámetro de configuración. Puede definir el nivel de registro en DEBUG
para obtener más información.
Dado que una aplicación tiene varias funciones, las entradas del log de funciones predefinidas se identifican con el prefijo "PBF | <PBF NAME> ".
Por ejemplo, una entrada de log para la función creada previamente del generador de trabajos de flujo de trabajo de medios tiene un aspecto similar al siguiente:
"PBF | Media Workflow Job Spawner | INFO | 2023-02-07T18:06:50.809Z | Fetching details from Events JSON"