그린그래스 디스커버리 RESTful API - AWS IoT Greengrass

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

그린그래스 디스커버리 RESTful API

AWS IoT Greengrass클라이언트 장치가 연결할 수 있는 Greengrass 코어 장치를 식별하는 데 사용할 수 있는 Discover API 작업을 제공합니다. 클라이언트 디바이스는 이 데이터 플레인 작업을 사용하여 Greengrass 코어 디바이스에 연결하는 데 필요한 정보를 검색하고, 이를 BatchAssociateClientDeviceWithCoreDeviceAPI 작업에 연결합니다. 클라이언트 장치가 온라인 상태가 되면 AWS IoT Greengrass 클라우드 서비스에 연결하고 검색 API를 사용하여 다음을 찾을 수 있습니다.

  • 연결된 각 그린그래스 코어 디바이스의 IP 주소 및 포트

  • 코어 디바이스 CA 인증서. 클라이언트 디바이스가 Greengrass 코어 디바이스를 인증하는 데 사용할 수 있습니다.

참고

또한 클라이언트 장치는 의 검색 클라이언트를 사용하여 Greengrass 코어 장치에 대한 연결 정보를 검색할 수 있습니다. AWS IoT Device SDK 디스커버리 클라이언트는 디스커버리 API를 사용합니다. 자세한 내용은 다음 자료를 참조하세요.

이 API 작업을 사용하려면 Greengrass 데이터 플레인 엔드포인트의 검색 API에 HTTP 요청을 보내십시오. 이 API 엔드포인트의 형식은 다음과 같습니다.

https://greengrass-ats.iot.region.amazonaws.com:port/greengrass/discover/thing/thing-name

AWS IoT Greengrass검색 API의 지원 AWS 리전 및 엔드포인트 목록은 의 AWS IoT Greengrass V2엔드포인트 및 할당량을 참조하십시오. AWS 일반 참조 이 API 작업은 Greengrass 데이터 플레인 엔드포인트에서만 사용할 수 있습니다. 구성 요소 및 배포를 관리하는 데 사용하는 컨트롤 플레인 엔드포인트는 데이터 플레인 엔드포인트와 다릅니다.

참고

및 의 검색 API는 동일합니다. AWS IoT Greengrass V1 AWS IoT Greengrass V2 AWS IoT Greengrass V1코어에 연결되는 클라이언트 장치가 있는 경우 클라이언트 장치의 코드를 변경하지 않고도 AWS IoT Greengrass V2 핵심 장치에 연결할 수 있습니다. 자세한 내용은 개발자 안내서의 그린그래스 디스커버리 RESTful API를 참조하십시오. AWS IoT Greengrass Version 1

디스커버리 인증 및 권한 부여

검색 API를 사용하여 연결 정보를 검색하려면 클라이언트 장치가 X.509 클라이언트 인증서와 함께 TLS 상호 인증을 사용하여 인증해야 합니다. 자세한 내용은 개발자 안내서의 X.509 클라이언트 인증서를 참조하십시오. AWS IoT Core

클라이언트 장치에도 작업을 수행할 수 있는 권한이 있어야 합니다. greengrass:Discover 다음 예제 AWS IoT 정책은 이름이 지정된 AWS IoT 사물이 자체적으로 MyClientDevice1 Discover 수행되도록 허용합니다.

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": "greengrass:Discover", "Resource": [ "arn:aws:iot:us-west-2:123456789012:thing/MyClientDevice1" ] } ] }
중요

사물 정책 변수 (iot:Connection.Thing.*) 는 코어 디바이스 또는 Greengrass 데이터 플레인 작업에 대한 AWS IoT 정책에서 지원되지 않습니다. 대신 이름이 비슷한 여러 장치를 매칭하는 와일드카드를 사용할 수 있습니다. 예를 MyGreengrassDevice1 MyGreengrassDevice2 들어 MyGreengrassDevice* 일치하도록 지정하는 등의 작업을 수행할 수 있습니다.

자세한 내용은 AWS IoT Core개발자 안내서의 AWS IoT Core 정책을 참조하십시오.

요청

요청은 표준 HTTP 헤더를 포함하며 다음 예와 같이 Greengrass 검색 엔드포인트로 전송됩니다.

포트 번호는 코어 디바이스가 포트 8443을 통해 HTTPS 트래픽을 전송하도록 구성되었는지 아니면 포트 443을 통해 전송하도록 구성되었는지에 따라 달라집니다. 자세한 설명은 포트 443에서 또는 네트워크 프록시를 통해 연결 섹션을 참조하세요.

참고

이 예시에서는 권장 ATS 루트 CA 인증서와 함께 작동하는 Amazon 트러스트 서비스 (ATS) 엔드포인트를 사용합니다. 엔드포인트는 CA 인증서 유형과 일치해야 합니다

포트 8443
HTTP GET https://greengrass-ats.iot.region.amazonaws.com:8443/greengrass/discover/thing/thing-name
포트 443
HTTP GET https://greengrass-ats.iot.region.amazonaws.com:443/greengrass/discover/thing/thing-name
참고

