Aviso de fin de soporte: el 7 de octubre de 2026, AWS suspenderemos el soporte para AWS IoT Greengrass Version 1. Después del 7 de octubre de 2026, ya no podrá acceder a los AWS IoT Greengrass V1 recursos. Para obtener más información, visita Migrar desde AWS IoT Greengrass Version 1.
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.
Acceso a recursos de machine learning desde funciones de Lamba
User-defined Las funciones Lambda pueden acceder a los recursos de aprendizaje automático para ejecutar inferencias locales en el núcleo. AWS IoT Greengrass Un recurso de aprendizaje automático consiste en el modelo entrenado y otros artefactos que se descargan en el dispositivo principal.
Para permitir que una función de Lambda tenga acceso a un recurso de machine learning en el núcleo, debe adjuntar el recurso a la función de Lambda y definir los permisos de acceso. El modo de creación de contenedores de la función de Lambda asociada (o adjunta) determina cómo hacerlo.
Permisos de acceso para recursos de aprendizaje automático
A partir de la AWS IoT Greengrass versión 1.10.0 de Core, puede definir el propietario de un recurso para un recurso de aprendizaje automático. El propietario del recurso representa el grupo de sistemas operativos y los permisos que se AWS IoT Greengrass utilizan para descargar los artefactos de recursos. Si no se define el propietario de un recurso, los artefactos de recursos descargados sólo son accesibles para raíz.
Si las funciones Lambda no contenerizadas acceden a un recurso de aprendizaje automático, debe definir un propietario del recurso, ya que el contenedor no controla los permisos. Non-containerized Las funciones Lambda pueden heredar los permisos del propietario del recurso y usarlos para acceder al recurso.
Si solo las funciones de Lambda en contenedor acceden al recurso, se recomienda utilizar permisos de nivel de función en lugar de definir un propietario de recurso.
Propiedades del propietario del recurso
Un propietario de recurso especifica un propietario de grupo y permisos de propietario de grupo.
-
Propietario del grupo. El ID del grupo (GID) de un grupo de SO Linux existente en el dispositivo principal. Los permisos del grupo se agregan al proceso de Lambda. Específicamente, el GID se agrega a los identificadores de grupo suplementarios de la función de Lambda.
Si una función de Lambda del grupo Greengrass está configurada para ejecutarse como el mismo grupo de SO que el propietario del recurso para un recurso de machine learning, el recurso debe estar asociado a la función de Lambda. De lo contrario, la implementación fallará porque esta configuración otorga permisos implícitos que la función Lambda puede usar para acceder al recurso AWS IoT Greengrass sin autorización. La comprobación de validación de implementación se omite si la función de Lambda se ejecuta como raíz (UID=0).
Le recomendamos que utilice un grupo de SO que no sea utilizado por otros recursos, funciones de Lambda o archivos en el núcleo de Greengrass. El uso de un grupo de SO compartido proporciona a las funciones de Lambda asociadas más permisos de acceso de los que necesitan. Si utiliza un grupo de SO compartido, también debe adjuntarse una función de Lambda a todos los recursos de machine learning que utilizan el grupo de SO compartido. De lo contrario, se produce un error en la implementación.
-
Permisos de propietario del grupo. El permiso de sólo lectura o lectura y escritura que se agregará al proceso de Lambda.
Non-containerized Las funciones Lambda deben heredar estos permisos de acceso al recurso. Las funciones de Lambda en contenedor pueden heredar estos permisos de nivel de recursos o definir permisos de nivel de función. Si definen permisos de nivel de función, los permisos deben ser igual o más restrictivos que los permisos de nivel de recursos.
En la tabla siguiente se muestran las configuraciones de permisos de acceso admitidas.
nota
Cuando se utiliza la AWS IoT Greengrass API para configurar funciones y recursos de Lambda, también se requiere la ResourceId propiedad de nivel de función. La propiedad ResourceId adjunta el recurso de machine learning a la función de Lambda.
Definición de permisos de acceso para funciones de Lambda (consola)
En la AWS IoT consola, los permisos de acceso se definen al configurar un recurso de aprendizaje automático o al adjuntar uno a una función de Lambda.
- Funciones de Lambda en contenedores
-
Si solo se adjuntan funciones de Lambda en contenedor al recurso de machine learning.
-
Elija Ningún grupo de sistemas como propietario del recurso para el recurso de machine learning. Esta es la configuración recomendada cuando solo las funciones de Lambda en contenedores acceden al recurso de machine learning De lo contrario, podría conceder a las funciones Lambda adjuntas más permisos de acceso de los que necesitan.
-
- Non-containerized Funciones Lambda (requiere GGC v1.10 o posterior)
-
Si se adjunta alguna función de Lambda que no está en un contenedor al recurso de machine learning:
-
Especifique el ID de grupo del sistema (GID) que se va a utilizar como propietario del recurso para el recurso de machine learning. Elija Especificar grupo de sistemas y permisos e introduzca el GID. Puede utilizar el comando
getent groupen el dispositivo principal para buscar el ID de un grupo de sistemas. -
Elija el Read-only acceso o el acceso de lectura y escritura para los permisos del grupo del sistema.
-
Definición de permisos de acceso para funciones de Lambda (API)
En la AWS IoT Greengrass API, se definen los permisos para los recursos de aprendizaje automático en la ResourceAccessPolicy propiedad de la función Lambda o en la OwnerSetting propiedad del recurso.
- Funciones de Lambda en contenedores
-
Si solo se adjuntan funciones de Lambda en contenedor al recurso de machine learning.
-
Para las funciones de Lambda en contenedores, defina los permisos de acceso en la propiedad
Permissionde la propiedadResourceAccessPolicies. Por ejemplo:"Functions": [ { "Id": "my-containerized-function", "FunctionArn": "arn:aws:lambda:us-west-2:123456789012:function:function-name:alias-or-version", "FunctionConfiguration": { "Environment": { "ResourceAccessPolicies": [ { "ResourceId": "my-resource-id", "Permission": "ro-or-rw" } ] }, "MemorySize": 512, "Pinned": true, "Timeout": 5 } } ] -
Para los recursos de aprendizaje automático, omita la propiedad
OwnerSetting. Por ejemplo:"Resources": [ { "Id": "my-resource-id", "Name": "my-resource-name", "ResourceDataContainer": { "S3MachineLearningModelResourceData": { "DestinationPath": "/local-destination-path", "S3Uri": "s3://uri-to-resource-package" } } } ]Esta es la configuración recomendada cuando solo las funciones de Lambda en contenedores acceden al recurso de machine learning. De lo contrario, podría conceder a las funciones Lambda adjuntas más permisos de acceso de los que necesitan.
-
- Non-containerized Funciones Lambda (requiere GGC v1.10 o posterior)
-
Si se adjunta alguna función de Lambda que no está en un contenedor al recurso de machine learning:
-
Para funciones de Lambda que no están en un contenedor, omita la propiedad
PermissionenResourceAccessPolicies. Esta configuración es necesaria y permite que la función herede el permiso de nivel de recursos. Por ejemplo:"Functions": [ { "Id": "my-non-containerized-function", "FunctionArn": "arn:aws:lambda:us-west-2:123456789012:function:function-name:alias-or-version", "FunctionConfiguration": { "Environment": { "Execution": { "IsolationMode": "NoContainer", }, "ResourceAccessPolicies": [ { "ResourceId": "my-resource-id" } ] }, "Pinned": true, "Timeout": 5 } } ] -
Para las funciones de Lambda en contenedores que también tienen acceso al recurso de machine learning, omita la propiedad
PermissionenResourceAccessPolicieso defina un permiso que sea igual o más restrictivo que el permiso de nivel de recursos. Por ejemplo:"Functions": [ { "Id": "my-containerized-function", "FunctionArn": "arn:aws:lambda:us-west-2:123456789012:function:function-name:alias-or-version", "FunctionConfiguration": { "Environment": { "ResourceAccessPolicies": [ { "ResourceId": "my-resource-id", "Permission": "ro-or-rw" // Optional, but cannot exceed the GroupPermission defined for the resource. } ] }, "MemorySize": 512, "Pinned": true, "Timeout": 5 } } ] -
Para los recursos de aprendizaje automático, defina la propiedad
OwnerSetting, incluidas las propiedades secundariasGroupOwneryGroupPermission. Por ejemplo:"Resources": [ { "Id": "my-resource-id", "Name": "my-resource-name", "ResourceDataContainer": { "S3MachineLearningModelResourceData": { "DestinationPath": "/local-destination-path", "S3Uri": "s3://uri-to-resource-package", "OwnerSetting": { "GroupOwner": "os-group-id", "GroupPermission": "ro-or-rw" } } } } ]
-
Acceso a recursos de machine learning desde el código de la función de Lambda
User-defined Las funciones Lambda utilizan interfaces de sistema operativo específicas de la plataforma para acceder a los recursos de aprendizaje automático de un dispositivo central.
Su implementación de carga del modelo depende de su biblioteca ML.
Resolución de problemas
Utilice la siguiente información para solucionar problemas relacionados con el acceso a recursos de aprendizaje automático.
Temas
InvalidMLModelOwner - GroupOwnerSetting se proporciona en el recurso del modelo ML, pero o no está presente GroupOwner GroupPermission
Solución: recibe este error si un recurso de aprendizaje automático contiene el ResourceDownloadOwnerSettingobjeto pero la GroupPermission propiedad requerida GroupOwner o no está definida. Para resolver este problema, defina la propiedad que falta.
NoContainer la función no puede configurar el permiso al adjuntar recursos de Machine Learning. <function-arn > hace referencia al < identificador de recurso de Machine Learning con permiso en la política de acceso a los recursos>. < ro/rw >
Solución: recibe este error si una función Lambda no contenerizada especifica permisos de nivel de función para un recurso de aprendizaje automático. Non-containerized las funciones deben heredar los permisos del propietario del recurso, los permisos definidos en el recurso de aprendizaje automático. Para resolver este problema, elija heredar permisos de propietario de recursos (consola) o quitar los permisos de la política de acceso a recursos (API) de la función de Lambda.
La función < function-arn > hace referencia al < identificador del recurso de Machine Learning al que le falta el permiso tanto en el recurso > como en el mismo. ResourceAccessPolicy OwnerSetting
Solución: recibirá este error si los permisos para el recurso de machine learning no están configurados para la función de Lambda adjunta o el recurso. Para resolver este problema, configure los permisos en la ResourceAccessPolicypropiedad de la función Lambda o en la OwnerSettingpropiedad del recurso.
La función < function-arn > hace referencia al < identificador de recurso del recurso de Machine Learning > con el permiso\ "rw\», mientras que la configuración del propietario del recurso GroupPermission solo permite\ "ro\».
Solución: recibirá este error si los permisos de acceso definidos para la función de Lambda adjunta superan los permisos de propietario de recursos definidos para el recurso de machine learning. Para resolver este problema, establezca permisos más restrictivos para la función de Lambda o permisos menos restrictivos para el propietario del recurso.
NoContainer La función < > function-arn hace referencia a los recursos de la ruta de destino anidada.
Solución: recibirá este error si varios recursos de machine learning conectados a una función de Lambda no contenedora utilizan la misma ruta de destino o una ruta de destino anidada. Para resolver este problema, especifique rutas de destino separadas para los recursos.
Lambda < function-arn > obtiene acceso al identificador de < recurso al compartir el mismo identificador de propietario del grupo >
Solución: recibirá este error runtime.log si se especifica el mismo grupo de sistemas operativos como la identidad Ejecutar como de la función de Lambda y el propietario del recurso de machine learning, pero el recurso no está adjunto a la función de Lambda. Esta configuración otorga a la función Lambda permisos implícitos que puede usar para acceder al recurso sin autorización. AWS IoT Greengrass
Para resolver este problema, utilice un grupo de SO diferente para una de las propiedades o adjunte el recurso de machine learning a la función de Lambda.