Use um conector C2C (Cloud-to-Cloud) - Integrações gerenciadas para AWS IoT Device Management

As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.

Use um conector C2C (Cloud-to-Cloud)

Um conector C2C gerencia a tradução de mensagens de solicitação e resposta e permite a comunicação entre integrações gerenciadas e uma nuvem de fornecedores terceirizados. Ele facilita o controle unificado em diferentes tipos de dispositivos, plataformas e protocolos, permitindo que dispositivos de terceiros sejam integrados e gerenciados.

O procedimento a seguir lista as etapas para usar o conector C2C.

Etapas para usar o conector C2C:
  1. CreateCloudConnector

    Configure um conector para permitir a comunicação bidirecional entre suas integrações gerenciadas e nuvens de fornecedores terceirizados.

    Ao configurar o conector, forneça os seguintes detalhes:

    • Nome: escolha um nome descritivo para o conector.

    • Descrição: Forneça um breve resumo da finalidade e das capacidades do conector.

    • AWS Lambda ARN: especifique o Amazon Resource Name (ARN) da AWS Lambda função que alimentará o conector.

    Crie e implante uma AWS Lambda função que se comunica com um fornecedor terceirizado APIs para criar um conector. Em seguida, chame a CreateCloudConnectorAPI nas integrações gerenciadas e forneça o ARN da AWS Lambda função para registro. Certifique-se de que a AWS Lambda função seja implantada na mesma AWS conta em que você criou o conector nas integrações gerenciadas. Você receberá um ID de conector exclusivo para identificar a integração.

    Exemplo de solicitação e resposta de 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" }

    Fluxo de criação:

    Fase de criação do conector de nuvem
    nota

    Use o GetCloudConnector, UpdateCloudConnectorDeleteCloudConnector, e ListCloudConnectors APIs conforme necessário para esse procedimento.

  2. CreateConnectorDestination

    Configure os destinos para fornecer as configurações e as credenciais de autenticação que os conectores precisam para estabelecer conexões seguras com nuvens de fornecedores terceirizados. Use Destinations para registrar suas credenciais de autenticação de terceiros com integrações gerenciadas, como detalhes de autorização OAuth 2.0, incluindo o URL de autorização, o esquema de autenticação e a localização das credenciais. AWS Secrets Manager

    Pré-requisitos

    Antes de criar um ConnectorDestination, você deve:

    • Chame a CreateCloudConnectorAPI para criar um conector. O ID que a função retorna é usado na chamada CreateConnectorDestinationda API API.

    • Recupere o tokenUrl para a plataforma 3P do conector. (Você pode trocar um AuthCode por um AccessToken).

    • Recupere o AuthURL para a plataforma 3P do conector. (Os usuários finais podem se autenticar usando seu nome de usuário e senha).

    • Use o clientId e clientSecret (da plataforma 3P) no gerenciador secreto da sua conta.

    Exemplo de solicitação e resposta de 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" }

    Fluxo de criação de destinos na nuvem:

    CreateConnectorDestination Fase de invocação da API
    nota

    Use o GetCloudConnector, UpdateCloudConnectorDeleteCloudConnector, e ListCloudConnectors APIs conforme necessário para esse procedimento.

  3. CreateAccountAssociation

    As associações representam os relacionamentos entre as contas de nuvem de terceiros dos usuários finais e um destino de conector. Depois de criar uma associação e vincular os usuários finais às integrações gerenciadas, seus dispositivos podem ser acessados por meio de uma ID de associação exclusiva. Essa integração permite três funções principais: descobrir dispositivos, enviar comandos e receber eventos.

    Pré-requisitos

    Antes de criar um, AccountAssociationvocê deve concluir o seguinte:

    Exemplo de solicitação e resposta de CreateAccountAssociation API:

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

    Use o GetCloudConnector, UpdateCloudConnectorDeleteCloudConnector, e ListCloudConnectors APIs conforme necessário para esse procedimento.

    An AccountAssociationtem um estado que é consultado de GetAccountAssociatione. ListAccountAssociations APIs Isso APIs mostra o estado da Associação. A StartAccountAssociationRefreshAPI permite a atualização de um AccountAssociationestado quando seu token de atualização expira.

  4. Descoberta de dispositivos

    Cada item gerenciado está vinculado a detalhes específicos do dispositivo, como seu número de série e um modelo de dados. O modelo de dados descreve a funcionalidade do dispositivo, indicando se é uma lâmpada, interruptor, termostato ou outro tipo de dispositivo. Para descobrir um dispositivo 3P e criar um ManagedThing para o dispositivo 3P, você deve seguir as etapas abaixo em sequência.

    1. Chame a StartDeviceDiscoveryAPI para iniciar o processo de descoberta do dispositivo.

      Exemplo de solicitação e resposta de StartDeviceDiscovery API:

      Request: { "DiscoveryType": "CLOUD", "AccountAssociationId": "*****", "ClientToken": "abc" } Response: { "Id": "string", "StartedAt": number }
    2. Invoque a GetDeviceDiscoveryAPI para verificar o status do processo de descoberta.

    3. Invoque a ListDiscoveredDevicesAPI para listar os dispositivos descobertos.

      Exemplo de solicitação e resposta de 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. Invoque a CreateManagedThingAPI para selecionar os dispositivos da lista de descoberta a serem importados para integrações gerenciadas.

      Exemplo de solicitação e resposta de CreateManagedThing 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. Invoque a GetManagedThingAPI para ver isso recém-criadomanagedThing. O status seráUNASSOCIATED.

    6. Invoque a RegisterAccountAssociationAPI para associá-la managedThing a um específicoaccountAssociation. No final de uma RegisterAccountAssociationAPI bem-sucedida, o ASSOCIATED estado managedThing muda.

      Exemplo de solicitação e resposta de RegisterAccountAssociation API:

      Request: { "AccountAssociationId": "string", "DeviceDiscoveryId": "string", "ManagedThingId": "string" } Response: { "AccountAssociationId": "string", "DeviceDiscoveryId": "string", "ManagedThingId": "string" }
  5. Envie um comando para o dispositivo 3P

    Para controlar um dispositivo recém-integrado, use a SendManagedThingCommandAPI, com o ID de associação criado anteriormente e uma ação de controle com base na capacidade suportada pelo dispositivo. O conector usa credenciais armazenadas do processo de vinculação de contas para se autenticar na nuvem de terceiros e invocar a chamada de API relevante para a operação.

    Exemplo de solicitação e resposta de 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" }

    Envie o comando para o fluxo do dispositivo 3P:

    Enviar comando para o dispositivo 3P
  6. O conector envia eventos para integrações gerenciadas

    A SendConnectorEventAPI captura quatro tipos de eventos, do conector às integrações gerenciadas, representados pelos seguintes valores de enumeração para o parâmetro Operation Type:

    • DEVICE_COMMAND_RESPONSE: a resposta assíncrona que o conector envia em resposta a um comando.

    • DEVICE_DISCOVERY: em resposta a um processo de descoberta de dispositivos, o conector envia a lista de dispositivos descobertos para integrações gerenciadas e usa a API. SendConnectorEvent

    • DEVICE_EVENT: envia os eventos recebidos do dispositivo.

    • DEVICE_COMMAND_REQUEST: solicitações de comando iniciadas a partir do dispositivo. Por exemplo, fluxos de trabalho do WebRTC.

    O conector também pode encaminhar eventos do dispositivo usando a SendConnectorEventAPI, com um userId parâmetro opcional.

    • Para eventos de dispositivos comuserId:

      Exemplo de solicitação e resposta 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 semuserId:

      Exemplo de solicitação e resposta de SendConnectorEvent API:

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

    Para remover o vínculo entre uma associação específica managedThing e uma conta, use o mecanismo de cancelamento de registro:

    Exemplo de solicitação e resposta de DeregisterAccountAssociation API:

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

    Enviar fluxo de eventos:

    Fluxo de envio de eventos
  7. Atualize o status do conector para “Listado” para torná-lo visível para outros clientes de integrações gerenciadas

    Por padrão, os conectores são privados e visíveis somente para a AWS conta que os criou. Você pode optar por tornar um conector visível para outros clientes de integrações gerenciadas.

    Para compartilhar seu conector com outros usuários, use a opção Tornar visível AWS Management Console na página de detalhes do conector para enviar seu ID de conector AWS para análise. Depois de aprovado, o conector fica disponível para todos os usuários de integrações gerenciadas no mesmo Região da AWS. Além disso, você pode restringir o acesso a AWS uma conta específica IDs modificando a política de acesso na AWS Lambda função associada ao conector. Para garantir que seu conector possa ser usado por outros clientes, gerencie as permissões de acesso do IAM em sua função Lambda de AWS outras contas para seu conector visível.

    Analise os AWS service (Serviço da AWS) termos e as políticas da sua organização que regem o compartilhamento de conectores e as permissões de acesso antes de tornar os conectores visíveis para outros clientes de integrações gerenciadas.