AWS IoT Greengrass 컴포넌트 레시피 참조 - AWS IoT Greengrass

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

AWS IoT Greengrass 컴포넌트 레시피 참조

구성 요소 레시피는 구성 요소의 세부 정보, 종속성, 아티팩트 및 수명 주기를 정의하는 파일입니다. 구성 요소 수명 주기는 예를 들어 구성 요소를 설치, 실행 및 종료하기 위해 실행할 명령을 지정합니다. AWS IoT Greengrass 코어는 레시피에 정의된 수명 주기를 사용하여 구성 요소를 설치하고 실행합니다. AWS IoT Greengrass 서비스는 레시피를 사용하여 구성 요소를 배포할 때 코어 장치에 배포할 종속성 및 아티팩트를 식별합니다.

레시피에서 구성 요소가 지원하는 각 플랫폼에 대한 고유한 종속성 및 수명 주기를 정의할 수 있습니다. 이 기능을 사용하여 요구 사항이 서로 다른 여러 플랫폼이 있는 장치에 구성 요소를 배포할 수 있습니다. 이 기능을 사용하여 구성 요소를 지원하지 않는 장치에 구성 요소를 설치하는 것을 AWS IoT Greengrass 방지할 수도 있습니다.

각 레시피에는 매니페스트 목록이 포함되어 있습니다. 각 매니페스트에는 플랫폼 요구 사항 집합과 플랫폼이 해당 요구 사항을 충족하는 핵심 장치에 사용할 수명 주기 및 아티팩트가 지정되어 있습니다. 핵심 기기는 기기가 충족하는 플랫폼 요구 사항이 있는 첫 번째 매니페스트를 사용합니다. 플랫폼 요구 사항이 없는 매니페스트를 지정하여 코어 디바이스에 맞게 지정하십시오.

매니페스트에 없는 글로벌 라이프사이클을 지정할 수도 있습니다. 글로벌 라이프사이클에서는 라이프사이클의 하위 섹션을 식별하는 선택 키를 사용할 수 있습니다. 그런 다음 매니페스트 내에서 이러한 선택 키를 지정하여 매니페스트의 수명 주기 외에도 글로벌 수명 주기의 해당 섹션을 사용할 수 있습니다. 코어 기기는 매니페스트가 라이프사이클을 정의하지 않는 경우에만 매니페스트의 선택 키를 사용합니다. 매니페스트의 선택 항목을 사용하여 all 선택 키 없이 글로벌 수명 주기의 섹션을 매칭할 수 있습니다.

AWS IoT Greengrass Core 소프트웨어는 코어 디바이스와 일치하는 매니페스트를 선택한 후 다음을 수행하여 사용할 수명 주기 단계를 식별합니다.

  • 선택한 매니페스트가 라이프사이클을 정의하면 코어 디바이스는 해당 라이프사이클을 사용합니다.

  • 선택한 매니페스트가 라이프사이클을 정의하지 않는 경우 코어 디바이스는 글로벌 라이프사이클을 사용합니다. 코어 기기는 다음을 수행하여 글로벌 라이프사이클에서 사용할 섹션을 식별합니다.

    • 매니페스트가 선택 키를 정의하는 경우 코어 기기는 매니페스트의 선택 키가 포함된 글로벌 수명 주기 섹션을 사용합니다.

    • 매니페스트가 선택 키를 정의하지 않는 경우 코어 기기는 글로벌 라이프사이클에서 선택 키가 없는 섹션을 사용합니다. 이 동작은 선택을 정의하는 매니페스트와 동일합니다. all

중요

구성 요소를 설치하려면 코어 기기가 매니페스트의 플랫폼 요구 사항을 하나 이상 충족해야 합니다. 코어 기기와 일치하는 매니페스트가 없는 경우 AWS IoT Greengrass Core 소프트웨어가 구성 요소를 설치하지 않아 배포가 실패합니다.

레시피는 JSON또는 YAML형식으로 정의할 수 있습니다. 레시피 예제 섹션에는 각 형식의 레시피가 포함되어 있습니다.

레시피 검증

Greengrass는 구성 요소 버전을 생성할 때 JSON 또는 YAML 구성 요소 레시피를 검증합니다. 이 레시피 검증은 잠재적 배포 문제를 방지하기 위해 사용자 JSON 또는 YAML 구성 요소 레시피에 일반적인 오류가 있는지 확인합니다. 검증은 레시피에 일반적인 오류 (예: 쉼표, 중괄호, 필드 누락) 가 있는지 확인하고 레시피가 제대로 구성되어 있는지 확인합니다.

레시피 검증 오류 메시지가 표시되면 레시피에 누락된 쉼표, 중괄호 또는 필드가 있는지 확인하세요. 레시피 형식을 보고 누락된 필드가 없는지 확인하세요.

레시피 형식

컴포넌트의 레시피를 정의할 때 레시피 문서에 다음 정보를 지정합니다. YAML및 JSON 형식의 레시피에도 동일한 구조가 적용됩니다.

RecipeFormatVersion

레시피의 템플릿 버전. 다음 옵션을 선택합니다.

  • 2020-01-25

ComponentName

이 레시피가 정의하는 구성 요소의 이름. 구성 요소 이름은 각 지역마다 고유해야 합니다. AWS 계정

  • 역방향 도메인 이름 형식을 사용하여 회사 내에서 이름이 충돌하지 않도록 하세요. 예를 들어, 회사에서 태양 에너지 프로젝트를 소유하고 example.com 있고 진행 중인 경우 Hello World 구성 요소의 이름을 지정할 수 있습니다. com.example.solar.HelloWorld 이렇게 하면 회사 내에서 구성 요소 이름이 충돌하는 것을 방지할 수 있습니다.

  • 구성 요소 이름에 aws.greengrass 접두사를 사용하지 마십시오. AWS IoT Greengrass 제공하는 공용 구성 요소에 이 접두사를 사용합니다. 공용 구성 요소와 같은 이름을 선택하면 해당 구성 요소가 해당 구성 요소를 대체합니다. 그런 다음 공용 구성 요소에 종속된 구성 요소를 배포할 때 공용 구성 요소 대신 구성 요소를 AWS IoT Greengrass 제공합니다. 이 기능을 사용하면 공용 구성 요소의 동작을 재정의할 수 있지만 공용 구성 요소를 재정의하지 않으려는 경우 다른 구성 요소가 손상될 수도 있습니다.

ComponentVersion

구성 요소의 버전입니다. 메이저, 마이너 및 패치 값의 최대값은 999999입니다.

참고

AWS IoT Greengrass 구성 요소에 시맨틱 버전을 사용합니다. 시맨틱 버전은 메이저.마이너.패치 번호 시스템을 따릅니다. 예를 들어 버전은 구성 1.0.0 요소의 첫 번째 주요 릴리스를 나타냅니다. 자세한 내용은 시맨틱 버전 사양을 참조하십시오.

ComponentDescription

(선택 사항) 구성 요소의 설명.

ComponentPublisher

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

ComponentConfiguration

