기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.
로컬 개발 컴퓨터 또는 Greengrass 코어 디바이스에서 사용자 지정 AWS IoT Greengrass 구성 요소를 개발할 수 있습니다.는 사전 정의된 구성 요소 템플릿 및 커뮤니티 구성 요소에서 구성 요소를 생성, 빌드 및 게시하는 데 도움이 되는 AWS IoT Greengrass 개발 키트 명령줄 인터페이스(GDK CLI)를 AWS IoT Greengrass 제공합니다. 기본 제공 쉘 명령을 실행하여 구성 요소를 생성, 빌드 및 게시할 수도 있습니다. 다음 옵션 중에서 선택하여 사용자 지정 Greengrass 구성 요소를 생성합니다.
-
Greengrass 개발 키트 사용 CLI
GDK CLI를 사용하여 로컬 개발 컴퓨터에서 구성 요소를 개발합니다. 는 구성 요소 소스 코드를 GDK CLI 빌드하여 레시피에 패키징하고 AWS IoT Greengrass 서비스에 프라이빗 구성 요소로 게시할 수 있는 아티팩트를 패키징합니다. 구성 요소를 게시할 URIs 때 구성 요소의 버전과 아티팩트를 자동으로 업데이트GDKCLI하도록를 구성할 수 있으므로 매번 레시피를 업데이트할 필요가 없습니다. 를 사용하여 구성 요소를 개발하려면 Greengrass 소프트웨어 카탈로그의 템플릿 또는 커뮤니티 구성 요소에서 시작할 GDK CLI수 있습니다. 자세한 내용은 AWS IoT Greengrass 개발 키트 명령줄 인터페이스 단원을 참조하십시오.
-
기본 제공 쉘 명령 실행
기본 제공 쉘 명령을 실행하여 로컬 개발 컴퓨터 또는 Greengrass 코어 디바이스에서 구성 요소를 개발할 수 있습니다. 쉘 명령을 사용하여 구성 요소 소스 코드를 아티팩트에 복사하거나 빌드합니다. 새 구성 요소 버전을 생성할 때마다 새 구성 요소 버전으로 레시피를 생성하거나 업데이트해야 합니다. 서비스에 구성 요소를 게시할 AWS IoT Greengrass 때 레시피의 각 구성 요소 아티팩트에 URI 대해를 업데이트해야 합니다.
구성 요소 생성(GDK CLI)
이 섹션의 지침에 따라 GDK를 사용하여 구성 요소를 생성하고 빌드합니다CLI.
Greengrass 구성 요소를 개발하려면(GDKCLI)
-
아직 설치하지 않았다면 개발 컴퓨터에 GDK CLI를 설치합니다. 자세한 내용은 AWS IoT Greengrass 개발 키트 명령줄 인터페이스 설치 또는 업데이트 단원을 참조하십시오.
-
구성 요소 폴더를 생성하려는 폴더로 변경합니다.
mkdir
~/greengrassv2
cd~/greengrassv2
-
다운로드할 구성 요소 템플릿 또는 커뮤니티 구성 요소를 선택합니다. 는 템플릿 또는 커뮤니티 구성 요소를 GDK CLI 다운로드하므로 기능 예제에서 시작할 수 있습니다. 구성 요소 목록 명령을 사용하여 사용 가능한 템플릿 또는 커뮤니티 구성 요소 목록을 검색합니다.
-
구성 요소 템플릿을 나열하려면 다음 명령을 실행합니다. 응답의 각 줄에 템플릿의 이름과 프로그래밍 언어가 포함되어 있습니다.
gdk component list --template
-
커뮤니티 구성 요소를 나열하려면 다음 명령을 실행합니다.
gdk component list --repository
-
-
가 템플릿 또는 커뮤니티 구성 요소를 GDK CLI 다운로드하는 구성 요소 폴더를 생성하고 변경합니다.
HelloWorld
를 구성 요소의 이름 또는이 구성 요소 폴더를 식별하는 데 도움이 되는 다른 이름으로 바꿉니다.mkdir
HelloWorld
cdHelloWorld
-
템플릿 또는 커뮤니티 구성 요소를 현재 폴더에 다운로드합니다. component init 명령을 사용합니다.
-
템플릿으로부터 구성 요소 폴더를 생성하려면 다음 명령을 실행합니다.
HelloWorld
를 템플릿 이름으로 바꾸고python
를 프로그래밍 언어 이름으로 바꿉니다.gdk component init --template
HelloWorld
--languagepython
-
커뮤니티 구성 요소로부터 구성 요소 폴더를 생성하려면 다음 명령을 실행합니다.
ComponentName
를 커뮤니티 구성 요소의 이름으로 바꿉니다.gdk component init --repository
ComponentName
참고
GDK CLI v1.0.0을 사용하는 경우 빈 폴더에서이 명령을 실행해야 합니다. 는 템플릿 또는 커뮤니티 구성 요소를 현재 폴더에 GDK CLI 다운로드합니다.
GDK CLI v1.1.0 이상을 사용하는 경우
--name
인수를 지정하여이 템플릿 또는 커뮤니티 구성 요소를 GDK CLI 다운로드하는 폴더를 지정할 수 있습니다. 이 인수를 사용하는 경우 존재하지 않는 폴더를 지정해야 합니다. 에서 폴더를 GDK CLI 생성합니다. 이 인수를 지정하지 않으면는 현재 폴더를 GDK CLI 사용하며,이 폴더는 비어 있어야 합니다. -
-
는 구성 요소 빌드 및 게시를
gdk-config.json
위해 라는 GDK CLI 구성 파일에서 GDK CLI 읽습니다. 이 구성 파일은 구성 요소 폴더의 루트에 있습니다. 이전 단계에서 이 파일이 자동으로 생성됩니다. 이 단계에서는 구성 요소에 대한 정보로gdk-config.json
을 업데이트합니다. 다음을 수행합니다.-
텍스트 편집기에서
gdk-config.json
을 엽니다. -
(선택 사항) 구성 요소의 이름을 변경합니다. 구성 요소 이름은
component
객체에 있는 키입니다. -
구성 요소의 작성자를 변경합니다.
-
(선택 사항) 구성 요소의 버전을 변경합니다. 다음 중 하나를 지정하세요.
-
NEXT_PATCH
-이 옵션을 선택하면 구성 요소를 게시할 때가 버전을 GDK CLI 설정합니다. 는 AWS IoT Greengrass 서비스를 GDK CLI 쿼리하여 구성 요소의 최신 게시 버전을 식별합니다. 그런 다음에 버전이 해당 버전 이후의 다음 패치 버전으로 설정됩니다. 이전에 구성 요소를 게시하지 않은 경우는 버전을 GDK CLI 사용합니다1.0.0
.이 옵션을 선택하면 GreengrassCLI를 사용하여 AWS IoT Greengrass 코어 소프트웨어를 실행하는 로컬 개발 컴퓨터에 구성 요소를 로컬로 배포하고 테스트할 수 없습니다. 로컬 배포를 활성화하려면 대신 의미 체계 버전을 지정해야 합니다.
-
의미 체계 버전(예:
1.0.0
). 의미 체계 버전에서는 major.minor.patch 번호 매기기 시스템이 사용됩니다. 자세한 내용은 의미 체계 버전 사양을 참조하세요. 구성 요소를 배포하고 테스트하려는 Greengrass 코어 디바이스에서 구성 요소를 개발하는 경우 이 옵션을 선택합니다. Greengrass CLI를 사용하여 로컬 배포를 생성하려면 특정 버전으로 구성 요소를 빌드해야 합니다.
-
-
(선택 사항) 구성 요소의 빌드 구성을 변경합니다. 빌드 구성은가 구성 요소의 소스를 아티팩트에 GDK CLI 빌드하는 방법을 정의합니다.
build_system
의 경우 다음 옵션 중에서 선택합니다.-
zip
- 구성 요소의 폴더를 ZIP 파일로 패키징하여 구성 요소의 유일한 아티팩트로 정의합니다. 다음 유형의 구성 요소에 대해 이 옵션을 선택합니다.-
Python 또는 같은 해석된 프로그래밍 언어를 사용하는 구성 요소 JavaScript.
-
기계 학습 모델 또는 기타 리소스와 같이 코드 이외의 파일이 패키징되는 구성 요소.
는 구성 요소의 폴더를 구성 요소 폴더와 이름이 동일한 zip 파일로 GDK CLI 압축합니다. 예를 들어 구성 요소 폴더의 이름이 인 경우
HelloWorld
는 라는 zip 파일을 GDK CLI 생성합니다HelloWorld.zip
.참고
Windows 디바이스에서 GDK CLI 버전 1.0.0을 사용하는 경우 구성 요소 폴더와 zip 파일 이름에는 소문자만 포함되어야 합니다.
가 구성 요소의 폴더를 GDK CLI zip 파일로 압축하면 다음 파일을 건너뜁니다.
-
gdk-config.json
파일 -
레시피 파일(
recipe.json
또는recipe.yaml
) -
빌드 폴더(예:
greengrass-build
)
-
-
maven
-mvn clean package
명령을 실행하여 구성 요소의 소스를 아티팩트에 빌드합니다. Java 구성 요소와 같이 Maven을 사용하는 구성 요소의 경우 이 옵션을 선택합니다. Windows 디바이스에서는 GDK CLI v1.1.0 이상에서이 기능을 사용할 수 있습니다.
-
gradle
-gradle build
명령을 실행하여 구성 요소의 소스를 아티팩트에 빌드합니다. Gradle을 사용하는 구성 요소의 경우 이 옵션을 선택합니다. 이 기능은 GDK CLI v1.1.0 이상에서 사용할 수 있습니다. gradle
빌드 시스템은 빌드 파일로 KotlinDSL을 지원합니다. 이 기능은 GDK CLI v1.2.0 이상에서 사용할 수 있습니다. -
gradlew
-gradlew
명령을 실행하여 구성 요소의 소스를 아티팩트에 빌드합니다. Gradle Wrapper를 사용하는 구성 요소의 경우 이 옵션을 선택합니다. 이 기능은 GDK CLI v1.2.0 이상에서 사용할 수 있습니다.
-
custom
- 사용자 지정 명령을 실행하여 구성 요소의 소스를 레시피 및 아티팩트에 빌드합니다.custom_build_command
파라미터에서 사용자 지정 명령을 지정합니다.
-
-
build_system
에custom
을 지정하는 경우build
객체에custom_build_command
를 추가합니다.custom_build_command
에서 각 문자열은 명령의 단어인 단일 문자열 또는 문자열 목록을 지정합니다. 예를 들어, C++ 구성 요소에 대한 사용자 지정 빌드 명령을 실행하려면["cmake", "--build", "build", "--config", "Release"]
를 지정할 수 있습니다. -
GDK CLI v1.1.0 이상을 사용하는 경우
--bucket
인수를 지정하여가 구성 요소의 아티팩트를 GDK CLI 업로드하는 S3 버킷을 지정할 수 있습니다. 이 인수를 지정하지 않으면는 이름이 이고
, 여기서bucket
-region
-accountId
bucket
및region
는에서 지정하는 값이고gdk-config.json
,accountId
는 AWS 계정 ID인 S3 버킷에 GDK CLI 업로드합니다. 는 버킷이 없는 경우 버킷을 GDK CLI 생성합니다.구성 요소의 게시 구성을 변경합니다. 다음을 수행합니다.
-
구성 요소 아티팩트를 호스팅하는 데 사용할 S3 버킷의 이름을 지정합니다.
-
가 구성 요소를 게시 AWS 리전 하는 GDK CLI를 지정합니다.
-
이 단계를 완료하면
gdk-config.json
파일이 다음 예제와 비슷하게 보일 수 있습니다.{ "component": { "com.example.PythonHelloWorld": { "author": "Amazon", "version": "NEXT_PATCH", "build": { "build_system" : "zip" }, "publish": { "bucket": "greengrass-component-artifacts", "region": "us-west-2" } } }, "gdk_version": "1.0.0" }
-
-
recipe.yaml
또는recipe.json
이라는 구성 요소 레시피 파일을 업데이트합니다. 다음을 수행합니다.-
zip
빌드 시스템이 사용되는 템플릿 또는 커뮤니티 구성 요소를 다운로드한 경우 zip 아티팩트 이름이 구성 요소 폴더의 이름과 일치하는지 확인합니다. 는 구성 요소 폴더를 구성 요소 폴더와 이름이 동일한 zip 파일로 GDK CLI 압축합니다. 레시피의 구성 요소 아티팩트 목록과 zip 아티팩트의 파일이 사용되는 수명 주기 스크립트에 zip 아티팩트 이름이 있습니다. zip 파일 이름이 구성 요소 폴더의 이름과 일치하도록Artifacts
및Lifecycle
정의를 업데이트합니다. 다음 부분 레시피 예제에서는Artifacts
및Lifecycle
정의의 zip 파일 이름이 강조 표시됩니다.{
...
"Manifests": [ { "Platform": { "os": "all" }, "Artifacts": [ { "URI": "s3://{COMPONENT_NAME}/{COMPONENT_VERSION}/HelloWorld.zip", "Unarchive": "ZIP" } ], "Lifecycle": { "Run": "python3 -u {artifacts:decompressedPath}/HelloWorld/main.py {configuration:/Message}" } } ] } -
(선택 사항) 구성 요소 설명, 기본 구성, 아티팩트, 수명 주기 스크립트 및 플랫폼 지원을 업데이트합니다. 자세한 내용은 AWS IoT Greengrass 구성 요소 레시피 참조 단원을 참조하십시오.
이 단계를 완료하면 레시피 파일이 다음 예제와 비슷하게 보일 수 있습니다.
{ "RecipeFormatVersion": "2020-01-25", "ComponentName": "{COMPONENT_NAME}", "ComponentVersion": "{COMPONENT_VERSION}", "ComponentDescription": "This is a simple Hello World component written in Python.", "ComponentPublisher": "{COMPONENT_AUTHOR}", "ComponentConfiguration": { "DefaultConfiguration": { "Message": "World" } }, "Manifests": [ { "Platform": { "os": "all" }, "Artifacts": [ { "URI": "s3://{COMPONENT_NAME}/{COMPONENT_VERSION}/HelloWorld.zip", "Unarchive": "ZIP" } ], "Lifecycle": { "Run": "python3 -u {artifacts:decompressedPath}/HelloWorld/main.py {configuration:/Message}" } } ] }
-
-
Greengrass 구성 요소를 개발하고 빌드합니다. 구성 요소 빌드 명령에서는 구성 요소 폴더의
greengrass-build
폴더에 레시피와 아티팩트가 생성됩니다. 다음 명령을 실행합니다.gdk component build
구성 요소를 테스트할 준비가 되면 GDKCLI를 사용하여 서비스에 게시 AWS IoT Greengrass 합니다. 그런 다음에 구성 요소를 다른 코어 디바이스에 배포할 수 있습니다. 자세한 내용은 코어 디바이스에 배포할 구성 요소를 게시하세요. 단원을 참조하십시오.
구성 요소 생성(쉘 명령)
이 단원의 지침에 따라 여러 구성 요소에 대한 소스 코드 및 아티팩트가 있는 레시피 및 아티팩트 폴더를 생성합니다.
Greengrass 구성 요소를 개발하려면(쉘 명령)
-
레시피 및 아티팩트의 하위 폴더로 구성 요소의 폴더를 생성합니다. 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
버전은 구성 요소의 첫 번째 주요 릴리스를 나타냅니다. 자세한 내용은 의미 체계 버전 사양을 참조하세요. -
구성 요소의 레시피를 정의합니다. 자세한 내용은 AWS IoT Greengrass 구성 요소 레시피 참조 단원을 참조하십시오.
레시피는 다음 Hello World 예제 레시피와 비슷하게 보일 수 있습니다.
{ "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}" } } ] }
이 레시피에서는 다음 예제 스크립트와 비슷하게 보일 수 있는 Hello World Python 스크립트가 실행됩니다.
import sys message = "Hello, %s!" % sys.argv[1] # Print the message to stdout, which Greengrass saves in a log file. print(message)
-
개발할 구성 요소 버전의 폴더를 생성합니다. 각 구성 요소 버전의 아티팩트를지 식별할 수 있도록 각 구성 요소 버전의 아티팩트에 별도의 폴더를 사용하는 것이 좋습니다. 다음 명령을 실행합니다.
mkdir -p artifacts/
com.example.HelloWorld
/1.0.0
중요
아티팩트 폴더 경로에는 다음 형식을 사용해야 합니다. 레시피에서 지정하는 구성 요소 이름과 버전을 포함합니다.
artifacts/
componentName
/componentVersion
/ -
이전 단계에서 생성한 폴더에서 구성 요소의 아티팩트를 생성합니다. 아티팩트에는 소프트웨어, 이미지, 구성 요소에서 사용되는 기타 바이너리가 포함될 수 있습니다.
구성 요소가 준비되면 구성 요소를 테스트합니다.