Acceder a recursos locales con conectores y funciones de Lambda - AWS IoT Greengrass

AWS IoT Greengrass Version 1 entró en la fase de vida útil prolongada el 30 de junio de 2023. Para obtener más información, consulte la política de mantenimiento de AWS IoT Greengrass V1 Después de esta fecha, AWS IoT Greengrass V1 no se publicarán actualizaciones que proporcionen funciones, mejoras, correcciones de errores o parches de seguridad. Los dispositivos que se ejecuten AWS IoT Greengrass V1 no se verán afectados y seguirán funcionando y conectándose a la nube. Le recomendamos encarecidamente que migre a AWS IoT Greengrass Version 2, ya que añade importantes funciones nuevas y es compatible con plataformas adicionales.

Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.

Acceder a recursos locales con conectores y funciones de Lambda

Esta característica está disponible para AWS IoT Greengrass Core versión 1.3 y posteriores.

Con AWS IoT Greengrass, puede crear funciones de AWS Lambda y configurar conectores en la nube e implementarlos en los dispositivos del núcleo para una ejecución local. En los núcleos Greengrass que se ejecuten con Linux, los conectores y las funciones de Lambda implementados de forma local pueden obtener acceso a recursos locales que estén físicamente presentes en el dispositivo del núcleo Greengrass. Por ejemplo, para comunicarse con dispositivos que estén conectados a través de Modbus o CANbus, puede habilitar la función de Lambda para obtener acceso al puerto serie del dispositivo del núcleo. Para configurar un acceso seguro a los recursos locales, debe garantizar la seguridad del hardware físico y el sistema operativo del dispositivo del núcleo de Greengrass.

Para empezar a obtener acceso a recursos locales, consulte los siguientes tutoriales:

Tipos de recursos admitidos

Puede obtener acceso a dos tipos de recursos locales: recursos de volumen y recursos de dispositivo.

Recursos de volumen

Archivos o directorios del sistema de archivos raíz (excepto de /sys, /dev o /var). Entre ellas se incluyen:

  • Carpetas o archivos que se utilizan para leer o escribir información en funciones de Lambda de Greengrass (por ejemplo, /usr/lib/python2.x/site-packages/local).

  • Carpetas o archivos en el sistema de archivos /proc del host (por ejemplo, /proc/net o /proc/stat). Compatible con la versión 1.6 o posterior. Para informarse de los requisitos adicionales, consulte Recursos de volumen en el directorio /proc.

sugerencia

Para configurar los directorios /var, /var/run y /var/lib como recursos de volumen, primero monte el directorio en otra carpeta y, a continuación, configure la carpeta como un recurso de volumen.

Al configurar recursos de volumen, debe especificar una ruta de origen y una ruta de destino. La ruta de origen es la ruta completa del recurso en el host. La ruta de destino es la ruta completa del recurso en el entorno del espacio de nombres de Lambda. Es el contenedor en el que se ejecuta una función o un conector de Lambda de Greengrass. Cualquier cambio que se realice en la ruta de destino se refleja en ruta de origen del sistema de archivos del host.

nota

Los archivos de la ruta de destino solo se pueden ver en el espacio de nombres de Lambda. No es posible verlos en un espacio de nombres normal de Linux.

Recursos de dispositivo

Archivos en /dev. Solo tienen permiso para obtener acceso a los recursos de dispositivo los dispositivos de caracteres o los dispositivos de bloques en /dev. Entre ellas se incluyen:

  • Puertos de serie que se utilizan para comunicarse con dispositivos conectados a través de puertos de serie (por ejemplo, /dev/ttyS0, /dev/ttyS1).

  • USB utilizados para conectar periféricos USB (por ejemplo, /dev/ttyUSB0 o /dev/bus/usb).

  • GPIO que se utilizan para sensores y actuadores a través de GPIO (por ejemplo, /dev/gpiomem).

  • GPU que se utilizan para acelerar el aprendizaje automático mediante GPU a bordo (por ejemplo, /dev/nvidia0).

  • Cámaras que se utilizan para capturar imágenes y vídeos (por ejemplo, /dev/video0).

