기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.
AWS IoT Greengrass 는 클라이언트 디바이스가 연결할 수 있는 Greengrass 코어 디바이스를 식별하는 데 사용할 수 있는 Discover
API 작업을 제공합니다. 클라이언트 디바이스는 이 데이터 플레인 작업을 사용하여 BatchAssociateClientDeviceWithCoreDevice API 작업과 관련된 Greengrass 코어 디바이스에 연결하는 데 필요한 정보를 검색합니다. 클라이언트 디바이스가 온라인 상태가 되면 AWS IoT Greengrass 클라우드 서비스에 연결하고 검색 API를 사용하여 다음을 찾을 수 있습니다.
-
연결된 각 Greengrass 코어 디바이스의 IP 주소 및 포트.
-
클라이언트 디바이스가 Greengrass 코어 디바이스 인증에 사용할 수 있는 클라이언트 디바이스 CA 인증서.
참고
클라이언트 디바이스는의 검색 클라이언트를 사용하여 Greengrass 코어 디바이스의 연결 정보를 AWS IoT Device SDK 검색할 수도 있습니다. Discovery 클라이언트는 Discovery API를 사용합니다. 자세한 내용은 다음 자료를 참조하세요.
-
AWS IoT Greengrass Version 1 개발자 안내서의 Greengrass Discovery RESTful API.
이 API를 사용하려면 Greengrass 데이터 플레인 엔드포인트의 Discovery 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 코어 디바이스에 연결할 수 있습니다. 자세한 내용은 AWS IoT Greengrass Version 1 개발자 안내서의 Greengrass Discovery RESTful API를 참조하세요.
Discovery 인증 및 권한 부여
Discovery API를 사용하여 연결 정보를 검색하려면 클라이언트 디바이스가 X.509 클라이언트 인증서와 함께 TLS 상호 인증을 사용하여 인증해야 합니다. 자세한 내용은 AWS IoT Core 개발자 안내서의 X.509 클라이언트 인증서를 참조하세요.
클라이언트 디바이스에는 greengrass:Discover
작업을 수행할 수 있는 권한도 있어야 합니다. 다음 예제 AWS IoT 정책은 이름이 인 AWS IoT 사물이 Discover
자체MyClientDevice1
적으로 수행하도록 허용합니다.
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": "greengrass:Discover",
"Resource": [
"arn:aws:iot:us-west-2:123456789012:thing/MyClientDevice1"
]
}
]
}
중요
코어 디바이스 또는 Greengrass 데이터 플레인 작업의 AWS IoT 정책에 대해 사물 정책 변수(iot:Connection.Thing.
)가 지원되지 않습니다. 그 대신에 이름이 비슷한 여러 디바이스와 일치하는 와일드카드를 사용할 수 있습니다. 예를 들어 *
MyGreengrassDevice1
, MyGreengrassDevice2
등과 일치하도록 MyGreengrassDevice*
를 지정할 수 있습니다.
자세한 내용은 AWS IoT Core 개발자 안내서의 AWS IoT Core 정책을 참조하세요.
요청
다음 예제와 같이 요청은 표준 HTTP 헤더를 포함하고 있으며, Greengrass Discovery 엔드포인트로 전송됩니다.
포트 번호는 코어 디바이스가 포트 8443 또는 포트 443을 통해 HTTPS 트래픽을 보내도록 구성되었는지 여부에 따라 다릅니다. 자세한 내용은 포트 443에서 또는 네트워크 프록시를 통해 연결 단원을 참조하십시오.
참고
이 예제에서는 권장되는 ATS 루트 CA 인증서에 사용되는 ATS(Amazon Trust Services) 엔드포인트를 사용합니다. 엔드포인트는 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 확장을 구현하고 ProtocolNameList
에x-amzn-http-ca
를ProtocolName
으로 전달해야 합니다. 자세한 정보는 AWS IoT 개발자 안내서의 프로토콜을 참조하세요.
응답
성공 시 응답 헤더에는 HTTP 200 상태 코드가 포함되고 응답 본문에는 검색 응답 문서가 포함됩니다.
참고
AWS IoT Greengrass V2 는 동일한 검색 API를 사용하므로 응답 AWS IoT Greengrass V1은 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을 사용하여 Discovery API 테스트
cURL
을 설치한 경우 Discovery API를 테스트할 수 있습니다. 다음 예제에서는 Greengrass Discovery API 엔드포인트에 대한 요청을 인증하기 위해 클라이언트 디바이스의 인증서를 지정합니다.
curl -i \ --cert
1a23bc4d56.cert.pem
\ --key1a23bc4d56.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 Discovery 문제 해결을 참조하세요.