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:
-
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 APIs de fornecedores terceirizados 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:
nota
Use as ListCloudConnectorsAPIs GetCloudConnectorUpdateCloudConnectorDeleteCloudConnector,, e conforme necessário para esse procedimento.
-
-
CreateConnectorDestination
Configure os destinos para fornecer as configurações e as credenciais de autorização que os conectores precisam para estabelecer conexões seguras com nuvens de fornecedores terceirizados. Use Destinations para registrar suas credenciais de autorização de terceiros com integrações gerenciadas.
Agora há suporte para dois tipos de autorização:
-
OAuth 2.0 - Para plataformas que usam autorização OAuth (URL de autorização, URL do token, credenciais do cliente)
-
GeneralAuthorization- Para plataformas que usam chaves de API, tokens portadores ou qualquer mecanismo de autorização que não seja OAuth
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.
-
Para autorização do OAuth:
Recupere o
tokenUrlpara a plataforma de terceiros (para trocar um AuthCode por um AccessToken)Recupere o
authUrlpara a plataforma de terceiros (para autorização do usuário final)Armazene o
clientIdeclientSecretem AWS Secrets Manager
-
Para GeneralAuthorization:
Armazene seus materiais de autorização (chaves de API, tokens de portador etc.) em AWS Secrets Manager
Cada material de autorização precisa de um nome e uma referência ao Secrets Manager.
Exemplo de solicitação de CreateConnectorDestination API (OAuth):
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>", "SecretsManager": { "arn": "arn:aws:secretsmanager:*****:secret:*******", "versionId": "********" }, "ClientToken": "***" } Response: { "Id":"string" }Exemplo de solicitação de CreateConnectorDestination API (GeneralAuthorization):
Request: { "Name": "CreateConnectorDestination", "Description": "GeneralAuthorization test destination", "AuthConfig": { "GeneralAuthorization": { "AuthMaterials": [ { "AuthMaterialName": "AuthKey1", "SecretsManager": { "arn": "arn:aws:secretsmanager:*****:secret:*******", "versionId": "********" } } ] } }, "CloudConnectorId": "<connectorId>", "ClientToken": "***" } Response: { "Id": "string" }Principais diferenças para GeneralAuthorization:
Nenhum
AuthTypecampo obrigatórioNenhum
SecretsManagercampo de nível superior é necessárioUsa
AuthConfig.GeneralAuthorization.AuthMaterialsmatrizCada material de autenticação tem um nome e sua própria referência ao Secrets Manager.
Suporta vários materiais de autenticação para futuros casos de uso
Atualmente, ConnectorDestination também suporta OAuth e GeneralAuthorization junto em nosso. ConnectorDestination
Fluxo de criação de destinos na nuvem:
nota
Use as ListConnectorDestinationsAPIs GetConnectorDestinationUpdateConnectorDestinationDeleteConnectorDestination,, e conforme necessário para esse procedimento.
-
-
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:
Chame a CreateConnectorDestinationAPI para criar um destino. O ID que a função retorna é usado na chamada da CreateAccountAssociationAPI.
Invoque a API CreateAccountAssociation.
Exemplo de solicitação de CreateAccountAssociation API (OAuth):
Request: { "Name": "CreateAccountAssociation", "Description": "CreateAccountAssociation", "ConnectorDestinationId": "<destinationId>", "ClientToken": "***" } Response: { "Id":"string" }Exemplo de solicitação de CreateAccountAssociation API (GeneralAuthorization):
Request: { "Name": "CreateAccountAssociation", "Description": "GeneralAuthorization test account association", "GeneralAuthorization": { "AuthMaterialName": "AuthKey1" }, "ConnectorDestinationId": "<destinationId>", "ClientToken": "***" } Response: { "AccountAssociationId": "string", "Arn": "string", "AssociationState": "ASSOCIATION_SUCCEEDED" }Principais diferenças para GeneralAuthorization:
Inclui
GeneralAuthorization.AuthMaterialNamecampoFaz referência a um dos materiais de autenticação definidos no ConnectorDestination
Nenhum URL de autorização do OAuth na resposta
nota
Use as ListAccountAssociationsAPIs GetAccountAssociationUpdateAccountAssociationDeleteAccountAssociation,, e conforme necessário para esse procedimento.
An AccountAssociationtem um estado que é consultado a partir de GetAccountAssociationListAccountAssociationsAPIs. Essas APIs mostram o estado da Associação. A StartAccountAssociationRefreshAPI permite a atualização de um AccountAssociationestado quando seu token de atualização expira.
-
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. Há dois fluxos de trabalho para descobrir dispositivos de terceiros e criar coisas gerenciadas: o fluxo de descoberta tradicional e o fluxo de descoberta pré-integrado.
-
Opção 1: fluxo tradicional de descoberta de dispositivos
Use esse fluxo de trabalho quando você não souber com antecedência os IDs do dispositivo conector. Esse fluxo descobre todos os dispositivos associados a uma conta e permite que você selecione quais dispositivos integrar.
-
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 } -
Invoque a GetDeviceDiscoveryAPI para verificar o status do processo de descoberta.
-
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" } -
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:<deviceDiscoveryId>:<connectorDeviceId>", "AuthenticationMaterialType": "DISCOVERED_DEVICE", "Name": "sample-device-name", "ClientToken": "xxx" } Response: { "Arn": "string", // This is the ARN of the managedThing "CreatedAt": number, "Id": "string" } -
Invoque a GetManagedThingAPI para ver isso recém-criado
managedThing. O status seráUNASSOCIATED. -
Invoque a RegisterAccountAssociationAPI para associá-la
managedThinga um específicoaccountAssociation. No final de uma RegisterAccountAssociationAPI bem-sucedida, oACTIVATEDestadomanagedThingmuda.Exemplo de solicitação e resposta de RegisterAccountAssociation API:
Request: { "AccountAssociationId": "string", "DeviceDiscoveryId": "string", "ManagedThingId": "string" } Response: { "AccountAssociationId": "string", "DeviceDiscoveryId": "string", "ManagedThingId": "string" }
-
-
Opção 2: fluxo de descoberta de Pre-onboarded dispositivos
Use esse fluxo de trabalho quando você já conhece os IDs do dispositivo conector antes da integração. Esse fluxo é útil para dispositivos pré-provisionados ou quando você deseja integrar seletivamente dispositivos específicos de um conjunto maior. Essa abordagem reduz o número de chamadas de API necessárias para registrar e ativar totalmente os dispositivos.
Importante
Para usar o fluxo de descoberta de nuvem pré-integrado, você deve conhecer o
connectorDeviceId(identificador do dispositivo conector) antes de iniciar o processo de integração do dispositivo. Esse identificador é obtido da plataforma do fornecedor terceirizado ou durante o provisionamento do dispositivo.-
Invoque a CreateManagedThingAPI com o tipo
PRE_ONBOARDED_CLOUDde material de autenticação. Isso cria um ManagedThing noPRE_ASSOCIATEDestado com várias associações de contas.Exemplo de solicitação e resposta de CreateManagedThing API (Pre-onboarded):
Request: { "Role": "DEVICE", "AuthenticationMaterial": "CLOUD:<connectorDeviceId>:<accountAssociationId1>:<accountAssociationId2>", "AuthenticationMaterialType": "PRE_ONBOARDED_CLOUD", "Name": "pre-onboarded-device-name", "ClientToken": "xxx" } Response: { "Arn": "string", // This is the ARN of the managedThing "CreatedAt": number, "Id": "string" }nota
O
AuthenticationMaterialformato para dispositivos pré-integrados éCLOUD:<connectorDeviceId>:<accountAssociationId1>:<accountAssociationId2>:...onde você pode especificar uma ou mais IDs de associação de conta. -
(Opcional) Invoque a GetManagedThingAPI para verificar se o ManagedThing está no estado.
PRE_ASSOCIATED -
Chame a StartDeviceDiscoveryAPI com o
connectorDeviceIdListparâmetro para descobrir somente os dispositivos pré-integrados.Exemplo de solicitação de StartDeviceDiscovery API com conectorDeviceIdList:
Request: { "DiscoveryType": "CLOUD", "AccountAssociationId": "*****", "ConnectorDeviceIdList": [ "connector-device-id-1", "connector-device-id-2", "connector-device-id-3" ], "ClientToken": "abc" } Response: { "Id": "string", "StartedAt": number }Ao usar
connectorDeviceIdList, o processo de descoberta retorna somente dispositivos que correspondam às IDs de dispositivo conector especificadas. O conector enviará umDEVICE_DISCOVERYevento via SendConnectorEventcom as informações do dispositivo descoberto. -
Após a conclusão bem-sucedida da descoberta, as integrações gerenciadas registram automaticamente os ManagedThings pré-integrados nas associações de contas associadas. O ManagedThing faz a transição de
PRE_ASSOCIATEDpara estado.ACTIVATEDnota
Se o registro automático falhar e o ManagedThing permanecer no
DISCOVEREDestado, você poderá invocar manualmente a RegisterAccountAssociationAPI como alternativa para concluir o processo de registro. -
(Opcional) Invoque a GetManagedThingAPI para verificar se o ManagedThing está agora no estado.
ACTIVATED
-
-
-
Envie um comando para o dispositivo de terceiros
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.
nota
Pois GeneralAuthorization, o conector recupera o material de autorização (chave de API, token do portador etc.) do Secrets Manager usando o nome do material de autorização especificado no. AccountAssociation
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 de dispositivos de terceiros:
-
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
userIdparâmetro opcional.nota
Para GeneralAuthorization: Ao usar GeneralAuthorization, para cada ARN e versão do Secrets, o ID do usuário precisa ser exclusivo.
-
Para eventos de dispositivos com
userId: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 sem
userId: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
managedThinge 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 bodyEnviar fluxo de eventos:
-
-
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 Console de gerenciamento da AWS 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 IDs de AWS conta específicos 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.