View a markdown version of this page

C2C(Cloud-to-Cloud) 커넥터 사용 - 에 대한 관리형 통합 AWS IoT Device Management

기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.

C2C(Cloud-to-Cloud) 커넥터 사용

C2C 커넥터는 요청 및 응답 메시지의 번역을 관리하고 관리형 통합과 타사 공급업체 클라우드 간의 통신을 활성화합니다. 다양한 디바이스 유형, 플랫폼 및 프로토콜에서 통합 제어를 용이하게 하여 타사 디바이스를 온보딩하고 관리할 수 있습니다.

다음 절차에서는 C2C 커넥터를 사용하는 단계를 나열합니다.

C2C 커넥터를 사용하는 단계:
  1. CreateCloudConnector

    관리형 통합과 타사 공급업체 클라우드 간의 양방향 통신을 활성화하도록 커넥터를 구성합니다.

    커넥터를 설정할 때 다음 세부 정보를 제공합니다.

    • 이름: 커넥터에 대한 설명 이름을 선택합니다.

    • 설명: 커넥터의 용도와 기능에 대한 간략한 요약을 제공합니다.

    • AWS Lambda ARN: 커넥터에 전원을 공급하는 AWS Lambda 함수의 Amazon 리소스 이름(ARN)을 지정합니다.

    타사 공급업체 APIs와 통신하는 AWS Lambda 함수를 빌드하고 배포하여 커넥터를 생성합니다. 그런 다음 관리형 통합 내에서 CreateCloudConnector API를 호출하고 등록할 AWS Lambda 함수 ARN을 제공합니다. 관리형 통합에서 커넥터를 생성하는 동일한 AWS 계정에 AWS Lambda 함수가 배포되었는지 확인합니다. 통합을 식별하기 위해 고유한 커넥터 ID가 할당됩니다.

    샘플 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" }

    생성 흐름:

    클라우드 커넥터 생성 단계
    참고

    이 절차의 필요에 따라 GetCloudConnector, UpdateCloudConnector, DeleteCloudConnectorListCloudConnectors APIs를 사용합니다.

  2. CreateConnectorDestination

    커넥터가 타사 공급업체 클라우드와 보안 연결을 설정하는 데 필요한 설정 및 권한 부여 자격 증명을 제공하도록 대상을 구성합니다. 대상을 사용하여 관리형 통합에 타사 권한 부여 자격 증명을 등록합니다.

    이제 두 가지 권한 부여 유형이 지원됩니다.

    • OAuth 2.0 - OAuth 권한 부여(권한 부여 URL, 토큰 URL, 클라이언트 자격 증명)를 사용하는 플랫폼의 경우

    • GeneralAuthorization - API 키, 보유자 토큰 또는 OAuth 권한 부여 메커니즘을 사용하는 플랫폼의 경우

    사전 조건

    ConnectorDestination을 생성하기 전에 다음을 수행해야 합니다.

    • CreateCloudConnector API를 호출하여 커넥터를 생성합니다. 함수가 반환하는 ID는 CreateConnectorDestination API 호출에 사용됩니다.

    • OAuth 권한 부여의 경우:

      • 타사 플랫폼tokenUrl의를 검색합니다(authCode를 accessToken으로 교환하려면).

      • 타사 플랫폼에 authUrl 대한 검색(최종 사용자 권한 부여용)

      • clientId 및를 clientSecret에 저장 AWS Secrets Manager

    • GeneralAuthorization의 경우:

      • 에 권한 부여 자료(API 키, 보유자 토큰 등) 저장 AWS Secrets Manager

      • 각 권한 부여 자료에는 이름과 Secrets Manager 참조가 필요합니다.

    샘플 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" }

    샘플 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" }

    GeneralAuthorization의 주요 차이점:

    • 필수 AuthType 필드 없음

    • 최상위 SecretsManager 필드 필요 없음

    • AuthConfig.GeneralAuthorization.AuthMaterials 배열 사용

    • 각 인증 자료에는 이름과 자체 Secrets Manager 참조가 있습니다.

    • 향후 사용 사례를 위한 여러 인증 자료 지원

    현재 ConnectorDestination은 ConnectorDestination에서 OAuth 및 GeneralAuthorization도 함께 지원합니다.

    클라우드 대상 생성 흐름:

    CreateConnectorDestination API 호출 단계
    참고
  3. CreateAccountAssociation

    연결은 최종 사용자의 타사 클라우드 계정과 커넥터 대상 간의 관계를 나타냅니다. 연결을 생성하고 최종 사용자를 관리형 통합에 연결하면 고유한 연결 ID를 통해 디바이스에 액세스할 수 있습니다. 이 통합을 통해 디바이스 검색, 명령 전송, 이벤트 수신이라는 세 가지 주요 기능을 사용할 수 있습니다.

    사전 조건

    AccountAssociation을 생성하기 전에 다음을 완료해야 합니다.

    샘플 CreateAccountAssociation API 요청(OAuth):

    Request: { "Name": "CreateAccountAssociation", "Description": "CreateAccountAssociation", "ConnectorDestinationId": "<destinationId>", "ClientToken": "***" } Response: { "Id":"string" }

    샘플 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" }

    GeneralAuthorization의 주요 차이점:

    • GeneralAuthorization.AuthMaterialName 필드 포함

    • ConnectorDestination에 정의된 인증 자료 중 하나를 참조합니다.

    • 응답에 OAuth 권한 부여 URL이 없음

    참고

    이 절차의 필요에 따라 GetAccountAssociation, UpdateAccountAssociation, DeleteAccountAssociationListAccountAssociations APIs를 사용합니다.

    AccountAssociation에는 GetAccountAssociationListAccountAssociations APIs. 이러한 APIs 연결의 상태를 표시합니다. StartAccountAssociationRefresh API를 사용하면 새로 고침 토큰이 만료될 때 AccountAssociation 상태를 새로 고칠 수 있습니다.

  4. 디바이스 검색

    각 관리형 사물은 일련 번호 및 데이터 모델과 같은 디바이스별 세부 정보에 연결됩니다. 데이터 모델은 디바이스의 기능을 설명하여 전구, 스위치, 온도 조절기 또는 다른 유형의 디바이스인지 여부를 나타냅니다. 타사 디바이스를 검색하고 managedThings이라는 두 가지가 있습니다.

    1. 옵션 1: 기존 디바이스 검색 흐름

      커넥터 디바이스 IDs 미리 모르는 경우이 워크플로를 사용합니다. 이 흐름은 계정과 연결된 모든 디바이스를 검색하고 온보딩할 디바이스를 선택할 수 있습니다.

      1. StartDeviceDiscovery API를 호출하여 디바이스 검색 프로세스를 시작합니다.

        샘플 StartDeviceDiscovery API 요청 및 응답:

        Request: { "DiscoveryType": "CLOUD", "AccountAssociationId": "*****", "ClientToken": "abc" } Response: { "Id": "string", "StartedAt": number }
      2. GetDeviceDiscovery API를 호출하여 검색 프로세스의 상태를 확인합니다.

      3. ListDiscoveredDevices API를 호출하여 검색된 디바이스를 나열합니다.

        샘플 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. CreateManagedThing API를 호출하여 검색 목록에서 관리형 통합으로 가져올 디바이스를 선택합니다.

        샘플 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" }
      5. GetManagedThing API를 호출하여 새로 생성된를 확인합니다managedThing. 상태는 입니다UNASSOCIATED.

      6. RegisterAccountAssociation API를 호출하여 이를 특정 managedThing에 연결합니다accountAssociation. 성공적인 RegisterAccountAssociation API가 끝나면 상태가 managedThing 변경됩니다ACTIVATED.

        샘플 RegisterAccountAssociation API 요청 및 응답:

        Request: { "AccountAssociationId": "string", "DeviceDiscoveryId": "string", "ManagedThingId": "string" } Response: { "AccountAssociationId": "string", "DeviceDiscoveryId": "string", "ManagedThingId": "string" }
    2. 옵션 2: 사전 온보딩된 디바이스 검색 흐름

      온보딩 전에 커넥터 디바이스 IDs를 이미 알고 있는 경우이 워크플로를 사용합니다. 이 흐름은 사전 프로비저닝된 디바이스 또는 더 큰 세트에서 특정 디바이스를 선택적으로 온보딩하려는 경우에 유용합니다. 이 접근 방식은 디바이스를 완전히 등록하고 활성화하는 데 필요한 API 호출 수를 줄입니다.

      중요

      사전 온보딩된 클라우드 검색 흐름을 사용하려면 디바이스 온보딩 프로세스를 시작하기 전에 connectorDeviceId (커넥터 디바이스 식별자)를 알아야 합니다. 이 식별자는 타사 공급업체의 플랫폼에서 또는 디바이스 프로비저닝 중에 가져옵니다.

      1. PRE_ONBOARDED_CLOUD 인증 자료 유형으로 CreateManagedThing API를 호출합니다. 이렇게 하면 여러 계정 연결이 있는 PRE_ASSOCIATED 상태의 managedThing이 생성됩니다.

        샘플 CreateManagedThing API 요청 및 응답(미리 온보딩됨):

        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" }
        참고

        사전 온보딩된 디바이스의 AuthenticationMaterial 형식은 하나 이상의 계정 연결 IDs 지정할 수 CLOUD:<connectorDeviceId>:<accountAssociationId1>:<accountAssociationId2>:... 있는 입니다.

      2. (선택 사항) GetManagedThing API를 호출하여 managedThing이 PRE_ASSOCIATED 상태인지 확인합니다.

      3. connectorDeviceIdList 파라미터를 사용하여 StartDeviceDiscovery API를 호출하여 사전 온보딩된 디바이스만 검색합니다.

        connectorDeviceIdList를 사용한 샘플 StartDeviceDiscovery API 요청: connectorDeviceIdList

        Request: { "DiscoveryType": "CLOUD", "AccountAssociationId": "*****", "ConnectorDeviceIdList": [ "connector-device-id-1", "connector-device-id-2", "connector-device-id-3" ], "ClientToken": "abc" } Response: { "Id": "string", "StartedAt": number }

        connectorDeviceIdList를 사용하는 경우 검색 프로세스는 지정된 커넥터 디바이스 IDs. 커넥터는 검색된 디바이스 정보와 함께 SendConnectorEvent를 통해 DEVICE_DISCOVERY 이벤트를 전송합니다.

      4. 검색이 성공적으로 완료되면 관리형 통합은 사전 온보딩된 managedThings 연결된 계정 연결에 자동으로 등록합니다. managedThing은에서 PRE_ASSOCIATED ACTIVATED 상태로 전환됩니다.

        참고

        자동 등록이 실패하고 managedThing이 DISCOVERED 상태를 유지하는 경우 RegisterAccountAssociation API를 폴백으로 수동으로 호출하여 등록 프로세스를 완료할 수 있습니다.

      5. (선택 사항) GetManagedThing API를 호출하여 managedThing이 현재 ACTIVATED 상태인지 확인합니다.

  5. 타사 디바이스로 명령 전송

    새로 온보딩된 디바이스를 제어하려면 이전에 생성한 연결 ID와 함께 SendManagedThingCommand API를 사용하고 디바이스에서 지원하는 기능을 기반으로 하는 제어 작업을 사용합니다. 커넥터는 계정 연결 프로세스의 저장된 자격 증명을 사용하여 타사 클라우드로 인증하고 작업에 대한 관련 API 호출을 호출합니다.

    참고

    GeneralAuthorization의 경우 커넥터는 AccountAssociation에 지정된 권한 부여 자료 이름을 사용하여 Secrets Manager에서 권한 부여 자료(API 키, 보유자 토큰 등)를 검색합니다.

    샘플 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" }

    타사 디바이스 흐름으로 명령을 전송합니다.

    타사 디바이스로 명령 전송
  6. 커넥터가 관리형 통합으로 이벤트 전송

    SendConnectorEvent API는 커넥터에서 관리형 통합에 이르는 네 가지 유형의 이벤트를 캡처합니다.이 이벤트는 작업 유형 파라미터에 대한 다음 열거형 값으로 표시됩니다.

    • DEVICE_COMMAND_RESPONSE: 커넥터가 명령에 대한 응답으로 보내는 비동기 응답입니다.

    • DEVICE_DISCOVERY: 커넥터는 디바이스 검색 프로세스에 대한 응답으로 검색된 디바이스 목록을 관리형 통합으로 전송하고 SendConnectorEvent API를 사용합니다.

    • DEVICE_EVENT: 수신된 디바이스 이벤트를 전송합니다.

    • DEVICE_COMMAND_REQUEST: 디바이스에서 시작된 명령 요청입니다. WebRTC 워크플로를 예로 들 수 있습니다.

    커넥터는 선택적 userId 파라미터와 함께 SendConnectorEvent API를 사용하여 디바이스 이벤트를 전달할 수도 있습니다.

    참고

    GeneralAuthorization: GeneralAuthorization 사용할 때 각 보안 암호 ARN 및 버전에 대해 userId는 고유해야 합니다.

    • 를 사용하는 디바이스 이벤트의 경우userId:

      샘플 SendConnectorEvent API 요청 및 응답:

      Request: { "UserId": "*****", "Operation": "DEVICE_EVENT", "OperationVersion": "1.0", "StatusCode": 200, "ConnectorId": "****", "ConnectorDeviceId": "***", "TraceId": "***", "MatterEndpoint": { "id": "**", "clusters": [{ ..... } }] } } Response: { "ConnectorId": "string" }
    • 이 없는 디바이스 이벤트의 경우userId:

      샘플 SendConnectorEvent API 요청 및 응답:

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

    특정 연결managedThing과 계정 연결 간의 링크를 제거하려면 등록 취소 메커니즘을 사용합니다.

    샘플 DeregisterAccountAssociation API 요청 및 응답:

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

    이벤트 흐름 전송:

    이벤트 전송 흐름
  7. 커넥터 상태를 "Listed"로 업데이트하여 다른 관리형 통합 고객에게 표시

    기본적으로 커넥터는 프라이빗이며 커넥터를 생성한 AWS 계정에만 표시됩니다. 커넥터를 다른 관리형 통합 고객에게 표시하도록 선택할 수 있습니다.

    커넥터를 다른 사용자와 공유하려면 커넥터 세부 정보 페이지의 AWS Management Console 에 있는 표시 설정 옵션을 사용하여 검토를 AWS 위해 커넥터 ID를에 제출합니다. 승인되면 동일한의 모든 관리형 통합 사용자가 커넥터를 사용할 수 있습니다 AWS 리전. 또한 커넥터의 연결된 AWS Lambda 함수에서 액세스 정책을 수정하여 특정 AWS 계정 IDs에 대한 액세스를 제한할 수 있습니다. 다른 고객이 커넥터를 사용할 수 있도록 하려면 다른 AWS 계정에서 표시되는 커넥터로 Lambda 함수에 대한 IAM 액세스 권한을 관리합니다.

    커넥터를 다른 관리형 통합 고객에게 표시하기 전에 커넥터 공유 및 액세스 권한을 관리하는 AWS 서비스 용어와 조직의 정책을 검토하세요.