nota

/dev/shm es una excepción. Se puede configurar solo como un recurso de volumen. Se debe conceder permiso rw a los recursos de /dev/shm.

AWS IoT Greengrass también admite tipos de recursos que se utilizan para llevar a cabo la inferencia de aprendizaje automático. Para obtener más información, consulte Cómo realizar la inferencia de machine learning.

Requisitos

Los siguientes requisitos se aplican para configurar el acceso seguro a los recursos locales:

  • Debe utilizar el software de AWS IoT Greengrass Core versión 1.3 o posteriores. Para crear recursos para el directorio /proc del host, debe utilizar la versión 1.6 o posterior.

  • Los recursos locales (incluidos los controladores y las bibliotecas necesarias) deben estar correctamente instalados en el dispositivo del núcleo de Greengrass y disponibles durante su uso.

  • La operación deseada del recurso y el acceso al mismo no debe requerir privilegios raíz.

  • Solo están disponibles los permisos read o read and write. Las funciones de Lambda no pueden realizar operaciones privilegiadas en los recursos.

  • Debe proporcionar la ruta completa del recurso local en el sistema operativo del dispositivo de Greengrass Core.

  • Un nombre o ID de recursos debe tener un máximo de 128 caracteres y utilizar el patrón [a-zA-Z0-9:_-]+.

Recursos de volumen en el directorio /proc

Las siguientes consideraciones se aplican a los recursos de volumen que se encuentran bajo el directorio /proc del host.

  • Debe utilizar el software de AWS IoT Greengrass Core versión 1.6 o posteriores.

  • Puede permitir acceso de solo lectura a las funciones de Lambda, pero no acceso de lectura y escritura. AWS IoT Greengrass administra este nivel de acceso.

  • Es posible que también necesite conceder permisos de grupo de SO para habilitar el acceso de lectura en el sistema de archivos. Por ejemplo, suponga que su directorio o archivo de origen tiene un permiso de archivo 660, lo que significa que solo el propietario o usuario del grupo tiene acceso de lectura (y escritura). En este caso, debe añadir permisos de propietario del grupo de SO al recurso. Para obtener más información, consulte Group owner file access permission (Permiso de acceso a los archivos del propietario del grupo).

  • Tanto el entorno de host como el espacio de nombres de Lambda contienen un directorio /proc, así que asegúrese de evitar conflictos de nomenclatura cuando especifique la ruta de destino. Por ejemplo, si /proc es la ruta de origen, puede especificar /host-proc como la ruta de destino (o cualquier nombre de ruta que no sea "/proc").

Group owner file access permission (Permiso de acceso a los archivos del propietario del grupo)

Un proceso de la función de Lambda de AWS IoT Greengrass se suele ejecutar como ggc_user y ggc_group. Sin embargo, puede dar permisos de acceso a archivos adicionales al proceso de la función de Lambda en la definición de recursos locales, tal y como se indica a continuación:

  • Para añadir los permisos del grupo Linux propietario del recurso, utilice el parámetro GroupOwnerSetting#AutoAddGroupOwner o la opción de consola Añadir automáticamente los permisos del sistema de archivos del grupo del sistema propietario del recurso.

  • Para añadir los permisos de otro grupo de Linux, utilice el parámetro GroupOwnerSetting#GroupOwner o la opción de la consola Especifique otro grupo de sistemas para añadir los permisos del sistema. El valor GroupOwner se omite si GroupOwnerSetting#AutoAddGroupOwner es true.

Un proceso de la función de Lambda de AWS IoT Greengrass hereda todos los permisos del sistema de archivos de ggc_user, ggc_group y el grupo de Linux (si se ha añadido). Para que esta función de Lambda tenga acceso a un recurso, el proceso de función de Lambda debe tener los permisos necesarios para el recurso. Puede utilizar el comando chmod(1) para cambiar el permiso del recurso, si es necesario.

Véase también