Greengrass Discovery RESTful API - AWS IoT Greengrass

AWS IoT Greengrass Version 1이(가) 2023년 6월 30일에 수명 연장 단계에 들어갔습니다. AWS IoT Greengrass V1 관리형 정책에 대한 자세한 정보는 섹션을 참조하세요. 이 날짜 이후에는 AWS IoT Greengrass V1에서 기능, 개선 사항, 버그 수정 또는 보안 패치를 제공하는 업데이트를 릴리스하지 않습니다. AWS IoT Greengrass V1에서 실행되는 장치는 중단되지 않으며 계속 작동하고 클라우드에 연결됩니다. 중대한 새 기능추가 플랫폼에 대한 지원이 추가되는 AWS IoT Greengrass Version 2(으)로 마이그레이션하는 것이 좋습니다.

Greengrass Discovery RESTful API

AWS IoT Greengrass와(과) 통신하는 모든 클라이언트 장치는 Greengrass 그룹의 멤버여야 합니다. 각 그룹에는 Greengrass 코어가 있어야 합니다. Discovery API를 사용하면 각 클라이언트 장치는 같은 Greengrass 그룹에 속한 Greengrass 코어에 연결하는 데 필요한 정보를 검색할 수 있습니다. 클라이언트 장치가 먼저 온라인 상태가 되면 AWS IoT Greengrass 서비스에 연결할 수 있으며 Discovery API를 사용하여 다음 사항들을 찾을 수도 있습니다.

  • 장치가 속한 그룹. 한 클라이언트 장치는 최대 10개 그룹의 멤버일 수 있습니다.

  • 해당 그룹 내 Greengrass 코어에 대한 IP 주소 및 포트.

  • Greengrass 코어 장치를 인증하는 데 사용할 수 있는 해당 그룹 CA 인증서.

참고

클라이언트 장치는 AWS IoT 장치 SDK를 사용하여 Greengrass 코어의 연결 정보를 검색할 수도 있습니다. 자세한 내용은 AWS IoT 장치 SDK 단원을 참조하십시오.

이 API를 사용하려면 Discovery API 엔드포인트에 HTTP 요청을 전송합니다. 예:

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

AWS IoT Greengrass 디스커버리 API에 지원되는 Amazon Web Services 리전 및 엔드포인트 목록은 AWS 일반 참조AWS IoT Greengrass 엔드포인트 및 할당량을 참조하십시오. 이것은 데이터 영역 전용 API입니다. 그룹 관리 및 AWS IoT Core 작업을 위한 엔드포인트는 Discovery API 엔드포인트와 다릅니다.

요청

다음 예제와 같이 요청은 표준 HTTP 헤더를 포함하고 있으며, Greengrass Discovery 엔드포인트로 전송됩니다.

포트 번호는 코어가 포트 8443 또는 포트 443을 통해 HTTPS 트래픽을 보내도록 구성되었는지 여부에 따라 다릅니다. 자세한 내용은 포트 443에서 또는 네트워크 프록시를 통해 연결 단원을 참조하십시오.

포트 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 개발자 안내서프로토콜을 참조하세요.

참고

이 예제에서는 ATS 루트 CA 인증서에 사용되는 Amazon Trust Services(ATS) 엔드포인트를 사용합니다(권장). 엔드포인트는 CA 인증서 유형과 일치해야 합니다 자세한 내용은 서비스 엔드포인트는 루트 CA 인증서 유형과 일치해야 합니다 단원을 참조하십시오.

응답

성공 시, 응답은 표준 HTTP 헤더와 다음 코드 및 본문을 포함합니다.

HTTP 200 BODY: response document

자세한 내용은 검색 응답 문서 예제 단원을 참조하십시오.

검색 권한

연결 정보를 검색하려면 호출자가 greengrass:Discover 작업을 수행할 수 있도록 허용하는 정책이 필요합니다. 클라이언트 인증서와의 TLS 상호 인증은 유일하게 허용된 인증 형식입니다. 다음은 호출자가 이러한 작업을 수행할 수 있도록 허용하는 정책 예제입니다.

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

검색 응답 문서 예제

다음 문서는 Greengrass 코어 엔드포인트 및 그룹 CA 인증서를 각각 하나씩 포함하는 그룹의 멤버에 속한 클라이언트 장치에 대한 응답을 보여줍니다.

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

다음 문서는 1개의 Greengrass 코어와 다수의 엔드포인트 및 그룹 CA 인증서를 포함하는 두 그룹의 멤버에 속한 클라이언트 장치에 대한 응답을 보여줍니다.

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

Greengrass 그룹에는 각각 정확히 1개의 Greengrass 코어가 정의되어야 합니다. Greengrass 코어 목록을 포함하는 AWS IoT Greengrass 서비스로부터의 모든 응답은 단 1개의 Greengrass 코어를 포함합니다.

cURL을 설치했을 경우 검색 요청을 테스트할 수 있습니다. 예:

$ curl --cert 1a23bc4d56.cert.pem --key 1a23bc4d56.private.key https://greengrass-ats.iot.us-west-2.amazonaws.com:8443/greengrass/discover/thing/MyDevice {"GGGroups":[{"GGGroupId":"1234a5b6-78cd-901e-2fgh-3i45j6k1789","Cores":[{"thingArn":"arn:aws:iot:us-west-2:1234567 89012:thing/MyFirstGroup_Core","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"]}]}