(선택 사항) 구성 요소의 구성 또는 매개 변수를 정의하는 개체입니다. 기본 구성을 정의한 다음 구성 요소를 배포할 때 구성 요소에 제공할 구성 개체를 지정할 수 있습니다. 구성 요소 구성은 중첩된 매개 변수와 구조를 지원합니다. 이 객체에는 다음 정보가 포함되어 있어야 합니다.

DefaultConfiguration

구성 요소의 기본 구성을 정의하는 개체입니다. 이 개체의 구조를 정의합니다.

참고

AWS IoT Greengrass 구성 JSON 값에 사용합니다. JSON숫자 유형을 지정하지만 정수와 부동 소수점을 구분하지는 않습니다. 따라서 구성 값이 부동 소수점으로 변환될 수 있습니다. AWS IoT Greengrass구성 요소가 올바른 데이터 유형을 사용하도록 하려면 숫자 구성 값을 문자열로 정의하는 것이 좋습니다. 그런 다음 구성 요소가 해당 값을 정수 또는 부동 소수점으로 파싱하도록 하십시오. 이렇게 하면 구성 및 코어 장치에서 구성 값의 유형이 동일할 수 있습니다.

ComponentDependencies

(선택 사항) 구성 요소의 구성 요소 종속성을 각각 정의하는 개체 사전입니다. 각 개체의 키는 구성 요소 종속성의 이름을 식별합니다. AWS IoT Greengrass 구성 요소가 설치될 때 구성 요소 종속성을 설치합니다. AWS IoT Greengrass 종속성이 시작될 때까지 기다린 후 구성 요소를 시작합니다. 각 개체에는 다음 정보가 들어 있습니다.

VersionRequirement

이 종속성에 대해 호환되는 구성 요소 버전을 정의하는 npm 스타일 시맨틱 버전 제약 조건입니다. 버전 또는 버전 범위를 지정할 수 있습니다. 자세한 내용은 npm 시맨틱 버전 계산기를 참조하십시오.

DependencyType

(선택 사항) 이 종속성의 유형. 다음 옵션 중 하나를 선택합니다.

  • SOFT – 종속성 상태가 변경되면 구성 요소가 다시 시작되지 않습니다.

  • HARD – 종속성 상태가 변경되면 구성 요소가 다시 시작됩니다.

기본값은 HARD입니다.

ComponentType

(선택 사항) 구성 요소 유형.

참고

레시피에 구성 요소 유형을 지정하지 않는 것이 좋습니다. AWS IoT Greengrass 구성 요소를 만들 때 자동으로 유형을 설정합니다.

유형은 다음 유형 중 하나일 수 있습니다.

  • aws.greengrass.generic— 구성 요소는 명령을 실행하거나 아티팩트를 제공합니다.

  • aws.greengrass.lambda— 구성 요소는 Lambda 시작 관리자 구성 요소를 사용하여 Lambda 함수를 실행합니다. ComponentSource파라미터는 이 ARN 구성 요소가 실행하는 Lambda 함수를 지정합니다.

    이 옵션은 Lambda 함수에서 구성 요소를 생성할 AWS IoT Greengrass 때 설정되므로 사용하지 않는 것이 좋습니다. 자세한 내용은 AWS Lambda함수 실행 단원을 참조하십시오.

  • aws.greengrass.plugin— 구성 요소는 Greengrass 핵과 동일한 Java 가상 머신 (JVM) 에서 실행됩니다. 플러그인 구성 요소를 배포하거나 다시 시작하면 Greengrass 핵이 다시 시작됩니다.

    플러그인 구성 요소는 Greengrass 핵과 동일한 로그 파일을 사용합니다. 자세한 내용은 모니터 AWS IoT Greengrass 로그 단원을 참조하십시오.

    이 옵션은 Greengrass 핵과 직접 인터페이스하는 Java로 작성된 AWS-provide 구성 요소용이므로 구성 요소 레시피에는 사용하지 않는 것이 좋습니다. 어떤 공용 구성 요소가 플러그인인인지에 대한 자세한 내용은 을 참조하십시오. AWS-제공된 구성 요소

  • aws.greengrass.nucleus— 핵 구성 요소. 자세한 내용은 그린그래스 핵 단원을 참조하십시오.

    구성 요소 레시피에는 이 옵션을 사용하지 않는 것이 좋습니다. Core 소프트웨어의 최소 기능을 제공하는 Greengrass nucleus 구성 요소를 위한 것입니다. AWS IoT Greengrass

레시피에서 구성 요소를 생성하거나 Lambda 함수에서 구성 요소를 생성할 aws.greengrass.lambda 때 기본값이 설정됩니다. aws.greengrass.generic

자세한 내용은 구성 요소 유형 단원을 참조하십시오.

ComponentSource

(선택 사항) 구성 ARN 요소가 실행하는 Lambda 함수의 함수입니다.

레시피에 구성 요소 소스를 지정하지 않는 것이 좋습니다. AWS IoT Greengrass Lambda 함수에서 구성 요소를 생성할 때 이 파라미터를 자동으로 설정합니다. 자세한 내용은 AWS Lambda함수 실행 단원을 참조하십시오.

Manifests

구성 요소의 수명 주기, 파라미터, 플랫폼 요구 사항을 각각 정의하는 객체 목록입니다. 코어 기기가 여러 매니페스트의 플랫폼 요구 사항을 충족하는 경우 코어 기기와 일치하는 첫 번째 매니페스트를 AWS IoT Greengrass 사용합니다. 코어 기기가 올바른 매니페스트를 사용하도록 하려면 먼저 플랫폼 요구 사항이 더 엄격한 매니페스트를 정의해야 합니다. 모든 플랫폼에 적용되는 매니페스트는 목록의 마지막 매니페스트여야 합니다.

중요

구성 요소를 설치하려면 코어 기기가 매니페스트의 플랫폼 요구 사항을 하나 이상 충족해야 합니다. 코어 기기와 일치하는 매니페스트가 없는 경우 AWS IoT Greengrass Core 소프트웨어가 구성 요소를 설치하지 않아 배포가 실패합니다.

각 개체에는 다음 정보가 포함됩니다.

Name

(선택 사항) 이 매니페스트가 정의하는 플랫폼의 친숙한 이름.

이 매개 변수를 생략하면 플랫폼에서 os 이름이 AWS IoT Greengrass 생성되고 architecture

Platform

(선택 사항) 이 매니페스트가 적용되는 플랫폼을 정의하는 객체입니다. 모든 플랫폼에 적용되는 매니페스트를 정의하려면 이 매개변수를 생략하십시오.

이 객체는 코어 기기가 실행되는 플랫폼에 대한 키-값 쌍을 지정합니다. 이 구성 요소를 배포하면 AWS IoT Greengrass Core 소프트웨어는 이러한 키-값 쌍을 코어 장치의 플랫폼 속성과 비교합니다. AWS IoT Greengrass Core 소프트웨어는 항상 os 및 를 architecture 정의하며 추가 속성을 정의할 수도 있습니다. Greengrass nucleus 구성 요소를 배포할 때 코어 디바이스의 사용자 지정 플랫폼 속성을 지정할 수 있습니다. 자세한 내용은 Greengrass nucleus 구성요소의 플랫폼 오버라이드 매개변수를 참조하십시오.

