visual tutorial studio proyecto node crear node.js azure azure-functions

node.js - tutorial - Funciones de Azure: Nodejs, ¿Cuáles son las restricciones/limitaciones al usar el sistema de archivos?



node js visual studio 2017 tutorial (1)

Sí, puede usar el sistema de archivos, con algunas restricciones como se describe aquí . Esa página describe algunos directorios a los que puede acceder como D: / HOME y D: / LOCAL / TEMP . He modificado tu código a continuación para escribir en el directorio temporal y funciona:

var fs = require(''fs''); module.exports = function (context, input) { fs.writeFile(''D:/local/Temp/message.txt'', input, (err) => { if (err) { context.log(err); throw err; } context.log(''It/'s saved!''); context.done(); }); }

Su código inicial estaba fallando porque estaba intentando escribir en D: / Windows / system32 que no está permitido.

No he podido obtener una función azure funcionando que utiliza el módulo de sistema de archivos de nodo.

Creé una nueva aplicación de funciones con la función de activación HTTP más básica e incluí el módulo ''fs'':

var fs = require(''fs''); module.exports = function (context, req, res) { context.log(''function triggered''); context.log(req); context.done(); }

Esto funciona bien Veo la solicitud completa en los registros de transmisión en vivo y en la lista de invocación de funciones.

Sin embargo, tan pronto como agrego el código que realmente usa el sistema de archivos, parece bloquear la función azul. No completa ni arroja el error. Tampoco parece aparecer en la lista de invocaciones de la función azure, lo cual es aterrador ya que esta es información de pérdida de fallas y podría pensar que mi servicio funcionaba bien cuando en realidad había fallas.

var fs = require(''fs''); module.exports = function (context, req, res) { context.log(''function triggered''); context.log(req); fs.writeFile(''message.txt'', ''Hello Node.js'', (err) => { if (err) throw err; console.log(''It/'s saved!''); context.done(); }); }

El código fs.writeFile tomado directamente del sitio web node.js: https://nodejs.org/dist/latest-v4.x/docs/api/fs.html#fs_fs_writefile_file_data_options_callback

context.done() el context.done() en la devolución de llamada, pero ese fragmento debería funcionar sin problemas en el entorno de desarrollo normal.

Esto hace surgir las preguntas:

  • ¿Es posible utilizar el sistema de archivos cuando se utilizan funciones Azure?
  • Si es así, ¿cuáles son las restricciones?
  • Si no hay restricciones, ¿se requiere que los desarrolladores sigan y realicen tareas de limpieza o esto se soluciona con un sandboxing?

Desde mi punto de vista, aunque esto se considera informática sin servidor, todavía hay un servicio de aplicación de sitio web VM / Azure debajo del cual tiene un sistema de archivos. Puedo usar la consola Kudu y navegar y ver todos los archivos en / wwwroot y los archivos / home / functions / secrets.

Imagínese un escenario en el que se escribe una función azul para escribir un archivo con un nombre único y no realizar una limpieza que eventualmente ocupara todo el espacio de disco en la máquina virtual host y que reduzca el rendimiento. Esto podría ocurrir accidentalmente por un desarrollador y posiblemente pasar desapercibido hasta que sea demasiado tarde.

Esto me hace preguntar si es por diseño no usar el sistema de archivos, o si mi función está escrita mal.