Seleccione sus preferencias de cookies

Usamos cookies esenciales y herramientas similares que son necesarias para proporcionar nuestro sitio y nuestros servicios. Usamos cookies de rendimiento para recopilar estadísticas anónimas para que podamos entender cómo los clientes usan nuestro sitio y hacer mejoras. Las cookies esenciales no se pueden desactivar, pero puede hacer clic en “Personalizar” o “Rechazar” para rechazar las cookies de rendimiento.

Si está de acuerdo, AWS y los terceros aprobados también utilizarán cookies para proporcionar características útiles del sitio, recordar sus preferencias y mostrar contenido relevante, incluida publicidad relevante. Para aceptar o rechazar todas las cookies no esenciales, haga clic en “Aceptar” o “Rechazar”. Para elegir opciones más detalladas, haga clic en “Personalizar”.

Enlaces de preaprovisionamiento

Modo de enfoque
Enlaces de preaprovisionamiento - AWS IoT Core

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.

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.

AWS recomienda utilizar funciones de enlaces de preaprovisionamiento al crear plantillas de aprovisionamiento para permitir un mayor control de qué dispositivos y cuántos dispositivos tiene incorporados su cuenta. Los enlaces de preaprovisionamiento son funciones de Lambda que validan los parámetros transferidos desde el dispositivo antes de permitir que se aprovisione el dispositivo. Esta función de Lambda debe existir en su cuenta antes de aprovisionar un dispositivo porque se llama cada vez que un dispositivo envía una solicitud a través de RegisterThing.

importante

Asegúrese de incluir las claves contextuales de condición global source-arn o source-account en las de las políticas adjuntas a su acción de Lambda para evitar la manipulación de permisos. Para obtener más información acerca de este tema, consulte Prevención de la sustitución confusa entre servicios.

Para que los dispositivos se aprovisionen, la función de Lambda debe aceptar el objeto de entrada y devolver el objeto de salida descrito en esta sección. El aprovisionamiento continúa solo si la función de Lambda devuelve un objeto con "allowProvisioning": True.

Preaprovisionamiento de entrada de enlace

AWS IoT envía este objeto a la función de Lambda cuando un dispositivo se registra con AWS IoT.

{ "claimCertificateId" : "string", "certificateId" : "string", "certificatePem" : "string", "templateArn" : "arn:aws:iot:us-east-1:1234567890:provisioningtemplate/MyTemplate", "clientId" : "221a6d10-9c7f-42f1-9153-e52e6fc869c1", "parameters" : { "string" : "string", ... } }

El objeto parameters pasado a la función de Lambda contiene las propiedades en el argumento parameters pasado en la carga de solicitud RegisterThing.

Valor de retorno del enlace previo a la provisión

La función de Lambda debe devolver una respuesta que indique si ha autorizado la solicitud de aprovisionamiento y los valores de las propiedades para anular.

A continuación se muestra un ejemplo de una respuesta exitosa de la función de preaprovisionamiento.

{ "allowProvisioning": true, "parameterOverrides" : { "Key": "newCustomValue", ... } }

Se agregarán valores "parameterOverrides" al parámetro "parameters" en la carga de solicitud de RegisterThing.

nota
  • Si se produce un error en la función de Lambda, se produce un error en la solicitud de aprovisionamiento con ACCESS_DENIED y se registra un error en Registros de CloudWatch.

  • Si la función de Lambda no devuelve "allowProvisioning": "true" en la respuesta, se produce un error ACCESS_DENIED en la solicitud de aprovisionamiento.

  • La función de Lambda debe terminar de ejecutarse y volver en 5 segundos; de lo contrario, la solicitud de aprovisionamiento falla.

Ejemplo de enlace Lambda de preaprovisionamiento

Python

Un ejemplo de enlace Lambda de preaprovisionamiento en Python.

import json def pre_provisioning_hook(event, context): print(event) return { 'allowProvisioning': True, 'parameterOverrides': { 'DeviceLocation': 'Seattle' } }
Java

Un ejemplo de enlace Lambda de preaprovisionamiento en Java.

Clase Handler:

package example; import java.util.Map; import java.util.HashMap; import com.amazonaws.services.lambda.runtime.Context; import com.amazonaws.services.lambda.runtime.RequestHandler; public class PreProvisioningHook implements RequestHandler<PreProvisioningHookRequest, PreProvisioningHookResponse> { public PreProvisioningHookResponse handleRequest(PreProvisioningHookRequest object, Context context) { Map<String, String> parameterOverrides = new HashMap<String, String>(); parameterOverrides.put("DeviceLocation", "Seattle"); PreProvisioningHookResponse response = PreProvisioningHookResponse.builder() .allowProvisioning(true) .parameterOverrides(parameterOverrides) .build(); return response; } }

Clase Request:

package example; import java.util.Map; import lombok.Builder; import lombok.Data; import lombok.AllArgsConstructor; import lombok.NoArgsConstructor; @Data @Builder @AllArgsConstructor @NoArgsConstructor public class PreProvisioningHookRequest { private String claimCertificateId; private String certificateId; private String certificatePem; private String templateArn; private String clientId; private Map<String, String> parameters; }

Clase Response:

package example; import java.util.Map; import lombok.Builder; import lombok.Data; import lombok.AllArgsConstructor; import lombok.NoArgsConstructor; @Data @Builder @AllArgsConstructor @NoArgsConstructor public class PreProvisioningHookResponse { private boolean allowProvisioning; private Map<String, String> parameterOverrides; }
JavaScript

Un ejemplo de enlace de Lambda de preaprovisionamiento en JavaScript.

exports.handler = function(event, context, callback) { console.log(JSON.stringify(event, null, 2)); var reply = { allowProvisioning: true, parameterOverrides: { DeviceLocation: 'Seattle' } }; callback(null, reply); }

Un ejemplo de enlace Lambda de preaprovisionamiento en Python.

import json def pre_provisioning_hook(event, context): print(event) return { 'allowProvisioning': True, 'parameterOverrides': { 'DeviceLocation': 'Seattle' } }
PrivacidadTérminos del sitioPreferencias de cookies
© 2025, Amazon Web Services, Inc o sus afiliados. Todos los derechos reservados.