Utilice un conector C2C (de nube a nube) - Integraciones gestionadas para AWS IoT Device Management

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.

Utilice un conector C2C (de nube a nube)

Un conector C2C gestiona la traducción de los mensajes de solicitud y respuesta y permite la comunicación entre las integraciones gestionadas y la nube de un proveedor externo. Facilita el control unificado de diferentes tipos de dispositivos, plataformas y protocolos, lo que permite incorporar y gestionar dispositivos de terceros.

El siguiente procedimiento enumera los pasos para usar el conector C2C.

Pasos para utilizar el conector C2C:
  1. CreateCloudConnector

    Configure un conector para permitir la comunicación bidireccional entre sus integraciones gestionadas y las nubes de proveedores externos.

    Al configurar el conector, proporcione los siguientes detalles:

    • Nombre: elija un nombre descriptivo para el conector.

    • Descripción: proporcione un breve resumen del propósito y las capacidades del conector.

    • AWS Lambda ARN: especifique el nombre de recurso de Amazon (ARN) de la AWS Lambda función que alimentará el conector.

    Cree e implemente una AWS Lambda función que se comunique con un proveedor externo APIs para crear un conector. A continuación, llame a la CreateCloudConnectorAPI dentro de las integraciones gestionadas y proporcione la AWS Lambda función ARN para el registro. Asegúrese de que la AWS Lambda función esté implementada en la misma AWS cuenta en la que creó el conector en las integraciones administradas. Se le asignará un ID de conector único para identificar la integración.

    Ejemplo de solicitud y respuesta de la CreateCloudConnector API:

    Request: { "Name": "CreateCloudConnector", "Description": "Testing for C2C", "EndpointType": "LAMBDA", "EndpointConfig": { "lambda": { "arn": "arn:aws:lambda:us-east-1:xxxxxx:function:TestingConnector" } }, "ClientToken": "abc" } Response: { "Id": "string" }

    Flujo de creación:

    Fase de creación del conector a la nube
    nota

    Utilice las GetCloudConnectorteclas UpdateCloudConnector, DeleteCloudConnector, y ListCloudConnectors APIs según sea necesario para este procedimiento.

  2. CreateConnectorDestination

    Configure los destinos para proporcionar la configuración y las credenciales de autenticación que los conectores necesitan para establecer conexiones seguras con nubes de proveedores externos. Usa Destinations para registrar tus credenciales de autenticación de terceros en AWS Secrets Manager integraciones gestionadas, como los detalles de la autorización OAuth 2.0, incluida la URL de autorización, el esquema de autenticación y la ubicación de las credenciales.

    Requisitos previos

    Antes de crear una ConnectorDestination, debes:

    • Llame a la CreateCloudConnectorAPI para crear un conector. El ID que devuelve la función se utiliza en la llamada a la CreateConnectorDestinationAPI de la API.

    • Recupera el tokenUrl para la plataforma 3P del conector. (Puede cambiar un AuthCode por un AccessToken).

    • Recupera la AuthURL de la plataforma 3P del conector. (Los usuarios finales pueden autenticarse con su nombre de usuario y contraseña).

    • Usa clientId y clientSecret (desde la plataforma 3P) en el administrador secreto de tu cuenta.

    Ejemplo de solicitud y respuesta de la CreateConnectorDestination API:

    Request: { "Name": "CreateConnectorDestination", "Description": "CreateConnectorDestination", "AuthType": "OAUTH", "AuthConfig": { "oAuth": { "authUrl": "https://xxxx.com/oauth2/authorize", "tokenUrl": "https://xxxx/oauth2/token", "scope": "testScope", "tokenEndpointAuthenticationScheme": "HTTP_BASIC", "oAuthCompleteRedirectUrl": "about:blank", "proactiveRefreshTokenRenewal": { "enabled": false, "DaysBeforeRenewal": 30 } } }, "CloudConnectorId": "<connectorId>", // The connectorID instance from response of Step 1. "SecretsManager": { "arn": "arn:aws:secretsmanager:*****:secret:*******", "versionId": "********" }, "ClientToken": "***" } Response: { "Id":"string" }

    Flujo de creación de destinos en la nube:

    CreateConnectorDestination Fase de invocación de la API
    nota

    Utilice las GetCloudConnectorteclas, UpdateCloudConnectorDeleteCloudConnector, y ListCloudConnectors APIs según sea necesario para este procedimiento.

  3. CreateAccountAssociation

    Las asociaciones representan las relaciones entre las cuentas en la nube de terceros de los usuarios finales y el destino de un conector. Tras crear una asociación y vincular a los usuarios finales a las integraciones gestionadas, se puede acceder a sus dispositivos a través de un identificador de asociación único. Esta integración permite tres funciones clave: detectar dispositivos, enviar comandos y recibir eventos.

    Requisitos previos

    Antes de crear una AccountAssociation, debe completar lo siguiente:

    Ejemplo de solicitud y respuesta a la CreateAccountAssociation API:

    Request: { "Name": "CreateAccountAssociation", "Description": "CreateAccountAssociation", "ConnectorDestinationId": "<destinationId>", //The destinationID from destination creation. "ClientToken": "***" } Response: { "Id":"string" }
    nota

    Utilice las GetCloudConnectorteclas UpdateCloudConnector, DeleteCloudConnector, y ListCloudConnectors APIs según sea necesario para este procedimiento.

    Y AccountAssociationtiene un estado que se consulta desde GetAccountAssociationy ListAccountAssociations APIs. Esto APIs muestra el estado de la Asociación. La StartAccountAssociationRefreshAPI permite actualizar un AccountAssociationestado cuando su token de actualización caduca.

  4. Descubrimiento de dispositivos

    Cada elemento gestionado está vinculado a detalles específicos del dispositivo, como su número de serie y un modelo de datos. El modelo de datos describe la funcionalidad del dispositivo e indica si se trata de una bombilla, un interruptor, un termostato u otro tipo de dispositivo. Para descubrir un dispositivo 3P y crear un ManagedThing para el dispositivo 3P, debes seguir los siguientes pasos en secuencia.

    1. Llama a StartDeviceDiscoveryla API para iniciar el proceso de descubrimiento del dispositivo.

      Ejemplo de solicitud y respuesta de la StartDeviceDiscovery API:

      Request: { "DiscoveryType": "CLOUD", "AccountAssociationId": "*****", "ClientToken": "abc" } Response: { "Id": "string", "StartedAt": number }
    2. Invoca la GetDeviceDiscoveryAPI para comprobar el estado del proceso de descubrimiento.

    3. Invoque la ListDiscoveredDevicesAPI para enumerar los dispositivos descubiertos.

      Ejemplo de solicitud y respuesta de la ListDiscoveredDevices API:

      Request: //Empty body Response: { "Items": [ { "Brand": "string", "ConnectorDeviceId": "string", "ConnectorDeviceName": "string", "DeviceTypes": [ "string" ], "DiscoveredAt": number, "ManagedThingId": "string", "Model": "string", "Modification": "string" } ], "NextToken": "string" }
    4. Invoca la CreateManagedThingAPI para seleccionar los dispositivos de la lista de detección que se van a importar a las integraciones gestionadas.

      Ejemplo de solicitud y CreateManagedThing respuesta de API:

      Request: { "Role": "DEVICE", "AuthenticationMaterial": "CLOUD:XXXX:<connectorDeviceId1>", "AuthenticationMaterialType": "DISCOVERED_DEVICE", "Name": "sample-device-name" "ClientToken": "xxx" } Response: { "Arn": "string", // This is the ARN of the managedThing "CreatedAt": number, "Id": "string" }
    5. Invoca la GetManagedThingAPI para ver lo que acabas de crearmanagedThing. El estado será. UNASSOCIATED

    6. Invoca RegisterAccountAssociationla API para asociarla managedThing a una específicaaccountAssociation. Al final de una RegisterAccountAssociationAPI correcta, el ASSOCIATED estado managedThing cambia.

      Ejemplo de solicitud y respuesta de la RegisterAccountAssociation API:

      Request: { "AccountAssociationId": "string", "DeviceDiscoveryId": "string", "ManagedThingId": "string" } Response: { "AccountAssociationId": "string", "DeviceDiscoveryId": "string", "ManagedThingId": "string" }
  5. Envíe un comando al dispositivo 3P

    Para controlar un dispositivo recién incorporado, utilice la SendManagedThingCommandAPI, con el ID de asociación creado anteriormente y una acción de control basada en la capacidad compatible con el dispositivo. El conector utiliza las credenciales almacenadas en el proceso de vinculación de cuentas para autenticarse en la nube de terceros e invocar la llamada a la API correspondiente para la operación.

    Ejemplo de solicitud y respuesta de la SendManagedThingCommand API:

    Request: { "AccountAssociationId": "string", "ConnectorAssociationId": "string", "Endpoints": [ { "capabilities": [ { "actions": [ { "actionTraceId": "string", "name": "string", "parameters": JSON value, "ref": "string" } ], "id": "string", "name": "string", "version": "string" } ], "endpointId": "string" } ] } Response: { "TraceId": "string" }

    Envíe el comando al flujo del dispositivo 3P:

    Enviar el comando al dispositivo 3P
  6. El conector envía los eventos a las integraciones gestionadas

    La SendConnectorEventAPI captura cuatro tipos de eventos desde el conector hasta las integraciones gestionadas, representados por los siguientes valores de enumeración para el parámetro Operation Type:

    • DEVICE_COMMAND_RESPONSE: la respuesta asíncrona que envía el conector en respuesta a un comando.

    • DEVICE_DISCOVERY: en respuesta a un proceso de descubrimiento de dispositivos, el conector envía la lista de dispositivos detectados a las integraciones gestionadas y utiliza la API. SendConnectorEvent

    • DEVICE_EVENT: envía los eventos del dispositivo recibidos.

    • DEVICE_COMMAND_REQUEST: Solicitudes de comando iniciadas desde el dispositivo. Por ejemplo, los flujos de trabajo de WebRTC.

    El conector también puede reenviar eventos del dispositivo mediante la SendConnectorEventAPI, con un parámetro opcionaluserId.

    • Para eventos de dispositivos conuserId:

      Ejemplo de solicitud y respuesta de SendConnectorEvent API:

      Request: { "UserId": "*****", "Operation": "DEVICE_EVENT", "OperationVersion": "1.0", "StatusCode": 200, "ConnectorId": "****", "ConnectorDeviceId": "***", "TraceId": "***", "MatterEndpoint": { "id": "**", "clusters": [{ ..... } }] } } Response: { "ConnectorId": "string" }
    • Para eventos de dispositivos sinuserId:

      Ejemplo de solicitud y respuesta de SendConnectorEvent API:

      Request: { "Operation": "DEVICE_EVENT", "OperationVersion": "1.0", "StatusCode": 200, "ConnectorId": "*****", "ConnectorDeviceId": "****", "TraceId": "****", "MatterEndpoint": { "id": "**", "clusters": [{ .... }] } } Response: { "ConnectorId": "string" }

    Para eliminar el vínculo entre una asociación de cuentas concreta managedThing y una asociación de cuentas, utiliza el mecanismo de anulación del registro:

    Ejemplo de solicitud y respuesta de la DeregisterAccountAssociation API:

    Request: { "AccountAssociationId": "****", "ManagedThingId": "****" } Response: HTTP/1.1 200 // Empty body

    Enviar flujo de eventos:

    Enviar flujo de eventos
  7. Actualice el estado del conector a «Listado» para que otros clientes de integraciones gestionadas lo vean

    De forma predeterminada, los conectores son privados y solo los puede ver la AWS cuenta que los creó. Puede optar por hacer que un conector sea visible para otros clientes de integraciones gestionadas.

    Para compartir su conector con otros usuarios, utilice la opción Hacer visible en la AWS Management Console página de detalles del conector para enviar su ID de conector AWS para su revisión. Una vez aprobado, el conector estará disponible para todos los usuarios de integraciones gestionadas al mismo tiempo Región de AWS. Además, puede restringir el acceso a una AWS cuenta específica IDs modificando la política de acceso de la AWS Lambda función asociada al conector. Para garantizar que otros clientes puedan utilizar su conector, gestione los permisos de acceso de IAM en su función Lambda desde AWS otras cuentas hasta su conector visible.

    Revise los Servicio de AWS términos y las políticas de su organización que rigen los permisos de acceso y uso compartido de conectores antes de hacer que los conectores estén visibles para otros clientes de integraciones gestionadas.