

지원 종료 공지: 2026년 10월 7일에는에 대한 지원을 중단할 AWS 예정입니다 AWS IoT Greengrass Version 1. 2026년 10월 7일 이후에는 더 이상 AWS IoT Greengrass V1 리소스에 액세스할 수 없습니다. 자세한 내용은 [에서 마이그레이션 AWS IoT Greengrass Version 1](https://docs.aws.amazon.com/greengrass/v2/developerguide/migrate-from-v1.html)을 참조하세요.

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

# 모듈 4: AWS IoT Greengrass 그룹의 클라이언트 디바이스와 상호 작용
<a name="module4"></a>

이 모듈에서는 *클라이언트* 디바이스 또는 디바이스라고 하는 로컬 IoT *디바이스*가 AWS IoT Greengrass 코어 디바이스에 연결하고 통신하는 방법을 보여줍니다. AWS IoT Greengrass 코어에 연결하는 클라이언트 디바이스는 AWS IoT Greengrass 그룹의 일부이며 AWS IoT Greengrass 프로그래밍 패러다임에 참여할 수 있습니다. 이 모듈에서는 하나의 클라이언트 장치가 Greengrass 그룹 내의 다른 클라이언트 장치에 Hello World 메시지를 보냅니다.

![\[AWS IoT 클라이언트 디바이스 #1 및 클라이언트 디바이스 #2에 연결된 AWS IoT Greengrass 코어에 연결됩니다.\]](http://docs.aws.amazon.com/ko_kr/greengrass/v1/developerguide/images/gg-get-started-065.5.png)


시작하기 전에 [Greengrass 장치 설정](quick-start.md) 스크립트를 실행하거나 [모듈 1](module1.md) 및 [모듈 2](module2.md)를 완료합니다. 이 모듈에서는 두 시뮬레이션된 장치를 생성합니다. 다른 구성 요소나 장치는 필요하지 않습니다.

이 모듈은 완료하는 데 30분이 채 걸리지 않습니다.

**Topics**
+ [AWS IoT Greengrass 그룹에 클라이언트 디바이스 생성](device-group.md)
+ [구독 구성](config-subs.md)
+ [Python AWS IoT Device SDK 용 설치](IoT-SDK.md)
+ [통신 테스트](test-comms.md)

# AWS IoT Greengrass 그룹에 클라이언트 디바이스 생성
<a name="device-group"></a>

이 단계에서는 Greengrass 그룹에 두 개의 클라이언트 장치를 추가합니다. 이 프로세스에는 디바이스를 AWS IoT 사물로 등록하고 연결을 허용하는 인증서 및 키를 구성하는 작업이 포함됩니다 AWS IoT Greengrass.

1. <a name="console-gg-groups"></a> AWS IoT 콘솔 탐색 창의 **관리**에서 **Greengrass 디바이스**를 확장한 다음 **그룹(V1)을** 선택합니다.

1. <a name="group-choose-target-group"></a>대상 그룹을 선택합니다.

1. <a name="gg-group-add-device"></a>그룹 구성 페이지에서 **클라이언트 장치**를 선택한 다음 **연결**을 선택합니다.

1. <a name="gg-group-create-device"></a>**클라이언트 디바이스를이 그룹과 연결** 모달에서 **새 AWS IoT 사물 생성을** 선택합니다.

   **사물 생성** 페이지가 새 탭에서 열립니다.

1. <a name="gg-group-create-single-thing"></a>**사물 생성** 페이지에서 **단일 사물 생성**을 선택한 후 **다음**을 선택합니다.

1. **사물 속성 지정** 페이지에서 이 클라이언트 장치를 **HelloWorld\$1Publisher**(으)로 등록하고 **다음**을 선택합니다.

1. <a name="gg-group-create-device-configure-certificate"></a>**장치 인증서 구성** 페이지에서 **다음**을 선택합니다.

1. <a name="gg-group-create-device-attach-policy"></a>**인증서에 정책 첨부** 페이지에서 다음 중 하나를 수행합니다.
   + 클라이언트 장치에 필요한 권한을 부여하는 기존 정책을 선택한 다음 **사물 생성**을 선택합니다.

     디바이스가 AWS 클라우드 및 코어에 연결하는 데 사용하는 인증서와 키를 다운로드할 수 있는 모달이 열립니다.
   + 클라이언트 장치 권한을 부여하는 새 정책을 만들어 첨부하십시오. 해결 방법:

     1. **정책 생성**을 선택합니다.

        **정책 생성** 페이지가 새 탭에서 열립니다.

     1. **정책 생성** 페이지에서 다음을 수행합니다.

        1. **정책 이름**에는 **GreengrassV1ClientDevicePolicy**와(과) 같이 정책을 설명하는 이름을 입력합니다.

        1. **정책 설명** 탭의 **정책 문서**에서 **JSON**을 선택합니다.

        1. 다음 정책 문서를 입력합니다. 이 정책을 통해 클라이언트 장치는 Greengrass 코어를 검색하고 모든 MQTT 주제에 대해 통신할 수 있습니다. 이 정책의 액세스를 제한하는 방법에 대한 자세한 내용은 [에 대한 디바이스 인증 및 권한 부여 AWS IoT Greengrass](device-auth.md)을(를) 참조하세요.

------
#### [ JSON ]

****  

           ```
           {
             "Version":"2012-10-17",		 	 	 
             "Statement": [
               {
                 "Effect": "Allow",
                 "Action": [
                   "iot:Publish",
                   "iot:Subscribe",
                   "iot:Connect",
                   "iot:Receive"
                 ],
                 "Resource": [
                   "*"
                 ]
               },
               {
                 "Effect": "Allow",
                 "Action": [
                   "greengrass:*"
                 ],
                 "Resource": [
                   "*"
                 ]
               }
             ]
           }
           ```

------

        1. **생성(Create)**을 선택하여 정책을 생성합니다.

     1. **인증서에 정책 첨부** 페이지가 열려 있는 브라우저 탭으로 돌아가십시오. 해결 방법:

        1. **정책** 목록에서 **GreengrassV1ClientDevicePolicy**과 같이 만든 정책을 선택합니다.

           새 정책이 나타나지 않으면 새로고침 아이콘을 선택합니다.

        1. **사물 생성(Create thing)**을 선택합니다.

           디바이스가 AWS 클라우드 및 코어에 연결하는 데 사용하는 인증서와 키를 다운로드할 수 있는 모달이 열립니다.

1. <a name="gg-group-create-device-download-certs"></a>**인증서 및 키 다운로드** 모달에서 장치의 인증서를 다운로드합니다.
**중요**  
**완료**를 선택하기 전에 보안 리소스를 다운로드합니다.

   해결 방법:

   1. **장치 인증서**의 경우 **다운로드**를 선택하여 장치 인증서를 다운로드합니다.

   1. **공개 키 파일**의 경우 **다운로드**를 선택하여 인증서의 공개 키를 다운로드합니다.

   1. **개인 키 파일**의 경우 **다운로드**를 선택하여 인증서의 개인 키 파일을 다운로드합니다.

   1. *AWS IoT 개발자 안내서*의 [서버 인증](https://docs.aws.amazon.com/iot/latest/developerguide/server-authentication.html)을 검토하고 적절한 루트 CA 인증서를 선택합니다. Amazon Trust Services(ATS) 엔드포인트와 ATS 루트 CA 인증서를 사용하는 것이 좋습니다. **루트 CA 인증서**에서 루트 CA 인증서용 **다운로드**를 선택합니다.

   1. **완료**를 선택합니다.

   장치 인증서 및 키의 파일 이름에 공통적으로 나타나는 인증서 ID를 기록해 둡니다. 나중에 필요합니다.

1. **클라이언트 장치를 이 그룹에 연결** 모달을 연 상태로 브라우저 탭으로 돌아가십시오. 해결 방법:

   1. **AWS IoT 사물 이름**의 경우 생성한 **HelloWorld\$1Publisher**을(를) 선택합니다.

      해당 사물이 보이지 않으면 새로 고침 버튼을 선택하십시오.

   1. **** 연결을 선택합니다.

1. 3\$110단계를 반복하여 그룹에 두 번째 클라이언트 장치를 추가합니다.

   이 클라이언트 장치의 이름을 **HelloWorld\$1Subscriber**(으)로 지정합니다. 클라이언트 장치의 인증서 및 키를 컴퓨터에 다운로드합니다. 이번에도 HelloWorld\$1Subscriber 장치의 파일 이름에 공통적인 인증서 ID를 기록해 둡니다.

   이제 Greengrass 그룹에 두 개의 클라이언트 장치가 있어야 합니다.
   + HelloWorld\$1Publisher
   + HelloWorld\$1Subscriber

1. 컴퓨터에 이러한 클라이언트 장치의 보안 인증 정보를 저장할 폴더를 만드세요. 인증서와 키를 이 폴더에 복사합니다.

# 구독 구성
<a name="config-subs"></a>

이 단계에서 HelloWorld\$1Publisher 클라이언트 장치가 MQTT 메시지를 HelloWorld\$1Subscriber 클라이언트 장치로 보낼 수 있게 합니다.

1. 그룹 구성 페이지에서 **구독** 탭을 선택한 다음 **추가**를 선택합니다.

1. **구독 생성** 페이지에서 다음을 수행하여 구독을 구성합니다.

   1. **소스 유형**에서 **클라이언트 장치**를 선택한 다음 **HelloWorld\$1Publisher**를 선택합니다.

   1. **대상 유형**에서 **클라이언트 장치**, **HelloWorld\$1Subscriber**를 차례로 선택합니다.

   1. **주제 필터**에 **hello/world/pubsub**을 입력합니다.
**참고**  
이전 모듈에서 구독을 삭제할 수 있습니다. 그룹의 **구독** 페이지에서 삭제할 구독을 선택한 다음 **삭제**를 선택합니다.

   1. **구독 생성**을 선택합니다.

1. <a name="enable-automatic-detection"></a>Greengrass 코어가 IP 주소 목록을 게시할 수 있도록 자동 감지가 활성화되어 있는지 확인합니다. 클라이언트 장치는 이 정보를 사용하여 코어를 검색합니다. 다음을 수행합니다.

   1. 그룹 구성 페이지에서 **Lambda 함수** 탭을 선택합니다.

   1. **시스템 Lambda 함수**에서 **IP 감지기**를 선택한 다음 **편집**을 선택합니다.

   1. **IP 감지기 설정 편집**에서 **MQTT 브로커 엔드포인트 자동 감지 및 재정의**를 선택한 다음 **저장**을 선택합니다.

1. [코어 장치로 클라우드 구성 배포](configs-core.md) 섹션에 설명된 대로 Greengrass 대몬(daemon)이 실행 중인지 확인합니다.

1. <a name="console-actions-deploy"></a>그룹 구성 페이지에서 **배포**를 선택합니다.

배포 상태가 페이지 헤더에서 그룹 이름 아래에 표시됩니다. 배포의 세부 정보를 보려면 **배포** 탭을 선택합니다.

# Python AWS IoT Device SDK 용 설치
<a name="IoT-SDK"></a>

클라이언트 디바이스는 AWS IoT Device SDK for Python을 사용하여 AWS IoT 및 AWS IoT Greengrass 코어 디바이스와 통신할 수 있습니다(Python 프로그래밍 언어 사용). 요구 사항을 포함한 자세한 내용은 GitHub의 Python [ Readme](https://github.com/aws/aws-iot-device-sdk-python) AWS IoT Device SDK 용 섹션을 참조하세요.

이 단계에서는 SDK를 설치하고 컴퓨터의 시뮬레이션된 클라이언트 장치에서 사용하는 `basicDiscovery.py` 샘플 함수를 가져옵니다.

1. 컴퓨터에 SDK와 모든 필수 구성 요소를 함께 설치하려면 운영 체제를 선택합니다.

------
#### [ Windows ]

   1. [관리자 권한 명령 프롬프트](https://technet.microsoft.com/en-us/library/cc947813(v=ws.10).aspx)를 열고 다음 명령을 실행합니다.

      ```
      python --version
      ```

      버전 정보가 반환되지 않았거나 버전 번호가 2.7 미만(Python 2) 또는 3.3 미만(Python 3)이면 [Python 다운로드](https://wiki.python.org/moin/BeginnersGuide/Download)의 지침에 따라 Python 2.7 이상 또는 Python 3.3 이상을 설치합니다. 자세한 내용은 [Windows에서 Python 사용](https://docs.python.org/3.6/using/windows.html)을 참조하십시오.

   1. [Python용AWS IoT Device SDK](https://github.com/aws/aws-iot-device-sdk-python)을 `zip` 파일로 다운로드하고 컴퓨터의 적절한 위치에 압축을 해제합니다.

      `setup.py` 파일이 들어 있는 압축 해제된 `aws-iot-device-sdk-python-master` 폴더의 파일 경로를 메모합니다. 다음 단계에서 이 파일 경로는 *path-to-SDK-folder*로 표시됩니다.

   1. 관리자 권한 명령 프롬프트에서 다음을 실행합니다.

      ```
      cd path-to-SDK-folder
      python setup.py install
      ```

------
#### [ macOS ]

   1. 터미널 창을 열고 다음 명령을 실행합니다.

      ```
      python --version
      ```

      버전 정보가 반환되지 않았거나 버전 번호가 2.7 미만(Python 2) 또는 3.3 미만(Python 3)이면 [Python 다운로드](https://wiki.python.org/moin/BeginnersGuide/Download)의 지침에 따라 Python 2.7 이상 또는 Python 3.3 이상을 설치합니다. 자세한 내용은 [Macintosh에서 Python 사용](https://docs.python.org/3/using/mac.html)을 참조하십시오.

   1. 터미널 창에서 다음 명령을 실행하여 OpenSSL 버전을 확인합니다.

      ```
      python
      >>>import ssl
      >>>print ssl.OPENSSL_VERSION
      ```

      OpenSSL 버전 값을 기록해 둡니다.
**참고**  
Python 3를 실행 중인 경우 **print(ssl.OPENSSL\$1VERSION)**를 사용합니다.

      Python 셸을 닫으려면 다음 명령을 실행합니다.

      ```
      >>>exit()
      ```

      OpenSSL 버전이 1.0.1 이상이면 [c단계](#step-c-install-python-sdk)로 건너뜁니다. 그렇지 않은 경우 다음 단계를 따르십시오.

      1. 터미널 창에서 다음 명령을 실행하여 컴퓨터에서 Simple Python Version Management를 사용 중인지 확인합니다.

        ```
        which pyenv
        ```

      파일 경로가 반환되면 [**`pyenv` 사용**] 탭을 선택합니다. 반환되지 않으면 [**`pyenv` 사용 안 함**] 탭을 선택합니다.

------
#### [ Using pyenv ]

      1. [Mac OS X용 Python 릴리스](https://www.python.org/downloads/mac-osx/)(또는 유사 항목)를 참조하여 안정적인 최신 Python 버전을 확인하십시오. 다음 예에서 이 값은 *latest-Python-version*으로 표시됩니다.

      1. 터미널 창에서 다음 명령을 실행합니다.

         ```
         pyenv install latest-Python-version
         pyenv global latest-Python-version
         ```

         예를 들어 Python 2의 최신 버전이 2.7.14이면 이 명령은 다음과 같습니다.

         ```
         pyenv install 2.7.14
         pyenv global 2.7.14
         ```

      1. 터미널 창을 닫았다가 다시 열고 다음 명령을 실행합니다.

         ```
         python
         >>>import ssl
         >>>print ssl.OPENSSL_VERSION
         ```

         OpenSSL 버전은 1.0.1 이상이어야 합니다. 버전이 1.0.1 미만이면 업데이트가 실패한 것입니다. **pyenv install** 및 **pyenv global** 명령에서 사용된 Python 버전 값을 확인하고 다시 시도하십시오.

      1. 다음 명령을 실행하여 Python 셸을 종료합니다.

         ```
          exit()
         ```

------
#### [ Not using pyenv ]

      1. 터미널 창에서 다음 명령을 실행하여 [brew](https://brew.sh/)가 설치되어 있는지 확인합니다.

         ```
         which brew
         ```

         파일 경로가 반환되지 않으면 다음과 같이 `brew`를 설치합니다.

         ```
         /usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"
         ```
**참고**  
설치 프롬프트에 따릅니다. Xcode 명령줄 도구 다운로드에 약간의 시간이 걸릴 수 있습니다.

      1. 다음 명령을 실행합니다.

         ```
         brew update
         brew install openssl
         brew install python@2
         ```

         Python AWS IoT Device SDK 용 에는 Python 실행 파일로 컴파일된 OpenSSL 버전 1.0.1(또는 이상)이 필요합니다. **brew install python** 명령은 이 요구 사항을 충족하는 `python2` 실행 파일을 설치합니다. `python2` 실행 파일은 `/usr/local/bin` 디렉터리에 설치되며, `PATH` 환경 변수의 일부여야 합니다. 확인하려면 다음 명령을 실행합니다.

         ```
         python2 --version
         ```

         `python2` 버전 정보가 제공되면 다음 단계로 건너뜁니다. 그렇지 않으면 셸 프로필에 다음 줄을 추가하여 `PATH` 환경 변수에 대한 `/usr/local/bin` 경로를 영구적으로 추가합니다.

         ```
         export PATH="/usr/local/bin:$PATH"
         ```

         예를 들어 `.bash_profile`을 사용 중이거나 아직 셸 프로필이 없는 경우 터미널 창에서 다음 명령을 실행합니다.

         ```
         echo 'export PATH="/usr/local/bin:$PATH"' >> ~/.bash_profile
         ```

         이후 셸 프로필에 [source](https://en.wikipedia.org/wiki/Source_(command))를 지정한 다음 `python2 --version`에서 버전 정보를 제공하는지 확인합니다. 예를 들어 `.bash_profile`을 사용 중인 경우 다음 명령을 실행합니다.

         ```
         source ~/.bash_profile
         python2 --version
         ```

         `python2` 버전 정보가 반환되어야 합니다.

      1. 다음 줄을 셸 프로필에 추가합니다.

         ```
         alias python="python2"
         ```

         예를 들어 `.bash_profile`을 사용 중이거나 아직 셸 프로필이 없는 경우 다음 명령을 실행합니다.

         ```
         echo 'alias python="python2"' >> ~/.bash_profile
         ```

      1. 이후 셸 프로필에 [source](https://en.wikipedia.org/wiki/Source_(command))를 지정합니다. 예를 들어 `.bash_profile`을 사용 중인 경우 다음 명령을 실행합니다.

         ```
         source ~/.bash_profile
         ```

         **python** 명령을 호출하면 필수 OpenSSL 버전이 포함된 Python 실행 파일(예: `python2`)이 실행됩니다.

      1. 다음 명령을 실행합니다.

         ```
         python
          import ssl
          print ssl.OPENSSL_VERSION
         ```

         OpenSSL 버전은 1.0.1 이상이어야 합니다.

      1. Python 셸을 종료하려면 다음 명령을 실행합니다.

         ```
          exit()
         ```

------

   1. <a name="step-c-install-python-sdk"></a>다음 명령을 사용하여 Python용 AWS IoT Device SDK 을 설치합니다.

      ```
      cd ~
      git clone https://github.com/aws/aws-iot-device-sdk-python.git
      cd aws-iot-device-sdk-python
      sudo python setup.py install
      ```

------
#### [ UNIX-like system ]

   1. 터미널 창에서 다음 명령을 실행합니다.

      ```
      python --version
      ```

      버전 정보가 반환되지 않았거나 버전 번호가 2.7 미만(Python 2) 또는 3.3 미만(Python 3)이면 [Python 다운로드](https://wiki.python.org/moin/BeginnersGuide/Download)의 지침에 따라 Python 2.7 이상 또는 Python 3.3 이상을 설치합니다. 자세한 내용은 [Unix 플랫폼에서 Python 사용](https://docs.python.org/3.6/using/unix.html)을 참조하십시오.

   1. 터미널에서 다음 명령을 실행하여 OpenSSL 버전을 확인합니다.

      ```
      python
      >>>import ssl
      >>>print ssl.OPENSSL_VERSION
      ```

      OpenSSL 버전 값을 기록해 둡니다.
**참고**  
Python 3를 실행 중인 경우 **print(ssl.OPENSSL\$1VERSION)**를 사용합니다.

      Python 셸을 닫으려면 다음 명령을 실행합니다.

      ```
       exit()
      ```

      OpenSSL 버전이 1.0.1 이상이면 다음 단계로 건너뜁니다. 그렇지 않으면 해당 명령을 실행하여 배포용 OpenSSL을 업데이트합니다(예: `sudo yum update openssl`, `sudo apt-get update` 등).

      다음 명령을 실행하여 OpenSSL 버전이 1.0.1 이상인지 확인합니다.

      ```
      python
      >>>import ssl
      >>>print ssl.OPENSSL_VERSION
      >>>exit()
      ```

   1. 다음 명령을 사용하여 Python용 AWS IoT Device SDK 을 설치합니다.

      ```
      cd ~
      git clone https://github.com/aws/aws-iot-device-sdk-python.git
      cd aws-iot-device-sdk-python
      sudo python setup.py install
      ```

------

1. Python AWS IoT Device SDK 용를 설치한 후 `samples` 폴더로 이동하여 `greengrass` 폴더를 엽니다.

   이 자습서에서는 [AWS IoT Greengrass 그룹에 클라이언트 디바이스 생성](device-group.md)에서 다운로드한 인증서와 키를 사용하는 `basicDiscovery.py` 샘플 함수를 복사합니다.

1. HelloWorld\$1Publisher 및 HelloWorld\$1Subscriber 장치 인증서 및 키가 포함된 폴더에 `basicDiscovery.py`를 복사합니다.

# 통신 테스트
<a name="test-comms"></a>

1. <a name="ping-device"></a>컴퓨터와 AWS IoT Greengrass 코어 디바이스가 동일한 네트워크를 사용하여 인터넷에 연결되어 있는지 확인합니다.

   1.  AWS IoT Greengrass 코어 디바이스에서 다음 명령을 실행하여 IP 주소를 찾습니다.

      ```
      hostname -I
      ```

   1. 컴퓨터에서 코어의 IP 주소를 사용하여 다음 명령을 실행합니다. Ctrl \$1 C를 사용하여 **ping** 명령을 중지할 수 있습니다.

      ```
      ping IP-address
      ```

      다음과 유사한 출력은 컴퓨터와 AWS IoT Greengrass 코어 디바이스 간의 통신 성공(0% 패킷 손실)을 나타냅니다.  
![\[성공적인 ping 명령 출력\]](http://docs.aws.amazon.com/ko_kr/greengrass/v1/developerguide/images/gg-get-started-075.5.png)
**참고**  
실행 중인 EC2 인스턴스를 ping할 수 없는 경우 인스턴스의 인바운드 보안 그룹 규칙이 [Echo 요청](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/security-group-rules-reference.html#sg-rules-ping) 메시지에 대한 ICMP 트래픽을 허용하는지 AWS IoT Greengrass확인합니다. 자세한 내용은 *Amazon EC2 사용 설명서*의 [보안 그룹에 규칙 추가](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/using-network-security.html#adding-security-group-rule)를 참조하세요.  
Windows 호스트 컴퓨터에 어드밴스 보안 앱을 갖춘 Windows 방화벽에서 인바운드 에코 요청(예: **File and Printer Sharing(파일 및 프린터 공유)(에코 요청 - ICMPv4-In)**)을 허용하는 인바운드 규칙을 활성화하거나 생성해야 할 수도 있습니다.

1.  AWS IoT 엔드포인트를 가져옵니다.

   1. <a name="iot-settings"></a>[AWS IoT 콘솔](https://console.aws.amazon.com/iot/)의 탐색 창에서 **설정**을 선택합니다.

   1. <a name="iot-settings-endpoint"></a>**장치 데이터 엔드포인트**에서 **엔드포인트**의 값을 기록해 둡니다. 이 값을 사용하여 다음 단계의 명령에서 *AWS\$1IOT\$1ENDPOINT* 자리 표시자를 바꿉니다.
**참고**  
[엔드포인트는 해당 인증서 유형](gg-core.md#certificate-endpoints)과 일치해야 합니다.

1. 컴퓨터( AWS IoT Greengrass 코어 디바이스 아님)에서 두 개의 [명령줄](https://en.wikipedia.org/wiki/Command-line_interface)(터미널 또는 명령 프롬프트) 창을 엽니다. 창 하나는 HelloWorld\$1Publisher 클라이언트 장치를 나타내고, 다른 창 하나는 HelloWorld\$1Subscriber 클라이언트 장치를 나타냅니다.

   실행 시는 엔드포인트에서 AWS IoT Greengrass 코어의 위치에 대한 정보를 수집하려고 `basicDiscovery.py` 시도합니다. 이 정보는 클라이언트 장치가 코어를 발견하고 성공적으로 연결한 후 저장됩니다. 이 경우 향후 메시징 및 작업이 로컬에서 실행될 수 있습니다(인터넷 연결 필요 없음).
**참고**  
MQTT 연결에 사용되는 클라이언트 ID는 클라이언트 장치의 사물 이름과 일치해야 합니다. `basicDiscovery.py` 스크립트는 MQTT 연결의 클라이언트 ID를 스크립트 실행 시 지정한 사물 이름으로 설정합니다.  
`basicDiscovery.py` 파일이 포함된 폴더에서 다음 명령을 실행하면 상세한 스크립트 사용 정보를 알 수 있습니다.  

   ```
   python basicDiscovery.py --help
   ```

1. HelloWorld\$1Publisher 클라이언트 장치 창에서 다음 명령을 실행합니다.
   + *path-to-certs-folder*를 인증서, 키 및 `basicDiscovery.py`를 포함하는 폴더의 경로로 바꿉니다.
   + *AWS\$1IOT\$1ENDPOINT*를 엔드포인트로 바꿉니다.
   + 두 개의 *publisherCertId* 인스턴스를 HelloWorld\$1Publisher 클라이언트 장치의 파일 이름에 인증서 ID로 바꿉니다.

   ```
   cd path-to-certs-folder
   python basicDiscovery.py --endpoint AWS_IOT_ENDPOINT --rootCA AmazonRootCA1.pem --cert publisherCertId-certificate.pem.crt --key publisherCertId-private.pem.key --thingName HelloWorld_Publisher --topic 'hello/world/pubsub' --mode publish --message 'Hello, World! Sent from HelloWorld_Publisher'
   ```

   `Published topic 'hello/world/pubsub': {"message": "Hello, World! Sent from HelloWorld_Publisher", "sequence": 1}`와 같은 항목을 포함하는 다음과 비슷한 출력 화면이 보여야 합니다.
**참고**  
스크립트가 `error: unrecognized arguments` 메시지를 반환하는 경우 `--topic` 및 `--message` 파라미터의 작은따옴표를 큰따옴표로 변경하고 명령을 다시 실행합니다.  
연결 문제를 해결하려면 [수동 IP 감지](#corp-network-manual-detection)를 사용합니다.  
![\[게시자 출력 스크린샷\]](http://docs.aws.amazon.com/ko_kr/greengrass/v1/developerguide/images/gg-get-started-076.png)

1. HelloWorld\$1Subscriber 클라이언트 장치 창에서 다음 명령을 실행합니다.
   + *path-to-certs-folder*를 인증서, 키 및 `basicDiscovery.py`를 포함하는 폴더의 경로로 바꿉니다.
   + *AWS\$1IOT\$1ENDPOINT*를 엔드포인트로 바꿉니다.
   + 두 개의 *subscriberCertId* 인스턴스를 HelloWorld\$1Subscriber 클라이언트 장치의 파일 이름에 인증서 ID로 바꿉니다.

   ```
   cd path-to-certs-folder
   python basicDiscovery.py --endpoint AWS_IOT_ENDPOINT --rootCA AmazonRootCA1.pem --cert subscriberCertId-certificate.pem.crt --key subscriberCertId-private.pem.key --thingName HelloWorld_Subscriber --topic 'hello/world/pubsub' --mode subscribe
   ```

   `Received message on topic hello/world/pubsub: {"message": "Hello, World! Sent from HelloWorld_Publisher", "sequence": 1}`와 같은 항목을 포함하는 다음 출력 화면이 보여야 합니다.  
![\[구독자 출력 스크린샷\]](http://docs.aws.amazon.com/ko_kr/greengrass/v1/developerguide/images/gg-get-started-077.png)

HelloWorld\$1Subscriber 창에 메시지가 누적되지 않도록 하려면 HelloWorld\$1Publisher 창을 닫습니다.

기업 네트워크에 대한 테스트는 코어 연결을 방해할 수 있습니다. 차선책으로서 엔드포인트를 수동으로 입력할 수 있습니다. 이렇게 `basicDiscovery.py` 하면 스크립트가 AWS IoT Greengrass 코어 디바이스의 올바른 IP 주소에 연결됩니다.

**수동으로 엔드포인트를 입력하려면**

1. <a name="console-gg-groups"></a> AWS IoT 콘솔 탐색 창의 **관리**에서 **Greengrass 디바이스**를 확장한 다음 **그룹(V1)을** 선택합니다.

1. **Greengrass 그룹**에서 사용자 그룹을 선택합니다.

1. MQTT 브로커 엔드포인트를 수동으로 관리하도록 코어를 구성하십시오. 다음을 수행합니다.

   1. 그룹 구성 페이지에서 **Lambda 함수** 탭을 선택합니다.

   1. **시스템 Lambda 함수**에서 **IP 감지기**를 선택한 다음 **편집**을 선택합니다.

   1. **IP 감지기 설정 편집**에서 **MQTT 브로커 엔드포인트 수동 관리**를 선택한 다음 **저장**을 선택합니다.

1. 코어의 MQTT 브로커 엔드포인트를 입력합니다. 다음을 수행합니다.

   1. **개요**에서 **Greengrass 코어**를 선택합니다.

   1. **MQTT 브로커 엔드포인트**에서 **엔드포인트 관리**를 선택합니다.

   1. **엔드포인트 추가**를 선택하고 엔드포인트 값이 하나뿐인지 확인합니다. 이 값은 AWS IoT Greengrass 코어 디바이스의 포트 8883에 대한 IP 주소 엔드포인트여야 합니다(예: `192.168.1.4`).

   1. **업데이트**를 선택합니다.