그린그래스 개발 키트 CLI 구성 파일 - AWS IoT Greengrass

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

그린그래스 개발 키트 CLI 구성 파일

AWS IoT Greengrass개발 키트 명령줄 인터페이스 (GDK CLI) 는 gdk-config.json 이름이 지정된 구성 파일을 읽고 구성 요소를 빌드하고 게시합니다. 이 구성 파일은 구성 요소 리포지토리의 루트에 있어야 합니다. GDK CLI init 명령을 사용하여 이 구성 파일로 구성 요소 저장소를 초기화할 수 있습니다.

GDK CLI 구성 파일 형식

구성 요소에 대한 GDK CLI 구성 파일을 정의할 때 JSON 형식으로 다음 정보를 지정합니다.

gdk_version

이 구성 요소와 호환되는 GDK CLI의 최소 버전입니다. 이 값은 릴리스의 GDK CLI 버전 중 하나여야 합니다.

component

이 구성 요소의 구성.

componentName
author

구성 요소의 작성자 또는 게시자.

version

구성 요소의 버전입니다. 다음 중 하나를 지정하십시오.

  • NEXT_PATCH— 이 옵션을 선택하면 구성 요소를 게시할 때 GDK CLI에서 버전을 설정합니다. GDK CLI는 서비스를 AWS IoT Greengrass 쿼리하여 가장 최근에 게시된 구성 요소 버전을 식별합니다. 그런 다음 버전을 해당 버전 이후의 다음 패치 버전으로 설정합니다. 이전에 구성 요소를 게시한 적이 없는 경우 GDK CLI는 버전을 사용합니다. 1.0.0

    이 옵션을 선택하면 Greengrass CLI를 사용하여 Core 소프트웨어를 실행하는 로컬 개발 컴퓨터에 구성 요소를 로컬로 배포하고 테스트할 수 없습니다. AWS IoT Greengrass 로컬 배포를 활성화하려면 시맨틱 버전을 대신 지정해야 합니다.

  • 시맨틱 버전 (예: 1.0.0 시맨틱 버전은 메이저를 사용합니다. 마이너. 패치 넘버링 시스템. 자세한 내용은 시맨틱 버전 사양을 참조하십시오.

    구성 요소를 배포하고 테스트하려는 Greengrass 코어 장치에서 구성 요소를 개발하는 경우 이 옵션을 선택합니다. Greengrass CLI로 로컬 배포를 생성하려면 특정 버전으로 구성 요소를 빌드해야 합니다.

build

이 컴포넌트의 소스를 아티팩트로 빌드하는 데 사용할 구성입니다. 이 객체에는 다음 정보가 포함되어 있어야 합니다.

build_system

사용할 빌드 시스템. 다음 옵션 중 하나를 선택합니다.

  • zip— 구성 요소의 폴더를 ZIP 파일로 패키징하여 구성 요소의 유일한 아티팩트로 정의합니다. 다음 유형의 구성 요소에 대해 이 옵션을 선택합니다.

    • Python 또는 JavaScript 같은 해석된 프로그래밍 언어를 사용하는 컴포넌트

    • 코드가 아닌 파일을 패키징하는 구성 요소 (예: 기계 학습 모델 또는 기타 리소스).

    GDK CLI는 구성 요소 폴더를 구성 요소 폴더와 동일한 이름의 zip 파일로 압축합니다. 예를 들어 구성 요소 폴더 이름이 인 경우 GDK CLI는 HelloWorld 라는 zip 파일을 생성합니다. HelloWorld.zip

    참고

    Windows 디바이스에서 GDK CLI 버전 1.0.0을 사용하는 경우 구성 요소 폴더 및 zip 파일 이름에는 소문자만 포함되어야 합니다.

    GDK CLI는 구성 요소 폴더를 zip 파일로 압축할 때 다음 파일을 건너뛰습니다.

    • gdk-config.json 파일

    • 레시피 파일 (또는) recipe.json recipe.yaml

    • 빌드 폴더 (예: greengrass-build

  • mavenmvn clean package 명령을 실행하여 구성 요소 소스를 아티팩트에 빌드합니다. Java 구성 요소와 같이 Maven을 사용하는 구성 요소에 대해 이 옵션을 선택합니다.

    Windows 디바이스에서 이 기능은 GDK CLI v1.1.0 이상에서 사용할 수 있습니다.

  • gradlegradle build 명령을 실행하여 구성 요소의 소스를 아티팩트로 빌드합니다. Gradle을 사용하는 구성 요소에 대해 이 옵션을 선택합니다. 이 기능은 GDK CLI v1.1.0 이상에서 사용할 수 있습니다.

    gradle빌드 시스템은 Kotlin DSL을 빌드 파일로 지원합니다. 이 기능은 GDK CLI v1.2.0 이상에서 사용할 수 있습니다.

  • gradlewgradlew 명령을 실행하여 구성 요소 소스를 아티팩트로 빌드합니다. Gradle 래퍼를 사용하는 구성 요소에 대해 이 옵션을 선택합니다.

    이 기능은 GDK CLI v1.2.0 이상에서 사용할 수 있습니다.

  • custom— 사용자 지정 명령을 실행하여 구성 요소의 소스를 레시피와 아티팩트로 빌드합니다. custom_build_command파라미터에 사용자 지정 명령을 지정합니다.

custom_build_command

(선택 사항) 사용자 지정 빌드 시스템에서 실행할 사용자 지정 빌드 명령입니다. 를 지정하는 경우 이 파라미터를 custom 지정해야 build_system 합니다.

중요

이 명령은 구성 요소 폴더 내의 다음 폴더에 레시피와 아티팩트를 생성해야 합니다. GDK CLI는 구성 요소 빌드 명령을 실행할 때 이러한 폴더를 자동으로 생성합니다.

  • 레시피 폴더: greengrass-build/recipes

  • 아티팩트 폴더: greengrass-build/artifacts/componentName/componentVersion

    ComponentName을 구성 요소 이름으로 바꾸고 ComponentVersion을 구성 요소 버전 또는 로 바꿉니다. NEXT_PATCH

단일 문자열 또는 문자열 목록을 지정할 수 있습니다. 여기서 각 문자열은 명령의 한 단어입니다. 예를 들어 C++ 구성 요소에 대한 사용자 지정 빌드 명령을 실행하려면 cmake --build build --config Release 또는 ["cmake", "--build", "build", "--config", "Release"] 를 지정할 수 있습니다.

사용자 지정 빌드 시스템의 예를 보려면 aws.greengrass.labs.LocalWebServer community component GitHubon을 참조하십시오.

options

(선택 사항) 구성 요소 빌드 프로세스 중에 사용되는 추가 구성 옵션.

이 기능은 GDK CLI v1.2.0 이상에서 사용할 수 있습니다.

excludes

zip 파일을 빌드할 때 구성 요소 디렉터리에서 제외할 파일을 정의하는 글로브 패턴 목록입니다. 인 경우에만 유효합니다. build_system zip

참고

GDK CLI 버전 1.4.0 이하에서는 제외 목록의 항목과 일치하는 모든 파일이 구성 요소의 모든 하위 디렉토리에서 제외됩니다. GDK CLI 버전 1.5.0 이상에서 동일한 동작을 수행하려면 제외 목록의 **/ 기존 항목 앞에 추가하십시오. 예를 들어, *.txt 는 디렉터리에서만 텍스트 파일을 제외하고, 모든 디렉터리 및 하위 디렉터리에서 텍스트 파일을 제외합니다. **/*.txt

GDK CLI 버전 1.5.0 이상에서는 구성 요소 빌드 excludes 중에 GDK 구성 파일에 정의된 경우 경고가 표시될 수 있습니다. 이 경고를 비활성화하려면 환경 변수를 로 설정합니다. GDK_EXCLUDES_WARN_IGNORE true

GDK CLI는 항상 zip 파일에서 다음 파일을 제외합니다.

  • gdk-config.json 파일

  • 레시피 파일 (또는) recipe.json recipe.yaml

  • 빌드 폴더 (예: greengrass-build

다음 파일은 기본적으로 제외됩니다. 그러나 excludes 옵션을 사용하여 이러한 파일 중 제외할 파일을 제어할 수 있습니다.

  • 접두사 “test" () test* 로 시작하는 모든 폴더

  • 모든 숨김 파일

  • node_modules 폴더

excludes옵션을 지정하는 경우 GDK CLI는 옵션으로 설정한 파일만 제외합니다. excludes excludes옵션을 지정하지 않으면 GDK CLI는 앞서 언급한 기본 파일 및 폴더를 제외합니다.

zip_name

빌드 프로세스 중에 zip 아티팩트를 만들 때 사용할 zip 파일 이름입니다. 인 경우에만 유효합니다. build_system zip build_system가 비어 있는 경우 컴포넌트 이름이 zip 파일 이름으로 사용됩니다.

publish

이 구성 요소를 AWS IoT Greengrass 서비스에 게시하는 데 사용할 구성입니다.

GDK CLI v1.1.0 이상을 사용하는 경우 인수를 지정하여 GDK CLI가 구성 요소의 아티팩트를 업로드하는 S3 버킷을 지정할 --bucket 수 있습니다. 이 인수를 지정하지 않으면 GDK bucket-region-accountId CLI는 이름이 인 S3 버킷에 업로드됩니다. 여기서 버킷과 지역은 지정된 gdk-config.json 값이고 accountID는 ID입니다. AWS 계정 버킷이 없는 경우 GDK CLI에서 버킷을 생성합니다.

이 객체에는 다음 정보가 포함되어 있어야 합니다.

bucket

구성 요소 아티팩트를 호스팅하는 데 사용할 S3 버킷 이름.

region

GDK CLI가 이 구성 요소를 게시하는 AWS 리전 곳입니다.

GDK CLI v1.3.0 이상을 사용하는 경우 이 속성은 선택 사항입니다.

options

(선택 사항) 구성 요소 버전 생성 중에 사용되는 추가 구성 옵션.

이 기능은 GDK CLI v1.2.0 이상에서 사용할 수 있습니다.

file_upload_args

파일을 버킷에 업로드하는 동안 Amazon S3로 전송된 인수 (예: 메타데이터 및 암호화 메커니즘) 를 포함하는 JSON 구조입니다. 허용된 인수 목록은 Boto3 설명서의 S3Transfer클래스를 참조하십시오. .

test-e2e

(선택 사항) 구성 요소를 end-to-end 테스트하는 동안 사용할 구성입니다. 이 기능은 GDK CLI v1.3.0 이상에서 사용할 수 있습니다.

build

build_system— 사용할 빌드 시스템. 기본 옵션은 입니다maven. 다음 옵션 중 하나를 선택합니다.

  • mavenmvn package 명령을 실행하여 테스트 모듈을 빌드합니다. Maven을 사용하는 테스트 모듈을 빌드하려면 이 옵션을 선택하십시오.

  • gradlegradle build 명령을 실행하여 테스트 모듈을 빌드합니다. Gradle을 사용하는 테스트 모듈에 대해 이 옵션을 선택합니다.

gtf_version

(선택 사항) GTF로 GDK 프로젝트를 초기화할 때 테스트 모듈의 종속 항목으로 사용할 Greengrass end-to-end 테스트 프레임워크 (GTF) 버전입니다. 이 값은 릴리스의 GTF 버전 중 하나여야 합니다. 기본값은 GTF 버전 1.1.0입니다.

gtf_options

(선택 사항) 구성 요소 end-to-end 테스트 중에 사용되는 추가 구성 옵션.

다음 목록에는 GTF 버전 1.1.0에서 사용할 수 있는 옵션이 포함되어 있습니다.

  • additional-plugins— (선택 사항) 추가 오이 플러그인

  • aws-region— AWS 서비스의 특정 지역 엔드포인트를 대상으로 합니다. AWSSDK가 발견한 내용을 기본값으로 설정합니다.

  • credentials-path— 선택적 AWS 프로필 자격 증명 경로. 호스트 환경에서 검색된 자격 증명이 기본값입니다.

  • credentials-path-rotation— AWS 자격 증명의 선택적 순환 기간. 기본값은 15분 또는 PT15M 입니다.

  • csr-path— 디바이스 인증서를 생성하는 데 사용할 CSR의 경로입니다.

  • device-mode— 테스트 중인 대상 장치. 기본값은 로컬 장치입니다.

  • env-stage— Greengrass의 배포 환경을 대상으로 합니다. 기본값은 프로덕션입니다.

  • existing-device-cert-arn— Greengrass의 디바이스 인증서로 사용하려는 기존 인증서의 arn.

  • feature-path— 추가 기능 파일이 들어 있는 파일 또는 디렉터리. 기본값은 추가 기능 파일이 사용되지 않는 것입니다.

  • gg-cli-version— 그린그래스 CLI의 버전을 재정의합니다. 에 있는 값이 기본값입니다. ggc.version

  • gg-component-bucket— Greengrass 구성 요소가 들어 있는 기존 Amazon S3 버킷의 이름.

  • gg-component-overrides— Greengrass 컴포넌트 오버라이드 목록입니다.

  • gg-persist— 테스트 실행 후 유지되는 테스트 요소 목록. 기본 동작은 아무것도 지속하지 않는 것입니다. 허용되는 값은: aws.resourcesinstalled.software, 및 generated.files 입니다.

  • gg-runtime— 테스트가 테스트 리소스와 상호 작용하는 방식에 영향을 미치는 값 목록입니다. 이 값이 파라미터를 대체합니다. gg.persist 기본값이 비어 있으면 설치된 Greengrass 런타임을 포함하여 모든 테스트 리소스가 테스트 케이스별로 관리된다고 가정합니다. 허용되는 값은aws.resources, installed.software 및 입니다. generated.files

  • ggc-archive— 보관된 Greengrass 핵 구성 요소에 대한 경로.

  • ggc-install-root— Greengrass 핵 구성 요소를 설치하기 위한 디렉토리입니다. 기본값은 test.temp.path 및 테스트 실행 폴더입니다.

  • ggc-log-level— 테스트 실행을 위한 Greengrass 핵 로그 레벨을 설정합니다. 기본값은 “정보”입니다.

  • ggc-tes-rolename— AWS IoT Greengrass Core가 AWS 서비스에 액세스하기 위해 맡게 되는 IAM 역할입니다. 지정된 이름을 가진 역할이 존재하지 않는 경우 역할이 생성되고 기본 액세스 정책이 적용됩니다.

  • ggc-trusted-plugins— Greengrass에 추가해야 하는 신뢰할 수 있는 플러그인의 호스트 경로를 쉼표로 구분한 목록입니다. DUT 자체의 경로를 제공하려면 경로 앞에 'dut: '를 접두사로 붙입니다.

  • ggc-user-name— 그린그래스 핵에 대한 사용자:그룹 POSIX사용자 값입니다. 로그인되어 있는 현재 사용자 이름이 기본값입니다.

  • ggc-version— 실행 중인 Greengrass 핵 구성 요소의 버전을 재정의합니다. ggc.archive에 있는 값이 기본값입니다.

  • log-level— 테스트 실행의 로그 수준. 기본값은 “INFO”입니다.

  • parallel-config— 배치 인덱스 및 배치 수를 JSON 문자열로 설정합니다. 배치 인덱스의 기본값은 0이고 배치 수는 1입니다.

  • proxy-url— 이 URL을 통해 트래픽을 라우팅하도록 모든 테스트를 구성합니다.

  • tags— 기능 태그만 실행합니다. '&'와 교차할 수 있습니다.

  • test-id-prefix— AWS 리소스 이름 및 태그를 포함하여 모든 테스트 관련 리소스에 적용되는 공통 접두사입니다. 기본값은 “gg” 접두사입니다.

  • test-log-path— 전체 테스트 실행 결과를 포함할 디렉터리입니다. 기본값은 “TestResults”입니다.

  • test-results-json— 결과 Cucumber JSON 보고서가 디스크에 기록되어 생성되는지 여부를 결정하는 플래그입니다. 기본값은 true입니다.

  • test-results-log— 콘솔 출력이 생성되어 디스크에 기록되는지 여부를 결정하는 플래그입니다. 기본값은 false입니다.

  • test-results-xml— 결과 JUnit XML 보고서가 생성되어 디스크에 기록되는지 여부를 결정하는 플래그를 지정합니다. 기본값은 true입니다.

  • test-temp-path— 로컬 테스트 아티팩트를 생성하기 위한 디렉터리입니다. gg-testing 접두사가 붙은 임의의 임시 디렉토리가 기본값입니다.

  • timeout-multiplier— 모든 테스트 타임아웃에 멀티플라이어가 제공됩니다. 기본값은 1.0.

GDK CLI 구성 파일 예제

다음 GDK CLI 구성 파일 예제를 참조하여 Greengrass 구성 요소 환경을 구성하는 데 도움이 될 수 있습니다.

헬로 월드 (Python)

다음 GDK CLI 구성 파일은 Python 스크립트를 실행하는 Hello World 구성 요소를 지원합니다. 이 구성 파일은 zip 빌드 시스템을 사용하여 컴포넌트의 Python 스크립트를 GDK CLI가 아티팩트로 업로드하는 ZIP 파일로 패키징합니다.

{ "component": { "com.example.PythonHelloWorld": { "author": "Amazon", "version": "NEXT_PATCH", "build": { "build_system" : "zip", "options": { "excludes": [".*"] } }, "publish": { "bucket": "greengrass-component-artifacts", "region": "us-west-2", "options": { "file_upload_args": { "Metadata": { "some-key": "some-value" } } } } }, "test-e2e":{ "build":{ "build_system": "maven" }, "gtf_version": "1.1.0", "gtf_options": { "tags": "Sample" } }, "gdk_version": "1.6.1" } }

헬로 월드 (자바)

다음 GDK CLI 구성 파일은 자바 애플리케이션을 실행하는 Hello World 구성 요소를 지원합니다. 이 구성 파일은 maven 빌드 시스템을 사용하여 구성 요소의 Java 소스 코드를 GDK CLI가 아티팩트로 업로드하는 JAR 파일로 패키징합니다.

{ "component": { "com.example.JavaHelloWorld": { "author": "Amazon", "version": "NEXT_PATCH", "build": { "build_system" : "maven" }, "publish": { "bucket": "greengrass-component-artifacts", "region": "us-west-2", "options": { "file_upload_args": { "Metadata": { "some-key": "some-value" } } } } }, "test-e2e":{ "build":{ "build_system": "maven" }, "gtf_version": "1.1.0", "gtf_options": { "tags": "Sample" } }, "gdk_version": "1.6.1" } }

커뮤니티 구성 요소

Greengrass 소프트웨어 카탈로그의 여러 커뮤니티 구성 요소는 GDK CLI를 사용합니다. 이러한 구성 요소의 리포지토리에서 GDK CLI 구성 파일을 탐색할 수 있습니다.

커뮤니티 구성 요소의 GDK CLI 구성 파일을 보려면
  1. 다음 명령을 실행하여 GDK CLI를 사용하는 커뮤니티 구성 요소를 나열합니다.

    gdk component list --repository

    응답에는 GDK CLI를 사용하는 각 커뮤니티 구성 요소의 GitHub 저장소 이름이 나열됩니다. 각 리포지토리는 조직 내에 존재합니다. awslabs

    [2022-02-22 17:27:31] INFO - Listing all the available component repositories from Greengrass Software Catalog. [2022-02-22 17:27:31] INFO - Found '6' component repositories to display. 1. aws-greengrass-labs-database-influxdb 2. aws-greengrass-labs-telemetry-influxdbpublisher 3. aws-greengrass-labs-dashboard-grafana 4. aws-greengrass-labs-dashboard-influxdb-grafana 5. aws-greengrass-labs-local-web-server 6. aws-greengrass-labs-lookoutvision-gstreamer
  2. 다음 URL에서 커뮤니티 구성 요소의 GitHub 저장소를 엽니다. 이전 단계의 커뮤니티 구성 요소 community-component-name이름으로 바꾸십시오.

    https://github.com/awslabs/community-component-name