포트 443에서 연결하는 클라이언트는 ALPN(Application Layer Protocol Negotiation) TLS 확장을 구현하고 ProtocolNameListx-amzn-http-caProtocolName으로 전달해야 합니다. 자세한 정보는 AWS IoT 개발자 안내서프로토콜을 참조하세요.

응답

성공 시 응답 헤더에는 HTTP 200 상태 코드가 포함되고 응답 본문에는 discover 응답 문서가 포함됩니다.

참고

와 AWS IoT Greengrass V1 동일한 검색 API를 AWS IoT Greengrass V2 사용하기 때문에 응답은 Greengrass 그룹과 같은 AWS IoT Greengrass V1 개념에 따라 정보를 구성합니다. 응답에는 Greengrass 그룹 목록이 포함되어 있습니다. 에서 AWS IoT Greengrass V2 각 코어 디바이스는 자체 그룹에 속하며, 그룹에는 해당 코어 디바이스와 해당 연결 정보만 포함됩니다.

검색 응답 문서 예제

다음 문서는 하나의 Greengrass 코어 장치에 연결된 클라이언트 장치에 대한 응답을 보여줍니다. 코어 디바이스에는 엔드포인트 하나와 CA 인증서 하나가 있습니다.

{ "GGGroups": [ { "GGGroupId": "greengrassV2-coreDevice-core-device-01-thing-name", "Cores": [ { "thingArn": "core-device-01-thing-arn", "Connectivity": [ { "id": "core-device-01-connection-id", "hostAddress": "core-device-01-address", "portNumber": core-device-01-port, "metadata": "core-device-01-description" } ] } ], "CAs": [ "-----BEGIN CERTIFICATE-----cert-contents-----END CERTIFICATE-----" ] } ] }

다음 문서는 두 개의 코어 장치에 연결된 클라이언트 장치에 대한 응답을 보여줍니다. 코어 디바이스에는 여러 엔드포인트와 여러 그룹 CA 인증서가 있습니다.

{ "GGGroups": [ { "GGGroupId": "greengrassV2-coreDevice-core-device-01-thing-name", "Cores": [ { "thingArn": "core-device-01-thing-arn", "Connectivity": [ { "id": "core-device-01-connection-id", "hostAddress": "core-device-01-address", "portNumber": core-device-01-port, "metadata": "core-device-01-connection-1-description" }, { "id": "core-device-01-connection-id-2", "hostAddress": "core-device-01-address-2", "portNumber": core-device-01-port-2, "metadata": "core-device-01-connection-2-description" } ] } ], "CAs": [ "-----BEGIN CERTIFICATE-----cert-contents-----END CERTIFICATE-----", "-----BEGIN CERTIFICATE-----cert-contents-----END CERTIFICATE-----", "-----BEGIN CERTIFICATE-----cert-contents-----END CERTIFICATE-----" ] }, { "GGGroupId": "greengrassV2-coreDevice-core-device-02-thing-name", "Cores": [ { "thingArn":"core-device-02-thing-arn", "Connectivity" : [ { "id": "core-device-02-connection-id", "hostAddress": "core-device-02-address", "portNumber": core-device-02-port, "metadata": "core-device-02-connection-1-description" } ] } ], "CAs": [ "-----BEGIN CERTIFICATE-----cert-contents-----END CERTIFICATE-----", "-----BEGIN CERTIFICATE-----cert-contents-----END CERTIFICATE-----", "-----BEGIN CERTIFICATE-----cert-contents-----END CERTIFICATE-----" ] } ] }

curL을 사용하여 디스커버리 API를 테스트합니다.

cURL설치한 경우 검색 API를 테스트할 수 있습니다. 다음 예제는 Greengrass 검색 API 엔드포인트에 대한 요청을 인증하기 위한 클라이언트 장치의 인증서를 지정합니다.

curl -i \ --cert 1a23bc4d56.cert.pem \ --key 1a23bc4d56.private.key \ https://greengrass-ats.iot.us-west-2.amazonaws.com:8443/greengrass/discover/thing/MyClientDevice1
참고

-i인수는 HTTP 응답 헤더를 출력하도록 지정합니다. 이 옵션을 사용하면 오류를 식별하는 데 도움이 될 수 있습니다.

요청이 성공하면 이 명령은 다음 예제와 비슷한 응답을 출력합니다.

{ "GGGroups": [ { "GGGroupId": "greengrassV2-coreDevice-MyGreengrassCore", "Cores": [ { "thingArn": "arn:aws:iot:us-west-2:123456789012:thing/MyGreengrassCore", "Connectivity": [ { "Id": "AUTOIP_192.168.1.4_1", "HostAddress": "192.168.1.5", "PortNumber": 8883, "Metadata": "" } ] } ], "CAs": [ "-----BEGIN CERTIFICATE-----\ncert-contents\n-----END CERTIFICATE-----\n" ] } ] }

명령에서 오류가 출력되면 Greengrass 검색 문제 해결을 참조하십시오.