기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.
4단계: 기기의 구성 요소 개발 및 테스트
구성 요소는 AWS IoT Greengrass 코어 기기에서 실행되는 소프트웨어 모듈입니다. 구성 요소를 사용하면 복잡한 애플리케이션을 하나의 Greengrass 코어 장치에서 다른 Greengrass 코어 장치로 재사용할 수 있는 개별 구성 요소로 만들고 관리할 수 있습니다. 모든 구성 요소는 레시피와 아티팩트로 구성됩니다.
-
레시피
모든 구성 요소에는 메타데이터를 정의하는 레시피 파일이 포함되어 있습니다. 레시피는 또한 구성 요소의 구성 매개 변수, 구성 요소 종속성, 수명 주기 및 플랫폼 호환성을 지정합니다. 구성 요소 수명 주기는 구성 요소를 설치, 실행 및 종료하는 명령을 정의합니다. 자세한 설명은 AWS IoT Greengrass 컴포넌트 레시피 참조 섹션을 참조하세요.
-
아티팩트
구성 요소에는 구성 요소 바이너리인 아티팩트가 여러 개 있을 수 있습니다. 아티팩트에는 스크립트, 컴파일된 코드, 정적 리소스 및 구성 요소가 사용하는 기타 모든 파일이 포함될 수 있습니다. 구성 요소는 구성 요소 종속성의 아티팩트를 사용할 수도 있습니다.
를 사용하면 AWS IoT Greengrass Greengrass CLI를 사용하여 클라우드와 상호 작용하지 않고도 Greengrass 코어 디바이스에서 로컬로 구성 요소를 개발하고 테스트할 수 있습니다. AWS 로컬 구성 요소를 완성하면 구성 요소 레시피와 아티팩트를 사용하여 AWS 클라우드의 AWS IoT Greengrass 서비스에 해당 구성 요소를 만든 다음 모든 Greengrass 코어 장치에 배포할 수 있습니다. 구성 요소에 대한 자세한 내용은 AWS IoT Greengrass구성 요소 개발를 참조하세요.
이 섹션에서는 코어 디바이스에서 로컬로 기본 Hello World 구성 요소를 만들고 실행하는 방법을 알아봅니다.
기기에서 Hello World 구성 요소를 개발하려면
-
레시피와 아티팩트를 위한 하위 폴더가 있는 컴포넌트 폴더를 만드세요. Greengrass 코어 디바이스에서 다음 명령을 실행하여 이러한 폴더를 생성하고 구성 요소 폴더로 변경합니다.
~/greengrassv2
또는%USERPROFILE%\ greengrassv2를
로컬 개발에 사용할 폴더 경로로 바꾸십시오. -
텍스트 편집기를 사용하여 구성요소의 메타데이터, 매개변수, 종속성, 수명 주기 및 플랫폼 기능을 정의하는 레시피 파일을 만드십시오. 레시피 파일 이름에 구성 요소 버전을 포함하면 어떤 레시피가 어떤 구성 요소 버전을 반영하는지 식별할 수 있습니다. 레시피에 YAML 또는 JSON 형식을 선택할 수 있습니다.
예를 들어 Linux 기반 시스템에서는 다음 명령을 실행하여 GNU nano를 사용하여 파일을 생성할 수 있습니다.
참고
AWS IoT Greengrass 구성 요소에 시맨틱 버전을 사용합니다. 시맨틱 버전은 메이저.마이너.패치 번호 시스템을 따릅니다. 예를 들어 버전은 구성
1.0.0
요소의 첫 번째 주요 릴리스를 나타냅니다. 자세한 내용은 시맨틱 버전사양을 참조하십시오. -
다음 레시피를 파일에 붙여넣습니다.
이 레시피의
ComponentConfiguration
섹션에서는 기본값이Message
인 매개변수를 정의합니다.world
이Manifests
섹션에서는 플랫폼에 대한 라이프사이클 지침 및 아티팩트 집합인 매니페스트를 정의합니다. 예를 들어 여러 매니페스트를 정의하여 다양한 플랫폼에 대해 서로 다른 설치 지침을 지정할 수 있습니다. 매니페스트에서Lifecycle
섹션은 Greengrass 코어 디바이스에Message
매개변수 값을 인수로 사용하여 Hello World 스크립트를 실행하도록 지시합니다. -
다음 명령을 실행하여 구성 요소 아티팩트를 위한 폴더를 생성합니다.
중요
아티팩트 폴더 경로에는 다음 형식을 사용해야 합니다. 레시피에 지정한 구성 요소 이름과 버전을 포함하십시오.
artifacts/
componentName
/componentVersion
/ -
텍스트 편집기를 사용하여 Hello World 구성 요소에 대한 Python 스크립트 아티팩트 파일을 만드십시오.
예를 들어, Linux 기반 시스템에서는 다음 명령을 실행하여 GNU nano를 사용하여 파일을 생성할 수 있습니다.
nano artifacts/com.example.HelloWorld/1.0.0/hello_world.py
다음 Python 스크립트를 복사하여 파일에 붙여넣습니다.
import sys message = "Hello, %s!" % sys.argv[1] # Print the message to stdout, which Greengrass saves in a log file. print(message)
-
로컬 AWS IoT Greengrass CLI를 사용하여 Greengrass 코어 디바이스의 구성 요소를 관리합니다.
다음 명령을 실행하여 구성 요소를 코어에 배포합니다. AWS IoT Greengrass
또는/greengrass/v2
C:\greengrass\v2
를 AWS IoT Greengrass V2 루트 폴더로 바꾸고~/greengrassv2 또는 %USERPROFILE%\ greengrassv2를
구성 요소 개발
폴더로 바꾸십시오.이 명령은 에서
recipes
레시피를 사용하고 Python 스크립트를 사용하는 구성 요소를 추가합니다artifacts
.--merge
옵션은 지정한 구성 요소 및 버전을 추가하거나 업데이트합니다. -
AWS IoT Greengrass Core 소프트웨어는 구성 요소 프로세스의 stdout을 폴더의
logs
로그 파일에 저장합니다. 다음 명령을 실행하여 Hello World 구성 요소가 실행되고 메시지를 인쇄하는지 확인합니다.다음 예와 비슷한 메시지가 표시될 것입니다.
Hello, world!
참고
파일이 없는 경우 로컬 배포가 아직 완료되지 않았을 수 있습니다. 15초 이내에 파일이 존재하지 않으면 배포가 실패했을 수 있습니다. 예를 들어 레시피가 유효하지 않은 경우 이런 일이 발생할 수 있습니다. 다음 명령을 실행하여 AWS IoT Greengrass 코어 로그 파일을 확인합니다. 이 파일에는 Greengrass 코어 기기 배포 서비스의 로그가 포함되어 있습니다.
-
로컬 구성 요소를 수정하여 코드를 반복하고 테스트하십시오. 텍스트
hello_world.py
편집기에서 열고 4행에 다음 코드를 추가하여 AWS IoT Greengrass 코어가 기록하는 메시지를 편집합니다.message += " Greetings from your first Greengrass component."
이제
hello_world.py
스크립트에 다음과 같은 내용이 포함되어야 합니다.import sys message = "Hello, %s!" % sys.argv[1] message += " Greetings from your first Greengrass component." # Print the message to stdout, which Greengrass saves in a log file. print(message)
-
다음 명령을 실행하여 구성 요소를 변경 내용으로 업데이트합니다.
이 명령은 최신 Hello World 아티팩트로
com.example.HelloWorld
구성 요소를 업데이트합니다. -
다음 명령을 실행하여 구성 요소를 다시 시작합니다. 구성 요소를 다시 시작하면 코어 기기는 최신 변경 내용을 사용합니다.
-
로그를 다시 확인하여 Hello World 구성 요소가 새 메시지를 인쇄하는지 확인하십시오.
다음 예와 비슷한 메시지가 표시될 것입니다.
Hello, world! Greetings from your first Greengrass component.
-
구성 요소의 구성 매개변수를 업데이트하여 다양한 구성을 테스트할 수 있습니다. 구성 요소를 배포할 때 구성 업데이트를 지정할 수 있습니다. 구성 업데이트는 코어 장치에서 구성 요소의 구성을 수정하는 방법을 정의합니다. 기본값으로 재설정할 구성 값과 코어 장치에 병합할 새 구성 값을 지정할 수 있습니다. 자세한 설명은 구성 요소 구성 업데이트 섹션을 참조하세요.
다음을 따릅니다.
-
텍스트 편집기를 사용하여 구성 업데이트를 포함하는
hello-world-config-update.json
파일을 생성하십시오.예를 들어, Linux 기반 시스템에서는 다음 명령을 실행하여 GNU nano를 사용하여 파일을 생성할 수 있습니다.
nano hello-world-config-update.json
-
다음 JSON 객체를 복사하여 파일에 붙여넣습니다. 이 JSON 객체는 값을
Message
매개변수에friend
병합하여 값을 업데이트하는 구성 업데이트를 정의합니다. 이 구성 업데이트에서는 재설정할 값을 지정하지 않습니다. 병합 업데이트는 기존 값을 대체하므로Message
파라미터를 재설정할 필요가 없습니다.{ "com.example.HelloWorld": { "MERGE": { "Message": "friend" } } }
-
다음 명령을 실행하여 Hello World 구성 요소에 구성 업데이트를 배포합니다.
-
로그를 다시 확인하여 Hello World 구성 요소가 새 메시지를 출력하는지 확인합니다.
다음 예와 비슷한 메시지가 표시될 것입니다.
Hello, friend! Greetings from your first Greengrass component.
-
-
구성 요소 테스트를 마친 후 핵심 장치에서 해당 구성 요소를 제거합니다. 다음 명령을 실행합니다.
중요
구성 요소를 업로드한 후 코어 장치에 다시 배포하려면 이 단계가 필요합니다 AWS IoT Greengrass. 그렇지 않으면 로컬 배포에서 구성 요소의 다른 버전을 지정하기 때문에 버전 호환성 오류가 발생하여 배포가 실패합니다.
다음 명령어를 실행하고
com.example.HelloWorld
구성 요소가 장치의 구성 요소 목록에 나타나지 않는지 확인합니다.
Hello World 구성 요소가 완성되었으므로 이제 AWS IoT Greengrass 클라우드 서비스에 업로드할 수 있습니다. 그런 다음 Greengrass 코어 디바이스에 컴포넌트를 배포할 수 있습니다.