기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.
클라이언트 디바이스는를 사용하여 코어 디바이스를 검색, 연결 및 통신 AWS IoT Device SDK 할 수 있습니다. 의 Greengrass 검색 클라이언트 AWS IoT Device SDK 를 사용하여 클라이언트 디바이스가 연결할 수 있는 코어 디바이스에 대한 정보를 반환하는 Greengrass 검색 API를 사용할 수 있습니다. API 응답은 연결할 MQTT 브로커 엔드포인트와 각 코어 디바이스의 ID를 확인하는 데 사용할 인증서를 포함합니다. 그런 다음 클라이언트 디바이스는 코어 디바이스에 성공적으로 연결될 때까지 각 엔드포인트를 시도할 수 있습니다.
클라이언트 디바이스는 연결한 코어 디바이스만 검색할 수 있습니다. 클라이언트 디바이스와 코어 디바이스 간의 통신을 테스트하기 전에 클라이언트 디바이스를 코어 디바이스에 연결해야 합니다. 자세한 내용은 클라이언트 디바이스 연결 단원을 참조하십시오.
Greengrass 검색 API는 사용자가 지정한 코어 디바이스 MQTT 브로커 엔드포인트를 반환합니다. IP 감지기 구성 요소를 사용하여 이러한 엔드포인트를 관리할 수도 있고 각 코어 디바이스에 대해 수동으로 관리할 수도 있습니다. 자세한 내용은 코어 디바이스 엔드포인트 관리 단원을 참조하십시오.
참고
Greengrass 검색 API를 사용하려면 클라이언트 디바이스에 greengrass:Discover
권한이 있어야 합니다. 자세한 내용은 클라이언트 디바이스에 대한 최소 AWS IoT 정책 단원을 참조하십시오.
AWS IoT Device SDK 는 여러 프로그래밍 언어로 제공됩니다. 자세한 내용은 AWS IoT Core 개발자 안내서의 AWS IoT 디바이스 SDK 단원을 참조하세요.
통신 테스트(Python)
이 섹션에서는 Python용AWS IoT Device SDK v2
중요
Python용 AWS IoT Device SDK v2를 사용하려면 디바이스가 Python 3.6 이상을 실행해야 합니다.
통신을 테스트하려면(Python용AWS IoT Device SDK v2)
-
클라이언트 디바이스로 연결할 AWS IoT 사물에 AWS IoT Device SDK Python용 v2
를 다운로드하여 설치합니다. 클라이언트 디바이스에서 다음을 수행합니다.
-
AWS IoT Device SDK v2 for Python 리포지토리를 복제하여 다운로드합니다.
git clone https://github.com/aws/aws-iot-device-sdk-python-v2.git
-
Python용 AWS IoT Device SDK v2를 설치합니다.
python3 -m pip install --user ./aws-iot-device-sdk-python-v2
-
-
Python용 AWS IoT Device SDK v2의 샘플 폴더로 변경합니다.
cd aws-iot-device-sdk-python-v2/samples
-
샘플 Greengrass 검색 애플리케이션을 실행합니다. 이 애플리케이션에는 클라이언트 디바이스 사물 이름, 사용할 MQTT 주제 및 메시지, 연결을 인증하고 보호하는 인증서를 지정하는 인수가 필요합니다. 다음 예제에서는
clients/
주제에 Hello World 메시지를 전송합니다.MyClientDevice1
/hello/world-
MyClientDevice1
을 클라이언트 디바이스의 사물 이름으로 바꿉니다. -
~/certs/AmazonRootCA1.pem
을 클라이언트 디바이스의 Amazon 루트 CA 인증서 경로로 바꿉니다. -
~/certs/device.pem.crt
를 클라이언트 디바이스의 디바이스 인증서 경로로 바꿉니다. -
~/certs/private.pem.key
를 클라이언트 디바이스의 프라이빗 키 파일 경로로 바꿉니다. -
us-east-1
을 클라이언트 디바이스와 코어 디바이스가 운영되는 AWS 리전으로 바꿉니다.
python3 basic_discovery.py \\ --thing_name
MyClientDevice1
\\ --topic 'clients/MyClientDevice1
/hello/world' \\ --message 'Hello World!' \\ --ca_file~/certs/AmazonRootCA1.pem
\\ --cert~/certs/device.pem.crt
\\ --key~/certs/private.pem.key
\\ --regionus-east-1
\\ --verbosity Warn검색 샘플 애플리케이션은 메시지를 10회 전송하고 연결을 해제합니다. 또한 메시지를 게시하는 주제와 동일한 주제를 구독합니다. 출력에서 애플리케이션이 해당 주제에 대한 MQTT 메시지를 수신했음을 나타내는 경우 클라이언트 디바이스는 코어 디바이스와 성공적으로 통신할 수 있습니다.
Performing greengrass discovery... awsiot.greengrass_discovery.DiscoverResponse(gg_groups=[awsiot.greengrass_discovery.GGGroup(gg_group_id='greengrassV2-coreDevice-MyGreengrassCore', cores=[awsiot.greengrass_discovery.GGCore(thing_arn='arn:aws:iot:us-east-1:123456789012:thing/MyGreengrassCore', connectivity=[awsiot.greengrass_discovery.ConnectivityInfo(id='203.0.113.0', host_address='203.0.113.0', metadata='', port=8883)])], certificate_authorities=['-----BEGIN CERTIFICATE-----\
MIICiT...EXAMPLE=
\ -----END CERTIFICATE-----\ '])]) Trying core arn:aws:iot:us-east-1:123456789012:thing/MyGreengrassCore at host 203.0.113.0 port 8883 Connected! Published topic clients/MyClientDevice1/hello/world: {"message": "Hello World!", "sequence": 0} Publish received on topic clients/MyClientDevice1/hello/world b'{"message": "Hello World!", "sequence": 0}' Published topic clients/MyClientDevice1/hello/world: {"message": "Hello World!", "sequence": 1} Publish received on topic clients/MyClientDevice1/hello/world b'{"message": "Hello World!", "sequence": 1}'...
Published topic clients/MyClientDevice1/hello/world: {"message": "Hello World!", "sequence": 9} Publish received on topic clients/MyClientDevice1/hello/world b'{"message": "Hello World!", "sequence": 9}'그 대신에 애플리케이션에서 오류가 출력되면 Greengrass 검색 문제 해결을 참조하세요.
코어 디바이스에서 Greengrass 로그를 보고 클라이언트 디바이스가 메시지를 성공적으로 연결하고 전송하는지 확인할 수도 있습니다. 자세한 내용은 AWS IoT Greengrass 로그 모니터링 단원을 참조하십시오.
-
통신 테스트(C++)
이 섹션에서는 AWS IoT Device SDK v2 for C++
C++용 AWS IoT Device SDK v2를 빌드하려면 디바이스에 다음 도구가 있어야 합니다.
-
C++ 11 이상
-
CMake 3.1 이상
-
다음 컴파일러 중 하나입니다.
-
GCC 4.8 이상
-
Clang 3.9 이상
-
MSVC 2015 이상
-
통신을 테스트하려면(C++의 경우AWS IoT Device SDK v2)
-
클라이언트 디바이스로 연결할 AWS IoT 사물에 AWS IoT Device SDK C++용 v2
를 다운로드하여 빌드합니다. 클라이언트 디바이스에서 다음을 수행합니다.
-
C++ 워크스페이스용 AWS IoT Device SDK v2에 대한 폴더를 생성하고 변경합니다.
cd mkdir iot-device-sdk-cpp cd iot-device-sdk-cpp
-
AWS IoT Device SDK v2 for C++ 리포지토리를 복제하여 다운로드합니다.
--recursive
플래그는 하위 모듈을 다운로드하도록 지정합니다.git clone --recursive https://github.com/aws/aws-iot-device-sdk-cpp-v2.git
-
C++용 AWS IoT Device SDK v2 빌드 출력에 대한 폴더를 생성하고 변경합니다.
mkdir aws-iot-device-sdk-cpp-v2-build cd aws-iot-device-sdk-cpp-v2-build
-
C++용 AWS IoT Device SDK v2를 빌드합니다.
cmake -DCMAKE_INSTALL_PREFIX="~/iot-device-sdk-cpp" -DCMAKE_BUILD_TYPE="Release" ../aws-iot-device-sdk-cpp-v2 cmake --build . --target install
-
-
C++용 AWS IoT Device SDK v2에서 Greengrass 검색 샘플 애플리케이션을 빌드합니다. 다음을 수행합니다.
-
C++용 AWS IoT Device SDK v2에서 Greengrass 검색 샘플 폴더로 변경합니다.
cd ../aws-iot-device-sdk-cpp-v2/samples/greengrass/basic_discovery
-
Greengrass 검색 샘플 빌드 출력을 위한 폴더를 생성하고 해당 폴더로 변경합니다.
mkdir build cd build
-
Greengrass 검색 샘플 애플리케이션을 빌드합니다.
cmake -DCMAKE_PREFIX_PATH="~/iot-device-sdk-cpp" -DCMAKE_BUILD_TYPE="Release" .. cmake --build . --config "Release"
-
-
샘플 Greengrass 검색 애플리케이션을 실행합니다. 이 애플리케이션에는 클라이언트 디바이스 사물 이름, 사용할 MQTT 주제, 연결을 인증하고 보호하는 인증서를 지정하는 인수가 필요합니다. 다음 예제에서는
clients/
주제를 구독하고 명령줄에 입력한 메시지를 동일한 주제에 게시합니다.MyClientDevice1
/hello/world-
MyClientDevice1
을 클라이언트 디바이스의 사물 이름으로 바꿉니다. -
~/certs/AmazonRootCA1.pem
을 클라이언트 디바이스의 Amazon 루트 CA 인증서 경로로 바꿉니다. -
~/certs/device.pem.crt
를 클라이언트 디바이스의 디바이스 인증서 경로로 바꿉니다. -
~/certs/private.pem.key
를 클라이언트 디바이스의 프라이빗 키 파일 경로로 바꿉니다. -
us-east-1
을 클라이언트 디바이스와 코어 디바이스가 운영되는 AWS 리전으로 바꿉니다.
./basic-discovery \ --thing_name
MyClientDevice1
\ --topic 'clients/MyClientDevice1
/hello/world' \ --ca_file~/certs/AmazonRootCA1.pem
\ --cert~/certs/device.pem.crt
\ --key~/certs/private.pem.key
\ --regionus-east-1
검색 샘플 애플리케이션이 주제를 구독하고 게시할 메시지를 입력하라는 메시지를 표시합니다.
Connecting to group greengrassV2-coreDevice-MyGreengrassCore with thing arn arn:aws:iot:us-east-1:123456789012:thing/MyGreengrassCore, using endpoint 203.0.113.0:8883 Connected to group greengrassV2-coreDevice-MyGreengrassCore, using connection to 203.0.113.0:8883 Successfully subscribed to clients/MyClientDevice1/hello/world Enter the message you want to publish to topic clients/MyClientDevice1/hello/world and press enter. Enter 'exit' to exit this program.
그 대신에 애플리케이션에서 오류가 출력되면 Greengrass 검색 문제 해결을 참조하세요.
-
-
메시지를 입력합니다(예:
Hello World!
).Enter the message you want to publish to topic clients/MyClientDevice1/hello/world and press enter. Enter 'exit' to exit this program. Hello World!
출력에서 애플리케이션이 해당 주제에 대한 MQTT 메시지를 수신했음을 나타내는 경우 클라이언트 디바이스는 코어 디바이스와 성공적으로 통신할 수 있습니다.
Operation on packetId 2 Succeeded Publish received on topic clients/MyClientDevice1/hello/world Message: Hello World!
코어 디바이스에서 Greengrass 로그를 보고 클라이언트 디바이스가 메시지를 성공적으로 연결하고 전송하는지 확인할 수도 있습니다. 자세한 내용은 AWS IoT Greengrass 로그 모니터링 단원을 참조하십시오.
통신 테스트(JavaScript)
이 섹션에서는 JavaScript용AWS IoT Device SDK v2
중요
JavaScript용 AWS IoT Device SDK v2를 사용하려면 디바이스가 Node v10.0 이상을 실행해야 합니다.
통신을 테스트하려면(JavaScript용AWS IoT Device SDK v2)
-
클라이언트 디바이스로 연결할 AWS IoT 사물에 AWS IoT Device SDK v2 for JavaScript
를 다운로드하여 설치합니다. 클라이언트 디바이스에서 다음을 수행합니다.
-
AWS IoT Device SDK v2 for JavaScript 리포지토리를 복제하여 다운로드합니다.
git clone https://github.com/aws/aws-iot-device-sdk-js-v2.git
-
JavaScript용 AWS IoT Device SDK v2를 설치합니다.
cd aws-iot-device-sdk-js-v2 npm install
-
-
AWS IoT Device SDK v2 for JavaScript에서 Greengrass 검색 샘플 폴더로 변경합니다.
cd samples/node/basic_discovery
-
Greengrass 검색 샘플 애플리케이션을 설치합니다.
npm install
-
샘플 Greengrass 검색 애플리케이션을 실행합니다. 이 애플리케이션에는 클라이언트 디바이스 사물 이름, 사용할 MQTT 주제 및 메시지, 연결을 인증하고 보호하는 인증서를 지정하는 인수가 필요합니다. 다음 예제에서는
clients/
주제에 Hello World 메시지를 전송합니다.MyClientDevice1
/hello/world-
MyClientDevice1
을 클라이언트 디바이스의 사물 이름으로 바꿉니다. -
~/certs/AmazonRootCA1.pem
을 클라이언트 디바이스의 Amazon 루트 CA 인증서 경로로 바꿉니다. -
~/certs/device.pem.crt
를 클라이언트 디바이스의 디바이스 인증서 경로로 바꿉니다. -
~/certs/private.pem.key
를 클라이언트 디바이스의 프라이빗 키 파일 경로로 바꿉니다. -
us-east-1
을 클라이언트 디바이스와 코어 디바이스가 운영되는 AWS 리전으로 바꿉니다.
node dist/index.js \ --thing_name
MyClientDevice1
\ --topic 'clients/MyClientDevice1
/hello/world' \ --message 'Hello World!' \ --ca_file~/certs/AmazonRootCA1.pem
\ --cert~/certs/device.pem.crt
\ --key~/certs/private.pem.key
\ --regionus-east-1
\ --verbose warn검색 샘플 애플리케이션은 메시지를 10회 전송하고 연결을 해제합니다. 또한 메시지를 게시하는 주제와 동일한 주제를 구독합니다. 출력에서 애플리케이션이 해당 주제에 대한 MQTT 메시지를 수신했음을 나타내는 경우 클라이언트 디바이스는 코어 디바이스와 성공적으로 통신할 수 있습니다.
Discovery Response: {"gg_groups":[{"gg_group_id":"greengrassV2-coreDevice-MyGreengrassCore","cores":[{"thing_arn":"arn:aws:iot:us-east-1:123456789012:thing/MyGreengrassCore","connectivity":[{"id":"203.0.113.0","host_address":"203.0.113.0","port":8883,"metadata":""}]}],"certificate_authorities":["-----BEGIN CERTIFICATE-----\n
MIICiT...EXAMPLE=
\n-----END CERTIFICATE-----\n"]}]} Trying endpoint={"id":"203.0.113.0","host_address":"203.0.113.0","port":8883,"metadata":""} [WARN] [2021-06-12T00:46:45Z] [00007f90c0e8d700] [socket] - id=0x7f90b8018710 fd=26: setsockopt() for NO_SIGNAL failed with errno 92. If you are having SIGPIPE signals thrown, you may want to install a signal trap in your application layer. Connected to endpoint={"id":"203.0.113.0","host_address":"203.0.113.0","port":8883,"metadata":""} Publish received. topic:"clients/MyClientDevice1/hello/world" dup:false qos:0 retain:false {"message":"Hello World!","sequence":1} Publish received. topic:"clients/MyClientDevice1/hello/world" dup:false qos:0 retain:false {"message":"Hello World!","sequence":2} Publish received. topic:"clients/MyClientDevice1/hello/world" dup:false qos:0 retain:false {"message":"Hello World!","sequence":3} Publish received. topic:"clients/MyClientDevice1/hello/world" dup:false qos:0 retain:false {"message":"Hello World!","sequence":4} Publish received. topic:"clients/MyClientDevice1/hello/world" dup:false qos:0 retain:false {"message":"Hello World!","sequence":5} Publish received. topic:"clients/MyClientDevice1/hello/world" dup:false qos:0 retain:false {"message":"Hello World!","sequence":6} Publish received. topic:"clients/MyClientDevice1/hello/world" dup:false qos:0 retain:false {"message":"Hello World!","sequence":7} Publish received. topic:"clients/MyClientDevice1/hello/world" dup:false qos:0 retain:false {"message":"Hello World!","sequence":8} Publish received. topic:"clients/MyClientDevice1/hello/world" dup:false qos:0 retain:false {"message":"Hello World!","sequence":9} Publish received. topic:"clients/MyClientDevice1/hello/world" dup:false qos:0 retain:false {"message":"Hello World!","sequence":10} Complete!그 대신에 애플리케이션에서 오류가 출력되면 Greengrass 검색 문제 해결을 참조하세요.
코어 디바이스에서 Greengrass 로그를 보고 클라이언트 디바이스가 메시지를 성공적으로 연결하고 전송하는지 확인할 수도 있습니다. 자세한 내용은 AWS IoT Greengrass 로그 모니터링 단원을 참조하십시오.
-
통신 테스트(Java)
이 섹션에서는 Java용AWS IoT Device SDK v2
중요
Java용 AWS IoT Device SDK v2를 빌드하려면 디바이스에 다음 도구가 있어야 합니다.
-
Java 8 이상(Java 폴더를 가리키는
JAVA_HOME
포함) -
Apache Maven
통신을 테스트하려면(Java용AWS IoT Device SDK v2)
-
AWS IoT Device SDK Java용 v2
를 다운로드하여 클라이언트 디바이스로 연결할 AWS IoT 사물에 빌드합니다. 클라이언트 디바이스에서 다음을 수행합니다.
-
AWS IoT Device SDK v2 for Java 리포지토리를 복제하여 다운로드합니다.
git clone https://github.com/aws/aws-iot-device-sdk-java-v2.git
-
Java용 AWS IoT Device SDK v2 폴더로 변경합니다.
-
Java용 AWS IoT Device SDK v2를 빌드합니다.
cd aws-iot-device-sdk-java-v2 mvn versions:use-latest-versions -Dincludes="software.amazon.awssdk.crt*" mvn clean install
-
-
샘플 Greengrass 검색 애플리케이션을 실행합니다. 이 애플리케이션에는 클라이언트 디바이스 사물 이름, 사용할 MQTT 주제, 연결을 인증하고 보호하는 인증서를 지정하는 인수가 필요합니다. 다음 예제에서는
clients/
주제를 구독하고 명령줄에 입력한 메시지를 동일한 주제에 게시합니다.MyClientDevice1
/hello/world-
MyClientDevice1
의 두 인스턴스 모두 클라이언트 디바이스의 사물 이름으로 바꿉니다. -
$HOME/certs/AmazonRootCA1.pem
을 클라이언트 디바이스의 Amazon 루트 CA 인증서 경로로 바꿉니다. -
$HOME/certs/device.pem.crt
를 클라이언트 디바이스의 디바이스 인증서 경로로 바꿉니다. -
$HOME/certs/private.pem.key
를 클라이언트 디바이스의 프라이빗 키 파일 경로로 바꿉니다. -
us-east-1
을 클라이언트 디바이스와 코어 디바이스가 작동하는 AWS 리전 로 바꿉니다.
DISCOVERY_SAMPLE_ARGS="--thing_name
MyClientDevice1
\ --topic 'clients/MyClientDevice1
/hello/world' \ --ca_file$HOME/certs/AmazonRootCA1.pem
\ --cert$HOME/certs/device.pem.crt
\ --key$HOME/certs/private.pem.key
\ --regionus-east-1
" mvn exec:java -pl samples/Greengrass \ -Dexec.mainClass=greengrass.BasicDiscovery \ -Dexec.args="$DISCOVERY_SAMPLE_ARGS"검색 샘플 애플리케이션이 주제를 구독하고 게시할 메시지를 입력하라는 메시지를 표시합니다.
Connecting to group ID greengrassV2-coreDevice-MyGreengrassCore, with thing arn arn:aws:iot:us-east-1:123456789012:thing/MyGreengrassCore, using endpoint 203.0.113.0:8883 Started a clean session Enter the message you want to publish to topic clients/MyClientDevice1/hello/world and press Enter. Type 'exit' or 'quit' to exit this program:
그 대신에 애플리케이션에서 오류가 출력되면 Greengrass 검색 문제 해결을 참조하세요.
-
-
메시지를 입력합니다(예:
Hello World!
).Enter the message you want to publish to topic clients/MyClientDevice1/hello/world and press Enter. Type 'exit' or 'quit' to exit this program: Hello World!
출력에서 애플리케이션이 해당 주제에 대한 MQTT 메시지를 수신했음을 나타내는 경우 클라이언트 디바이스는 코어 디바이스와 성공적으로 통신할 수 있습니다.
Message received on topic clients/MyClientDevice1/hello/world: Hello World!
코어 디바이스에서 Greengrass 로그를 보고 클라이언트 디바이스가 메시지를 성공적으로 연결하고 전송하는지 확인할 수도 있습니다. 자세한 내용은 AWS IoT Greengrass 로그 모니터링 단원을 참조하십시오.