기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.
구성 요소는 AWS IoT Greengrass 코어 디바이스에서 실행되는 소프트웨어 모듈입니다. 구성 요소를 사용하면 복잡한 애플리케이션을 여기저기 Greengrass 코어 디바이스에서 재사용할 수 있는 불연속 빌딩 블록으로 생성하고 관리할 수 있습니다. 모든 구성 요소는 레시피와 아티팩트 로 구성되어 있습니다.
-
레시피
모든 구성 요소에는 메타데이터가 정의되는 레시피 파일이 있습니다. 레시피에서는 구성 요소의 구성 파라미터, 구성 요소 종속성, 수명 주기 및 플랫폼 호환성도 지정됩니다. 구성 요소 수명 주기에서는 구성 요소 설치, 실행 및 종료 명령이 정의됩니다. 자세한 내용은 AWS IoT Greengrass 구성 요소 레시피 참조 단원을 참조하십시오.
-
아티팩트
구성 요소의 구성 요소 바이너리인 아티팩트는 수량 제한이 없습니다. 아티팩트에는 구성 요소에서 사용되는 스크립트, 컴파일된 코드, 정적 리소스 및 기타 파일이 포함될 수 있습니다. 구성 요소에서는 구성 요소 종속성의 아티팩트도 사용될 수도 있습니다.
를 사용하면 GreengrassCLI를 사용하여 AWS 클라우드와의 상호 작용 없이 Greengrass 코어 디바이스에서 로컬로 구성 요소를 개발하고 테스트 AWS IoT Greengrass할 수 있습니다. 로컬 구성 요소를 완료하면 구성 요소 레시피와 아티팩트를 사용하여 AWS 클라우드의 AWS IoT Greengrass 서비스에서 해당 구성 요소를 생성한 다음 모든 Greengrass 코어 디바이스에 배포할 수 있습니다. 구성 요소에 대한 자세한 내용은 AWS IoT Greengrass 구성 요소 개발를 참조하세요.
이 단원에서는 코어 디바이스에서 로컬로 기본 Hello World 구성 요소를 생성하고 실행하는 방법을 알아봅니다.
디바이스에서 Hello World 구성 요소를 개발하는 방법
-
레시피 및 아티팩트의 하위 폴더로 구성 요소의 폴더를 생성합니다. Greengrass 코어 디바이스에서 다음 명령을 실행하여 이러한 폴더를 생성하고 구성 요소 폴더로 변경합니다.
~/greengrassv2
또는를 로컬 개발에 사용할 폴더의 경로%USERPROFILE%\greengrassv2
로 바꿉니다.mkdir -p
~/greengrassv2
/{recipes,artifacts} cd~/greengrassv2
-
텍스트 편집기를 사용하여 구성 요소의 메타데이터, 파라미터, 종속성, 수명 주기 및 플랫폼 기능이 정의되는 레시피 파일을 생성합니다. 레시피에 반영되는 구성 요소 버전을 식별할 수 있도록 레시피 파일 이름에 구성 요소 버전을 포함합니다. 레시피에 대해 YAML 또는 JSON 형식을 선택할 수 있습니다.
예를 들어 Linux 기반 시스템에서 다음 명령을 실행하여 GNU 나노를 사용하여 파일을 생성할 수 있습니다.
nano recipes/
com.example.HelloWorld
-1.0.0
.json참고
AWS IoT Greengrass 는 구성 요소에 의미 체계 버전을 사용합니다. 시맨틱 버전은 메이저.마이너.패치 번호 시스템을 따릅니다. 예를 들어
1.0.0
버전은 구성 요소의 첫 번째 주요 릴리스를 나타냅니다. 자세한 내용은 의미 체계 버전 사양을 참조하세요. -
파일에 다음 레시피를 붙여 넣습니다.
{ "RecipeFormatVersion": "2020-01-25", "ComponentName": "com.example.HelloWorld", "ComponentVersion": "1.0.0", "ComponentDescription": "My first AWS IoT Greengrass component.", "ComponentPublisher": "Amazon", "ComponentConfiguration": { "DefaultConfiguration": { "Message": "world" } }, "Manifests": [ { "Platform": { "os": "linux" }, "Lifecycle": { "Run": "python3 -u {artifacts:path}/hello_world.py {configuration:/Message}" } }, { "Platform": { "os": "windows" }, "Lifecycle": { "Run": "py -3 -u {artifacts:path}/hello_world.py {configuration:/Message}" } } ] }
이 레시피의
ComponentConfiguration
단원에서는 기본값이world
인 파라미터(Message
)가 정의합니다.Manifests
단원에서는 플랫폼에 대한 수명 주기 지침과 아티팩트 세트인 매니페스트가 정의합니다. 예를 들어 여러 매니페스트를 정의하여 다양한 플랫폼에 상이한 설치 지침을 지정할 수 있습니다. 매니페스트의Lifecycle
단원에서는Message
파라미터 값을 인수로 사용하여 Hello World 스크립트가 실행되도록 Greengrass 코어 디바이스에 지시합니다. -
다음 명령을 실행하여 구성 요소 아티팩트의 폴더를 생성합니다.
mkdir -p artifacts/com.example.HelloWorld/1.0.0
중요
아티팩트 폴더 경로에는 다음 형식을 사용해야 합니다. 레시피에서 지정하는 구성 요소 이름과 버전을 포함합니다.
artifacts/
componentName
/componentVersion
/ -
텍스트 편집기를 사용하여 Hello World 구성 요소에 대한 Python 스크립트 아티팩트 파일을 생성합니다.
예를 들어 Linux 기반 시스템에서 다음 명령을 실행하여 GNU 나노를 사용하여 파일을 생성할 수 있습니다.
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 코어에 구성 요소를 배포합니다.
또는를 AWS IoT Greengrass V2 루트 폴더/greengrass/v2
C:\greengrass\v2
로 바꾸고~/greengrassv2
또는를 구성 요소 개발 폴더%USERPROFILE%\greengrassv2
로 바꿉니다.sudo
/bin/greengrass-cli deployment create \ --recipeDir/greengrass/v2
~/greengrassv2
/recipes \ --artifactDir~/greengrassv2
/artifacts \ --merge "com.example.HelloWorld=1.0.0"이 명령에서는
recipes
의 레시피가 사용되고artifacts
의 Python 스크립트가 사용되는 구성 요소가 추가됩니다.--merge
옵션에서는 지정하는 구성 요소와 버전이 추가 또는 업데이트됩니다. -
AWS IoT Greengrass 코어 소프트웨어는 구성 요소 프로세스에서
logs
폴더에 있는 로그 파일로 stdout을 저장합니다. 다음 명령을 실행하여 Hello World 구성 요소가 실행되고 메시지가 인쇄되는지 확인합니다.sudo tail -f
/logs/com.example.HelloWorld.log/greengrass/v2
다음 예제와 비슷한 메시지가 표시되어야 합니다.
Hello, world!
-
로컬 구성 요소를 수정하여 코드를 반복하고 테스트합니다. 텍스트 편집기
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)
-
다음 명령을 실행하여 변경 사항으로 구성 요소를 업데이트합니다.
sudo
/bin/greengrass-cli deployment create \ --recipeDir/greengrass/v2
~/greengrassv2
/recipes \ --artifactDir~/greengrassv2
/artifacts \ --merge "com.example.HelloWorld=1.0.0"이 명령에서는 최신 Hello World 아티팩트로
com.example.HelloWorld
구성 요소가 업데이트됩니다. -
다음 명령을 실행하여 구성 요소를 다시 시작합니다. 구성 요소를 다시 시작하면 최신 변경 사항이 코어 디바이스에서 사용됩니다.
sudo
/bin/greengrass-cli component restart \ --names "com.example.HelloWorld"/greengrass/v2
-
로그를 다시 확인하여 Hello World 구성 요소에서 새 메시지가 인쇄되는지 확인합니다.
sudo tail -f
/logs/com.example.HelloWorld.log/greengrass/v2
다음 예제와 비슷한 메시지가 표시되어야 합니다.
Hello, world! Greetings from your first Greengrass component.
-
구성 요소의 구성 파라미터를 업데이트하여 상이한 구성을 테스트할 수 있습니다. 구성 요소를 배포할 때 코어 디바이스에서 구성 요소의 구성이 수정되는 방법이 정의되는 구성 업데이트 를 지정할 수 있습니다. 기본값으로 재설정할 구성 값과 코어 디바이스에 병합할 새 구성 값을 지정할 수 있습니다. 자세한 내용은 구성 요소 구성 업데이트 단원을 참조하십시오.
다음을 수행합니다.
-
텍스트 편집기를 사용하여 구성 업데이트가 포함되는
hello-world-config-update.json
이라는 파일을 생성합니다.예를 들어 Linux 기반 시스템에서 다음 명령을 실행하여 GNU 나노를 사용하여 파일을 생성할 수 있습니다.
nano hello-world-config-update.json
-
다음 JSON 객체를 복사하여 파일에 붙여 넣습니다. 이 JSON 객체는 값을
Message
파라미터에 병합friend
하여 값을 업데이트하는 구성 업데이트를 정의합니다. 이 구성 업데이트에서는 재설정할 값이 지정되지 않습니다. 병합 업데이트를 통해 기존 값이 대체되므로Message
파라미터를 재설정할 필요가 없습니다.{ "com.example.HelloWorld": { "MERGE": { "Message": "friend" } } }
-
다음 명령을 실행하여 구성 업데이트를 Hello World 구성 요소에 배포합니다.
sudo
/bin/greengrass-cli deployment create \ --merge "com.example.HelloWorld=1.0.0" \ --update-config hello-world-config-update.json/greengrass/v2
-
로그를 다시 확인하여 Hello World 구성 요소에서 새 메시지가 출력되는지 확인합니다.
sudo tail -f
/logs/com.example.HelloWorld.log/greengrass/v2
다음 예제와 비슷한 메시지가 표시되어야 합니다.
Hello, friend! Greetings from your first Greengrass component.
-
-
구성 요소는 테스트를 마치면 코어 디바이스에서 제거합니다. 다음 명령을 실행합니다.
sudo
/bin/greengrass-cli deployment create --remove="com.example.HelloWorld"/greengrass/v2
중요
구성 요소를 AWS IoT Greengrass에 업로드한 후 코어 디바이스에 다시 배포하려면 이 단계가 필요합니다. 그렇지 않으면 로컬 배포에서 다른 구성 요소 버전이 지정되므로 버전 호환성 오류로 배포가 실패합니다.
다음 명령을 실행하고 디바이스의
com.example.HelloWorld
구성 요소 목록에 구성 요소가 나타나지 않는지 확인합니다.sudo
/bin/greengrass-cli component list/greengrass/v2
Hello World 구성 요소가 완료되었으며 이제 AWS IoT Greengrass 클라우드 서비스에 업로드할 수 있습니다. 그런 다음에 구성 요소를 다른 코어 디바이스에 배포할 수 있습니다.