각 키-값 쌍에 대해 다음 값 중 하나를 지정할 수 있습니다.

  • 정확한 값 (예linux: 또는). windows 정확한 값은 문자나 숫자로 시작해야 합니다.

  • *모든 값과 일치합니다. 값이 없는 경우에도 일치합니다.

  • Java 스타일 정규 표현식 (예:. /windows|linux/ 정규 표현식은 슬래시 문자 () 로 시작하고 끝나야 합니다. / 예를 들어, 정규 표현식은 공백이 아닌 모든 값과 /.+/ 일치합니다.

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

os

(선택 사항) 이 매니페스트가 지원하는 플랫폼의 운영 체제 이름. 일반 플랫폼에는 다음 값이 포함됩니다.

  • linux

  • windows

  • darwin(macOS)

architecture

(선택 사항) 이 매니페스트가 지원하는 플랫폼의 프로세서 아키텍처. 일반적인 아키텍처에는 다음 값이 포함됩니다.

  • amd64

  • arm

  • aarch64

  • x86

architecture.detail

(선택 사항) 이 매니페스트가 지원하는 플랫폼의 프로세서 아키텍처 세부 정보입니다. 일반적인 아키텍처 세부 정보에는 다음 값이 포함됩니다.

  • arm61

  • arm71

  • arm81

key

(선택 사항) 이 매니페스트에 대해 정의하는 플랫폼 속성. Replace key 플랫폼 속성의 이름과 함께. AWS IoT Greengrass Core 소프트웨어는 이 플랫폼 속성을 Greengrass nucleus 구성 요소 구성에서 지정한 키-값 쌍과 일치시킵니다. 자세한 내용은 Greengrass nucleus 구성요소의 플랫폼 오버라이드 매개변수를 참조하십시오.

작은 정보

역방향 도메인 이름 형식을 사용하여 회사 내에서 이름이 충돌하지 않도록 하세요. 예를 들어, 회사에서 라디오 프로젝트를 소유하고 example.com 작업하는 경우 사용자 지정 플랫폼 속성에 이름을 지정할 수 있습니다. com.example.radio.RadioModule 이렇게 하면 회사 내에서 플랫폼 속성 이름이 충돌하는 것을 방지할 수 있습니다.

예를 들어 플랫폼 속성을 정의하여 코어 기기에서 사용할 수 있는 라디오 모듈을 기반으로 다른 매니페스트를 지정할 수 있습니다. com.example.radio.RadioModule 각 매니페스트에는 다양한 하드웨어 구성에 적용되는 서로 다른 아티팩트가 포함될 수 있으므로 최소한의 소프트웨어 세트만 코어 기기에 배포할 수 있습니다.

Lifecycle

이 매니페스트가 정의하는 플랫폼에서 구성 요소를 설치하고 실행하는 방법을 정의하는 개체 또는 문자열입니다. 모든 플랫폼에 적용되는 글로벌 라이프사이클을 정의할 수도 있습니다. 코어 기기는 사용할 매니페스트에 수명 주기가 지정되지 않은 경우에만 글로벌 수명 주기를 사용합니다.

참고

이 수명 주기는 매니페스트 내에서 정의합니다. 여기서 지정하는 라이프사이클 단계는 이 매니페스트가 정의하는 플랫폼에만 적용됩니다. 모든 플랫폼에 적용되는 글로벌 라이프사이클을 정의할 수도 있습니다.

이 개체 또는 문자열에는 다음 정보가 포함됩니다.

Setenv

(선택 사항) 모든 라이프사이클 스크립트에 제공하는 환경 변수 사전입니다. 각 라이프 사이클 스크립트에서 이러한 환경 변수를 재정의할 수 있습니다. Setenv

install

(선택 사항) 구성 요소가 설치될 때 실행할 스크립트를 정의하는 개체 또는 문자열입니다. 또한 AWS IoT Greengrass Core 소프트웨어는 소프트웨어를 시작할 때마다 이 수명 주기 단계를 실행합니다.

install스크립트가 성공 코드와 함께 종료되면 구성 요소가 INSTALLED 상태로 전환됩니다.

이 개체 또는 문자열에는 다음 정보가 들어 있습니다.

Script

실행할 스크립트.

RequiresPrivilege

(선택 사항) 루트 권한으로 스크립트를 실행할 수 있습니다. 이 옵션을 로 true 설정하면 AWS IoT Greengrass Core 소프트웨어는 이 구성 요소를 실행하도록 구성한 시스템 사용자 대신 루트로 이 수명 주기 스크립트를 실행합니다. 기본값은 false입니다.

Skipif

(선택 사항) 스크립트 실행 여부를 결정하기 위한 검사입니다. 실행 파일이 경로에 있는지 또는 파일이 존재하는지 확인하도록 정의할 수 있습니다. 출력이 true인 경우 AWS IoT Greengrass Core 소프트웨어는 이 단계를 건너뛰습니다. 다음 검사 중 하나를 선택합니다.

  • onpath runnable— 실행 가능한 항목이 시스템 경로에 있는지 확인합니다. 예를 들어, Python 3을 사용할 수 있는 경우 이 라이프사이클 단계를 onpath python3 건너뛰려면 사용하십시오.

  • exists file— 파일이 존재하는지 확인하세요. 예를 들어, 있는 경우 이 수명 주기 단계를 /tmp/my-configuration.db 건너뛰는 exists /tmp/my-configuration.db 데 사용합니다.

Timeout

(선택 사항) AWS IoT Greengrass Core 소프트웨어가 프로세스를 종료하기 전에 스크립트를 실행할 수 있는 최대 시간 (초) 입니다.

기본값: 120초

Setenv

(선택 사항) 스크립트에 제공할 환경 변수 사전입니다. 이러한 환경 변수는 에서 Lifecycle.Setenv 제공하는 변수를 재정의합니다.

run

(선택 사항) 구성 요소가 시작될 때 실행할 스크립트를 정의하는 개체 또는 문자열입니다.

구성 요소는 이 수명 주기 단계가 실행될 때 RUNNING 상태에 들어갑니다. run스크립트가 성공 코드와 함께 종료되면 구성 요소가 STOPPING 상태로 전환됩니다. shutdown스크립트가 지정되면 실행되고 그렇지 않으면 구성 요소가 FINISHED 상태로 전환됩니다.

이 구성 요소에 종속된 구성 요소는 이 수명 주기 단계가 실행될 때 시작됩니다. 종속 구성 요소가 사용하는 서비스와 같은 백그라운드 프로세스를 실행하려면 startup 수명 주기 단계를 대신 사용하세요.

수명 주기가 있는 구성 요소를 배포하면 이 run 수명 주기 스크립트가 실행되는 즉시 코어 기기가 배포가 완료되었다고 보고할 수 있습니다. 따라서 run 수명 주기 스크립트가 실행 직후 실패하더라도 배포를 완료하고 성공적으로 배포할 수 있습니다. 구성 요소의 시작 스크립트 결과에 따라 배포 상태가 달라지도록 하려면 startup 수명 주기 단계를 대신 사용하십시오.

참고

run수명 주기 중 하나만 startup 정의할 수 있습니다.

이 개체 또는 문자열에는 다음 정보가 들어 있습니다.

Script

실행할 스크립트.

RequiresPrivilege

(선택 사항) 루트 권한으로 스크립트를 실행할 수 있습니다. 이 옵션을 로 true 설정하면 AWS IoT Greengrass Core 소프트웨어는 이 구성 요소를 실행하도록 구성한 시스템 사용자 대신 루트로 이 수명 주기 스크립트를 실행합니다. 기본값은 false입니다.

Skipif

(선택 사항) 스크립트 실행 여부를 결정하기 위한 검사입니다. 실행 파일이 경로에 있는지 또는 파일이 존재하는지 확인하도록 정의할 수 있습니다. 출력이 true인 경우 AWS IoT Greengrass Core 소프트웨어는 이 단계를 건너뛰습니다. 다음 검사 중 하나를 선택합니다.

  • onpath runnable— 실행 가능한 항목이 시스템 경로에 있는지 확인합니다. 예를 들어, Python 3을 사용할 수 있는 경우 이 라이프사이클 단계를 onpath python3 건너뛰려면 사용하십시오.

  • exists file— 파일이 존재하는지 확인하세요. 예를 들어, 있는 경우 이 수명 주기 단계를 /tmp/my-configuration.db 건너뛰는 exists /tmp/my-configuration.db 데 사용합니다.

Timeout

(선택 사항) AWS IoT Greengrass Core 소프트웨어가 프로세스를 종료하기 전에 스크립트를 실행할 수 있는 최대 시간 (초) 입니다.

이 수명 주기 단계는 기본적으로 제한 시간이 초과되지 않습니다. 이 제한 시간을 생략하면 run 스크립트는 종료될 때까지 실행됩니다.

Setenv

(선택 사항) 스크립트에 제공할 환경 변수 사전입니다. 이러한 환경 변수는 에서 Lifecycle.Setenv 제공하는 변수를 재정의합니다.

startup

(선택 사항) 구성 요소가 시작될 때 실행할 백그라운드 프로세스를 정의하는 개체 또는 문자열입니다.

성공적으로 종료되어야 startup 하는 명령을 실행하거나 구성 요소의 상태를 종속 구성 요소가 RUNNING 시작되기 전으로 업데이트하는 데 사용합니다. UpdateStateIPC작업을 사용하여 구성 요소의 상태를 로 RUNNING 설정하거나 구성 요소가 종료되지 않는 스크립트를 시작할 ERRORED 때 설정할 수 있습니다. 예를 들어, 내 SQL 프로세스를 시작하는 startup 단계를 정의할 수 /etc/init.d/mysqld start 있습니다.

구성 요소는 이 수명 주기 단계가 실행될 때 STARTING 상태에 들어갑니다. startup스크립트가 성공 코드와 함께 종료되면 구성 요소가 RUNNING 상태로 전환됩니다. 그러면 종속 구성 요소가 시작될 수 있습니다.

수명 주기가 있는 구성 요소를 배포하면 이 startup 수명 주기 스크립트가 종료되거나 상태를 보고한 후 코어 디바이스에서 배포가 완료된 것으로 보고할 수 있습니다. 즉, 모든 구성 요소의 시작 스크립트가 종료되거나 상태를 보고할 IN_PROGRESS 때까지 배포 상태가 유지됩니다.

참고

수명 주기 중 startup 하나만 정의할 수 있습니다. run

이 개체 또는 문자열에는 다음 정보가 들어 있습니다.

Script

실행할 스크립트.

RequiresPrivilege

(선택 사항) 루트 권한으로 스크립트를 실행할 수 있습니다. 이 옵션을 로 true 설정하면 AWS IoT Greengrass Core 소프트웨어는 이 구성 요소를 실행하도록 구성한 시스템 사용자 대신 루트로 이 수명 주기 스크립트를 실행합니다. 기본값은 false입니다.

Skipif

(선택 사항) 스크립트 실행 여부를 결정하기 위한 검사입니다. 실행 파일이 경로에 있는지 또는 파일이 존재하는지 확인하도록 정의할 수 있습니다. 출력이 true인 경우 AWS IoT Greengrass Core 소프트웨어는 이 단계를 건너뛰습니다. 다음 검사 중 하나를 선택합니다.

  • onpath runnable— 실행 가능한 항목이 시스템 경로에 있는지 확인합니다. 예를 들어, Python 3을 사용할 수 있는 경우 이 라이프사이클 단계를 onpath python3 건너뛰려면 사용하십시오.

  • exists file— 파일이 존재하는지 확인하세요. 예를 들어, 있는 경우 이 수명 주기 단계를 /tmp/my-configuration.db 건너뛰는 exists /tmp/my-configuration.db 데 사용합니다.

Timeout

(선택 사항) AWS IoT Greengrass Core 소프트웨어가 프로세스를 종료하기 전에 스크립트를 실행할 수 있는 최대 시간 (초) 입니다.

기본값: 120초

Setenv

(선택 사항) 스크립트에 제공할 환경 변수 사전입니다. 이러한 환경 변수는 에서 Lifecycle.Setenv 제공하는 변수를 재정의합니다.

shutdown

(선택 사항) 구성 요소가 종료될 때 실행할 스크립트를 정의하는 개체 또는 문자열입니다. 종료 수명 주기를 사용하여 구성 요소가 상태에 있을 때 실행하려는 코드를 실행할 수 있습니다. STOPPING 종료 수명 주기는 startup 또는 run 스크립트로 시작된 프로세스를 중지하는 데 사용할 수 있습니다.

에서 startup 백그라운드 프로세스를 시작하는 경우 구성 요소가 종료될 때 이 shutdown 단계를 사용하여 해당 프로세스를 중지할 수 있습니다. 예를 들어, 내 SQL 프로세스를 중지하는 shutdown 단계를 정의할 수 있습니다/etc/init.d/mysqld stop.

구성 요소가 STOPPING 상태에 들어간 후에 shutdown 스크립트가 실행됩니다. 스크립트가 성공적으로 완료되면 구성 요소가 FINISHED 상태로 전환됩니다.

이 개체 또는 문자열에는 다음 정보가 들어 있습니다.

Script

실행할 스크립트.

RequiresPrivilege

(선택 사항) 루트 권한으로 스크립트를 실행할 수 있습니다. 이 옵션을 로 true 설정하면 AWS IoT Greengrass Core 소프트웨어는 이 구성 요소를 실행하도록 구성한 시스템 사용자 대신 루트로 이 수명 주기 스크립트를 실행합니다. 기본값은 false입니다.

Skipif

(선택 사항) 스크립트 실행 여부를 결정하기 위한 검사입니다. 실행 파일이 경로에 있는지 또는 파일이 존재하는지 확인하도록 정의할 수 있습니다. 출력이 true인 경우 AWS IoT Greengrass Core 소프트웨어는 이 단계를 건너뛰습니다. 다음 검사 중 하나를 선택합니다.

  • onpath runnable— 실행 가능한 항목이 시스템 경로에 있는지 확인합니다. 예를 들어, Python 3을 사용할 수 있는 경우 이 라이프사이클 단계를 onpath python3 건너뛰려면 사용하십시오.

  • exists file— 파일이 존재하는지 확인하세요. 예를 들어, 있는 경우 이 수명 주기 단계를 /tmp/my-configuration.db 건너뛰는 exists /tmp/my-configuration.db 데 사용합니다.

Timeout

(선택 사항) AWS IoT Greengrass Core 소프트웨어가 프로세스를 종료하기 전에 스크립트를 실행할 수 있는 최대 시간 (초) 입니다.

기본값: 15초.

Setenv

(선택 사항) 스크립트에 제공할 환경 변수 사전입니다. 이러한 환경 변수는 에서 Lifecycle.Setenv 제공하는 변수를 재정의합니다.

recover

(선택 사항) 구성 요소에 오류가 발생할 때 실행할 스크립트를 정의하는 개체 또는 문자열입니다.

이 단계는 구성 요소가 ERRORED 상태에 들어갈 때 실행됩니다. 구성 요소가 성공적으로 복구되지 않은 상태가 ERRORED 세 번 반복되면 구성 요소가 해당 BROKEN 상태로 변경됩니다. 구성 요소를 수정하려면 BROKEN 구성 요소를 다시 배포해야 합니다.

이 개체 또는 문자열에는 다음 정보가 들어 있습니다.

Script

실행할 스크립트.

RequiresPrivilege

(선택 사항) 루트 권한으로 스크립트를 실행할 수 있습니다. 이 옵션을 로 true 설정하면 AWS IoT Greengrass Core 소프트웨어는 이 구성 요소를 실행하도록 구성한 시스템 사용자 대신 루트로 이 수명 주기 스크립트를 실행합니다. 기본값은 false입니다.

Skipif

(선택 사항) 스크립트 실행 여부를 결정하기 위한 검사입니다. 실행 파일이 경로에 있는지 또는 파일이 존재하는지 확인하도록 정의할 수 있습니다. 출력이 true인 경우 AWS IoT Greengrass Core 소프트웨어는 이 단계를 건너뛰습니다. 다음 검사 중 하나를 선택합니다.

  • onpath runnable— 실행 가능한 항목이 시스템 경로에 있는지 확인합니다. 예를 들어, Python 3을 사용할 수 있는 경우 이 라이프사이클 단계를 onpath python3 건너뛰려면 사용하십시오.

  • exists file— 파일이 존재하는지 확인하세요. 예를 들어, 있는 경우 이 수명 주기 단계를 /tmp/my-configuration.db 건너뛰는 exists /tmp/my-configuration.db 데 사용합니다.

Timeout

(선택 사항) AWS IoT Greengrass Core 소프트웨어가 프로세스를 종료하기 전에 스크립트를 실행할 수 있는 최대 시간 (초) 입니다.

기본값: 60초

Setenv

(선택 사항) 스크립트에 제공할 환경 변수 사전입니다. 이러한 환경 변수는 에서 Lifecycle.Setenv 제공하는 변수를 재정의합니다.

bootstrap

(선택 사항) AWS IoT Greengrass Core 소프트웨어 또는 코어 장치를 다시 시작해야 하는 스크립트를 정의하는 개체 또는 문자열입니다. 이를 통해 운영 체제 업데이트 또는 런타임 업데이트 등을 설치한 후 다시 시작하는 구성 요소를 개발할 수 있습니다.

참고

AWS IoT Greengrass Core 소프트웨어 또는 장치를 다시 시작할 필요가 없는 업데이트 또는 종속 항목을 설치하려면 설치 수명 주기를 사용하십시오.

이 수명 주기 단계는 AWS IoT Greengrass Core 소프트웨어가 구성 요소를 배포하는 다음과 같은 경우 설치 수명 주기 단계보다 먼저 실행됩니다.

  • 구성 요소가 처음으로 코어 장치에 배포됩니다.

  • 구성 요소 버전이 변경됩니다.

  • 구성 요소 구성 업데이트의 결과로 부트스트랩 스크립트가 변경됩니다.

AWS IoT Greengrass Core 소프트웨어가 배포에 부트스트랩 단계가 있는 모든 구성 요소의 부트스트랩 단계를 완료한 후 소프트웨어가 다시 시작됩니다.

중요

AWS IoT Greengrass Core 소프트웨어 또는 코어 디바이스를 다시 시작하려면 AWS IoT Greengrass Core 소프트웨어를 시스템 서비스로 구성해야 합니다. AWS IoT Greengrass Core 소프트웨어를 시스템 서비스로 구성하지 않으면 소프트웨어가 다시 시작되지 않습니다. 자세한 내용은 Greengrass 핵을 시스템 서비스로 구성 단원을 참조하십시오.

이 개체 또는 문자열에는 다음 정보가 들어 있습니다.

BootstrapOnRollback
참고

이 기능을 BootstrapOnRollback 활성화하면 실패한 대상 배포의 일부로 부트스트랩 수명 주기 단계를 완료했거나 실행을 시도한 구성 요소에 대해서만 실행됩니다. 이 기능은 그린그래스 핵 버전 2.12.0 이상에서 사용할 수 있습니다.

(선택 사항) 롤백 배포의 일부로 부트스트랩 수명 주기 단계를 실행할 수 있습니다. 이 옵션을 로 true 설정하면 롤백 배포 내에 정의된 부트스트랩 수명 주기 단계가 실행됩니다. 배포에 실패하면 롤백 배포 중에 이전 버전의 구성 요소 부트스트랩 수명 주기가 다시 실행됩니다.

기본값은 false입니다.

Script

실행할 스크립트. 이 스크립트의 종료 코드는 재시작 지침을 정의합니다. 다음 종료 코드를 사용하십시오.

  • 0— AWS IoT Greengrass Core 소프트웨어 또는 코어 장치를 다시 시작하지 마십시오. 모든 구성 요소가 부트스트랩된 후에도 AWS IoT Greengrass Core 소프트웨어는 여전히 다시 시작됩니다.

  • 100— AWS IoT Greengrass Core 소프트웨어 재시작을 요청합니다.

  • 101— 코어 디바이스 재시작 요청.

종료 코드 100~199는 특수 동작용입니다. 다른 종료 코드는 스크립트 오류를 나타냅니다.

RequiresPrivilege

(선택 사항) 루트 권한으로 스크립트를 실행할 수 있습니다. 이 옵션을 로 true 설정하면 AWS IoT Greengrass Core 소프트웨어는 이 구성 요소를 실행하도록 구성한 시스템 사용자 대신 루트로 이 수명 주기 스크립트를 실행합니다. 기본값은 false입니다.

Timeout

(선택 사항) AWS IoT Greengrass Core 소프트웨어가 프로세스를 종료하기 전에 스크립트를 실행할 수 있는 최대 시간 (초) 입니다.

기본값: 120초

Setenv

(선택 사항) 스크립트에 제공할 환경 변수 사전입니다. 이러한 환경 변수는 에서 Lifecycle.Setenv 제공하는 변수를 재정의합니다.

Selections

(선택 사항) 이 매니페스트에 실행할 글로벌 수명 주기 섹션을 지정하는 선택 키 목록입니다. 글로벌 수명 주기에서는 모든 수준의 선택 키를 사용하여 수명 주기 단계를 정의하여 주기의 하위 섹션을 선택할 수 있습니다. 그러면 코어 디바이스는 이 매니페스트의 선택 키와 일치하는 섹션을 사용합니다. 자세한 내용은 글로벌 라이프사이클 예시를 참조하십시오.

중요

코어 기기는 이 매니페스트가 라이프사이클을 정의하지 않는 경우에만 글로벌 라이프사이클의 선택 항목을 사용합니다.

글로벌 라이프사이클에서 all 선택 키가 없는 섹션을 실행하도록 선택 키를 지정할 수 있습니다.

Artifacts

(선택 사항) 이 매니페스트가 정의하는 플랫폼 구성 요소의 바이너리 아티팩트를 각각 정의하는 개체의 목록입니다. 예를 들어 코드나 이미지를 아티팩트로 정의할 수 있습니다.

구성 요소가 배포되면 AWS IoT Greengrass Core 소프트웨어가 아티팩트를 코어 장치의 폴더에 다운로드합니다. 아티팩트를 다운로드한 후 소프트웨어가 추출하는 아카이브 파일로 정의할 수도 있습니다.

레시피 변수를 사용하여 코어 디바이스에 아티팩트가 설치된 폴더의 경로를 가져올 수 있습니다.

  • 일반 파일 - artifacts:path 레시피 변수를 사용하여 아티팩트가 포함된 폴더의 경로를 가져올 수 있습니다. 예를 들어 레시피에 {artifacts:path}/my_script.py 이 있는 아티팩트의 경로를 가져오도록 지정하십시오. URI s3://amzn-s3-demo-bucket/path/to/my_script.py

  • 추출된 아카이브 — artifacts: decompressedPath recipe 변수를 사용하여 추출된 아카이브 아티팩트가 포함된 폴더의 경로를 가져옵니다. AWS IoT Greengrass Core 소프트웨어는 각 아카이브를 아카이브와 이름이 같은 폴더에 추출합니다. 예를 들어, 가 들어 {artifacts:decompressedPath}/my_archive/my_script.py 있는 아카이브 my_script.py 아티팩트의 경로를 가져올 레시피에 지정합니다. URI s3://amzn-s3-demo-bucket/path/to/my_archive.zip

참고

로컬 코어 장치에서 아카이브 아티팩트가 포함된 구성 요소를 개발하는 경우 해당 아티팩트에 URI 대한 구성 요소가 없을 수 있습니다. 아티팩트를 추출하는 Unarchive 옵션으로 구성 요소를 테스트하려면 파일 이름이 아카이브 아티팩트 파일의 이름과 일치하는 URI 위치를 지정하십시오. 아카이브 아티팩트를 업로드할 예상 URI 위치를 지정하거나 새 자리 표시자를 지정할 수 있습니다. URI 예를 들어, 로컬 배포 중에 my_archive.zip 아티팩트를 추출하도록 지정할 수 있습니다. s3://amzn-s3-demo-bucket/my_archive.zip

각 객체에는 다음과 같은 정보가 들어 있습니다.

URI

S3 URI 버킷의 아티팩트. AWS IoT Greengrass Core 소프트웨어는 구성 요소가 설치될 URI 때 여기에서 아티팩트를 가져옵니다. 단, 아티팩트가 디바이스에 이미 있는 경우는 예외입니다. 각 아티팩트는 각 매니페스트 내에서 고유한 파일 이름을 가져야 합니다.

Unarchive

(선택 사항) 압축을 풀 아카이브 유형. 다음 옵션 중 하나를 선택합니다.

  • NONE— 파일은 압축을 풀 수 있는 아카이브가 아닙니다. AWS IoT Greengrass Core 소프트웨어는 아티팩트를 코어 디바이스의 폴더에 설치합니다. artifacts:path 레시피 변수를 사용하여 이 폴더의 경로를 가져올 수 있습니다.

  • ZIP— 파일은 아카이브입니다. ZIP AWS IoT Greengrass Core 소프트웨어는 아카이브를 아카이브와 이름이 같은 폴더에 추출합니다. artifacts: decompressedPath recipe 변수를 사용하여 이 폴더가 포함된 폴더의 경로를 가져올 수 있습니다.

기본값은 NONE입니다.

Permission

(선택 사항) 이 아티팩트 파일에 설정할 액세스 권한을 정의하는 객체입니다. 읽기 권한과 실행 권한을 설정할 수 있습니다.

참고

AWS IoT Greengrass Core 소프트웨어에서는 구성 요소가 아티팩트 폴더의 아티팩트 파일을 편집하는 것을 허용하지 않으므로 쓰기 권한을 설정할 수 없습니다. 구성 요소의 아티팩트 파일을 편집하려면 해당 파일을 다른 위치에 복사하거나 새 아티팩트 파일을 게시하고 배포하십시오.

아티팩트를 압축 해제할 아카이브로 정의하면 AWS IoT Greengrass Core 소프트웨어는 아카이브에서 압축을 푼 파일에 대해 이러한 액세스 권한을 설정합니다. AWS IoT Greengrass Core 소프트웨어는 폴더의 액세스 권한을 for 및 로 ALL 설정합니다. Read Execute 이렇게 하면 구성 요소가 폴더에서 압축을 푼 파일을 볼 수 있습니다. 아카이브의 개별 파일에 대한 권한을 설정하려면 설치 수명 주기 스크립트에서 권한을 설정할 수 있습니다.

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

Read

(선택 사항) 이 아티팩트 파일에 설정할 읽기 권한입니다. 다른 구성 요소 (예: 이 구성 요소에 종속된 구성 요소) 가 이 아티팩트에 액세스할 수 있도록 하려면 다음을 지정합니다. ALL 다음 옵션 중 하나를 선택합니다.

  • NONE— 파일을 읽을 수 없습니다.

  • OWNER— 이 구성 요소를 실행하도록 구성한 시스템 사용자가 파일을 읽을 수 있습니다.

  • ALL— 모든 사용자가 파일을 읽을 수 있습니다.

기본값은 OWNER입니다.

Execute

(선택 사항) 이 아티팩트 파일에 설정할 실행 권한입니다. Execute권한은 권한을 의미합니다. Read 예를 들어, 를 ALL 지정하면 모든 사용자가 이 아티팩트 파일을 읽고 실행할 수 있습니다. Execute

다음 옵션 중 하나를 선택합니다.

  • NONE— 파일을 실행할 수 없습니다.

  • OWNER— 구성 요소를 실행하도록 구성한 시스템 사용자가 파일을 실행할 수 있습니다.

  • ALL— 모든 사용자가 파일을 실행할 수 있습니다.

기본값은 NONE입니다.

Digest

(읽기 전용) 아티팩트의 암호화 다이제스트 해시입니다. 구성 요소를 만들 때 AWS IoT Greengrass 는 해시 알고리즘을 사용하여 아티팩트 파일의 해시를 계산합니다. 그런 다음 구성 요소를 배포하면 Greengrass nucleus가 다운로드된 아티팩트의 해시를 계산하고 해시를 이 다이제스트와 비교하여 설치 전에 아티팩트를 확인합니다. 해시가 다이제스트와 일치하지 않으면 배포가 실패합니다.

이 매개 변수를 설정하면 AWS IoT Greengrass 구성 요소를 만들 때 설정한 값이 바뀝니다.

Algorithm

(읽기 전용) 아티팩트의 다이제스트 해시를 계산하는 데 AWS IoT Greengrass 사용하는 해시 알고리즘입니다.

이 매개 변수를 설정하면 구성 요소를 AWS IoT Greengrass 만들 때 설정한 값이 바뀝니다.

Lifecycle

구성 요소 설치 및 실행 방법을 정의하는 객체입니다. 코어 기기는 사용할 매니페스트에 수명 주기가 지정되지 않은 경우에만 글로벌 수명 주기를 사용합니다.

참고

이 수명 주기는 매니페스트 외부에서 정의합니다. 해당 매니페스트와 일치하는 플랫폼에 적용되는 매니페스트 수명 주기를 정의할 수도 있습니다.

글로벌 수명 주기에서는 각 매니페스트에서 지정하는 특정 선택 키에 대해 실행되는 수명 주기를 지정할 수 있습니다. 선택 키는 각 매니페스트에 대해 실행할 글로벌 수명 주기 섹션을 식별하는 문자열입니다.

all선택 키는 선택 키가 없는 모든 섹션의 기본값입니다. 즉, all 선택 키 없이 글로벌 수명 주기의 섹션을 실행하도록 매니페스트에서 선택 키를 지정할 수 있습니다. 글로벌 수명 주기에서는 all 선택 키를 지정할 필요가 없습니다.

매니페스트가 라이프사이클 또는 선택 키를 정의하지 않는 경우 코어 기기는 기본적으로 선택 항목을 사용합니다. all 즉, 이 경우 코어 기기는 글로벌 라이프사이클 중 선택 키를 사용하지 않는 섹션을 사용합니다.

이 개체에는 매니페스트 수명 주기와 동일한 정보가 포함되지만, 원하는 수준에서 선택 키를 지정하여 수명 주기의 하위 섹션을 선택할 수 있습니다.

작은 정보

선택 키와 수명 주기 키 간의 충돌을 방지하려면 각 선택 키에 소문자만 사용하는 것이 좋습니다. 라이프사이클 키는 대문자로 시작합니다.

예 최상위 선택 키를 사용한 글로벌 라이프사이클의 예
Lifecycle: key1: install: Skipif: either onpath executable or exists file Script: command1 key2: install: Script: command2 all: install: Script: command3
예 하위 수준 선택 키를 사용한 글로벌 라이프사이클 예제
Lifecycle: install: Script: key1: command1 key2: command2 all: command3
예 여러 수준의 선택 키가 있는 글로벌 라이프사이클의 예
Lifecycle: key1: install: Skipif: either onpath executable or exists file Script: command1 key2: install: Script: command2 all: install: Script: key3: command3 key4: command4 all: command5

레시피 변수

레시피 변수는 레시피에 사용할 수 있도록 현재 구성 요소 및 핵의 정보를 노출합니다. 예를 들어 레시피 변수를 사용하여 라이프사이클 스크립트에서 실행하는 애플리케이션에 구성 요소 구성 매개변수를 전달할 수 있습니다.

구성 요소 레시피의 다음 섹션에서 레시피 변수를 사용할 수 있습니다.

레시피 변수는 {recipe_variable} 구문을 사용합니다. 중괄호는 레시피 변수를 나타냅니다.

AWS IoT Greengrass 지원되는 레시피 변수는 다음과 같습니다.

component_dependency_name:configuration:json_pointer

이 레시피가 정의하는 구성 요소 또는 이 구성 요소가 종속된 구성 요소의 구성 매개 변수 값입니다.

이 변수를 사용하여 구성 요소 수명 주기에서 실행하는 스크립트에 매개 변수를 제공할 수 있습니다.

참고

AWS IoT Greengrass 구성 요소 수명 주기 정의에서만 이 레시피 변수를 지원합니다.

이 레시피 변수에는 다음과 같은 입력이 있습니다.

  • component_dependency_name— (선택 사항) 쿼리할 구성 요소 종속성의 이름. 이 레시피가 정의하는 구성 요소를 쿼리하려면 이 세그먼트를 생략하십시오. 직접 종속성만 지정할 수 있습니다.

  • json_pointer— 평가할 구성 값을 JSON 가리키는 포인터. JSON포인터는 / 슬래시로 시작합니다. 중첩된 구성 요소 구성에서 값을 식별하려면 forward slashes (/) 를 사용하여 구성의 각 수준에 대해 키를 구분하십시오. 숫자를 키로 사용하여 목록의 색인을 지정할 수 있습니다. 자세한 내용은 JSON포인터 사양을 참조하십시오.

    AWS IoT Greengrass Core는 YAML 형식의 레시피에 JSON 포인터를 사용합니다.

JSON포인터는 다음 노드 유형을 참조할 수 있습니다.

  • 밸류 노드. AWS IoT Greengrass Core는 레시피 변수를 값의 문자열 표현으로 대체합니다. Null 값은 null 문자열로 변환됩니다.

  • 오브젝트 노드. AWS IoT Greengrass Core는 레시피 변수를 해당 객체의 직렬화된 JSON 문자열 표현으로 대체합니다.

  • 노드가 없습니다. AWS IoT Greengrass Core는 레시피 변수를 대체하지 않습니다.

예를 들어, {configuration:/Message} 레시피 변수는 구성 요소 구성의 Message 키 값을 검색합니다. {com.example.MyComponentDependency:configuration:/server/port}레시피 변수는 구성 요소 종속성의 server 구성 개체에 port 있는 값을 검색합니다.

component_dependency_name:artifacts:path

이 레시피가 정의하는 구성 요소 또는 이 구성 요소가 종속된 구성 요소에 대한 아티팩트의 루트 경로입니다.

구성 요소가 설치되면 구성 요소의 아티팩트를 이 변수가 표시하는 폴더에 AWS IoT Greengrass 복사합니다. 예를 들어 이 변수를 사용하여 구성 요소 수명 주기에서 실행할 스크립트의 위치를 식별할 수 있습니다.

이 경로의 폴더는 읽기 전용입니다. 아티팩트 파일을 수정하려면 파일을 현재 작업 디렉토리 ($PWD또는.) 와 같은 다른 위치에 복사하십시오. 그런 다음 거기서 파일을 수정합니다.

구성 요소 종속성에서 아티팩트를 읽거나 실행하려면 해당 아티팩트 Read 또는 Execute 권한이 있어야 합니다. ALL 자세한 내용은 구성 요소 레시피에 정의한 아티팩트 권한을 참조하십시오.

이 레시피 변수에는 다음과 같은 입력이 있습니다.

  • component_dependency_name— (선택 사항) 쿼리할 구성 요소 종속성의 이름. 이 레시피가 정의하는 구성 요소를 쿼리하려면 이 세그먼트를 생략하십시오. 직접 종속성만 지정할 수 있습니다.

component_dependency_name:artifacts:decompressedPath

이 레시피가 정의하는 구성 요소 또는 이 구성 요소가 종속된 구성 요소에 대한 압축 해제된 아카이브 아티팩트의 루트 경로입니다.

구성 요소가 설치되면 이 변수가 표시하는 폴더에 구성 요소의 아카이브 AWS IoT Greengrass 아티팩트를 압축 해제합니다. 예를 들어 이 변수를 사용하여 구성 요소 수명 주기에서 실행할 스크립트의 위치를 식별할 수 있습니다.

각 아티팩트는 압축이 풀린 경로에 있는 폴더로 압축이 풀립니다. 여기서 폴더는 아티팩트에서 확장자를 뺀 것과 같은 이름을 가집니다. 예를 들어, 이름이 지정된 ZIP 아티팩트는 폴더로 압축을 풉니다. models.zip {artifacts:decompressedPath}/models

이 경로의 폴더는 읽기 전용입니다. 아티팩트 파일을 수정하려면 파일을 현재 작업 디렉토리 ($PWD또는.) 와 같은 다른 위치에 복사하십시오. 그런 다음 거기서 파일을 수정합니다.

구성 요소 종속성에서 아티팩트를 읽거나 실행하려면 해당 아티팩트 Read 또는 Execute 권한이 있어야 합니다. ALL 자세한 내용은 구성 요소 레시피에 정의한 아티팩트 권한을 참조하십시오.

이 레시피 변수에는 다음과 같은 입력이 있습니다.

  • component_dependency_name— (선택 사항) 쿼리할 구성 요소 종속성의 이름. 이 레시피가 정의하는 구성 요소를 쿼리하려면 이 세그먼트를 생략하십시오. 직접 종속성만 지정할 수 있습니다.

component_dependency_name:work:path

이 기능은 Greengrass 핵 구성 요소 v2.0.4 이상에서 사용할 수 있습니다.

이 레시피가 정의하는 구성 요소 또는 이 구성 요소가 종속된 구성 요소의 작업 경로입니다. 이 레시피 변수의 값은 구성 요소 컨텍스트에서 실행할 때 $PWD 환경 변수 및 pwd 명령의 출력과 동일합니다.

이 레시피 변수를 사용하여 구성 요소와 종속성 간에 파일을 공유할 수 있습니다.

이 경로의 폴더는 이 레시피가 정의하는 구성 요소와 동일한 사용자 및 그룹으로 실행되는 다른 구성 요소에서 읽고 쓸 수 있습니다.

이 레시피 변수에는 다음과 같은 입력이 있습니다.

  • component_dependency_name— (선택 사항) 쿼리할 구성 요소 종속성의 이름. 이 레시피가 정의하는 구성 요소를 쿼리하려면 이 세그먼트를 생략하십시오. 직접 종속성만 지정할 수 있습니다.

kernel:rootPath

AWS IoT Greengrass 코어 루트 경로.

iot:thingName

이 기능은 Greengrass 핵 구성 요소 v2.3.0 이상에서 사용할 수 있습니다.

코어 디바이스 사물의 이름. AWS IoT

레시피 예제

다음 레시피 예제를 참조하여 구성 요소에 대한 레시피를 만들 수 있습니다.

AWS IoT Greengrass Greengrass 소프트웨어 카탈로그라고 하는 Greengrass 구성 요소의 색인을 큐레이션합니다. 이 카탈로그는 Greengrass 커뮤니티에서 개발한 Greengrass 구성 요소를 추적합니다. 이 카탈로그에서 구성 요소를 다운로드, 수정 및 배포하여 Greengrass 애플리케이션을 생성할 수 있습니다. 자세한 내용은 커뮤니티 구성 요소 단원을 참조하십시오.

헬로 월드 컴포넌트 레시피

다음 레시피는 Python 스크립트를 실행하는 Hello World 구성 요소를 설명합니다. 이 구성 요소는 모든 플랫폼을 지원하며 Python 스크립트에 인수로 AWS IoT Greengrass 전달되는 Message 매개 변수를 받아들입니다. 다음은 시작하기 자습서에 있는 Hello World 구성 요소의 레시피입니다.

JSON
{ "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}" } } ] }
YAML
--- 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}"

Python 런타임 컴포넌트 예제

다음 레시피는 Python을 설치하는 구성 요소를 설명합니다. 이 구성 요소는 64비트 Linux 기기를 지원합니다.

JSON
{ "RecipeFormatVersion": "2020-01-25", "ComponentName": "com.example.PythonRuntime", "ComponentDescription": "Installs Python 3.7", "ComponentPublisher": "Amazon", "ComponentVersion": "3.7.0", "Manifests": [ { "Platform": { "os": "linux", "architecture": "amd64" }, "Lifecycle": { "install": "apt-get update\napt-get install python3.7" } } ] }
YAML
--- RecipeFormatVersion: '2020-01-25' ComponentName: com.example.PythonRuntime ComponentDescription: Installs Python 3.7 ComponentPublisher: Amazon ComponentVersion: '3.7.0' Manifests: - Platform: os: linux architecture: amd64 Lifecycle: install: | apt-get update apt-get install python3.7

여러 필드를 지정하는 구성 요소 레시피

다음 컴포넌트 레시피는 여러 레시피 필드를 사용합니다.

JSON
{ "RecipeFormatVersion": "2020-01-25", "ComponentName": "com.example.FooService", "ComponentDescription": "Complete recipe for AWS IoT Greengrass components", "ComponentPublisher": "Amazon", "ComponentVersion": "1.0.0", "ComponentConfiguration": { "DefaultConfiguration": { "TestParam": "TestValue" } }, "ComponentDependencies": { "BarService": { "VersionRequirement": "^1.1.0", "DependencyType": "SOFT" }, "BazService": { "VersionRequirement": "^2.0.0" } }, "Manifests": [ { "Platform": { "os": "linux", "architecture": "amd64" }, "Lifecycle": { "install": { "Skipif": "onpath git", "Script": "sudo apt-get install git" }, "Setenv": { "environment_variable1": "variable_value1", "environment_variable2": "variable_value2" } }, "Artifacts": [ { "URI": "s3://amzn-s3-demo-bucket/hello_world.zip", "Unarchive": "ZIP" }, { "URI": "s3://amzn-s3-demo-bucket/hello_world_linux.py" } ] }, { "Lifecycle": { "install": { "Skipif": "onpath git", "Script": "sudo apt-get install git", "RequiresPrivilege": "true" } }, "Artifacts": [ { "URI": "s3://amzn-s3-demo-bucket/hello_world.py" } ] } ] }
YAML
--- RecipeFormatVersion: '2020-01-25' ComponentName: com.example.FooService ComponentDescription: Complete recipe for AWS IoT Greengrass components ComponentPublisher: Amazon ComponentVersion: 1.0.0 ComponentConfiguration: DefaultConfiguration: TestParam: TestValue ComponentDependencies: BarService: VersionRequirement: ^1.1.0 DependencyType: SOFT BazService: VersionRequirement: ^2.0.0 Manifests: - Platform: os: linux architecture: amd64 Lifecycle: install: Skipif: onpath git Script: sudo apt-get install git Setenv: environment_variable1: variable_value1 environment_variable2: variable_value2 Artifacts: - URI: 's3://amzn-s3-demo-bucket/hello_world.zip' Unarchive: ZIP - URI: 's3://amzn-s3-demo-bucket/hello_world_linux.py' - Lifecycle: install: Skipif: onpath git Script: sudo apt-get install git RequiresPrivilege: 'true' Artifacts: - URI: 's3://amzn-s3-demo-bucket/hello_world.py'