AWS IoT Greengrass 코어 구성 - AWS IoT Greengrass

AWS IoT Greengrass Version 1 2023년 6월 30일에 수명 연장 단계에 들어갔습니다. AWS IoT Greengrass V1 관리형 정책에 대한 자세한 정보는 섹션을 참조하세요. 이 날짜 이후에는 기능, 개선 사항, 버그 수정 또는 보안 패치를 제공하는 업데이트가 AWS IoT Greengrass V1 릴리스되지 않습니다. 에서 실행되는 기기는 AWS IoT Greengrass V1 중단되지 않으며 계속 작동하고 클라우드에 연결됩니다. 새로운 기능이 크게 추가되고 추가 플랫폼에 대한 지원이 추가되는 으로 마이그레이션하는 AWS IoT Greengrass Version 2 것이 좋습니다.

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

AWS IoT Greengrass 코어 구성

AWS IoT Greengrass 코어는 엣지 환경에서 허브 또는 게이트웨이 역할을 하는 AWS IoT 사물(디바이스)입니다. 다른 AWS IoT 디바이스와 마찬가지로 코어는 레지스트리에 존재하고, 디바이스 섀도우를 보유하며, 디바이스 인증서를 사용해 AWS IoT Core 및 AWS IoT Greengrass를 인증합니다. 코어 디바이스는 Greengrass 그룹에 대한 로컬 프로세스(예: 통신, 섀도우 동기화 및 토큰 교환)를 관리할 수 있도록 해주는 AWS IoT Greengrass 코어 소프트웨어를 실행합니다.

AWS IoT Greengrass 코어 소프트웨어는 다음과 같은 기능을 제공합니다.

  • 커넥터 및 Lambda 함수의 배포 및 로컬 실행.

  • AWS 클라우드로 자동 내보내기를 사용하여 로컬에서 데이터 스트림을 처리합니다.

  • 관리형 구독을 사용한 디바이스, 커넥터, Lambda 함수 간의 로컬 네트워크를 통한 MQTT 메시징.

  • 관리형 구독을 사용한 AWS IoT와 디바이스, 커넥터, Lambda 함수 간의 MQTT 메시징.

  • 디바이스 인증 및 권한 부여를 사용하여 디바이스와 AWS 클라우드 간에 설정되는 보안 연결.

  • 디바이스의 로컬 섀도우 동기화. 섀도우는 AWS 클라우드와 동기화하도록 구성할 수 있습니다.

  • 로컬 디바이스 및 볼륨 리소스에 대한 액세스 제어.

  • 로컬 추론 실행을 위한 클라우드 학습 머신러닝 모델 배포.

  • 디바이스에서 Greengrass 코어 디바이스를 검색할 수 있도록 지원하는 자동 IP 주소 감지.

  • 새 그룹 또는 업데이트된 그룹 구성의 중앙 배포. 구성 데이터를 다운로드한 후 코어 디바이스가 자동으로 다시 시작합니다.

  • 사용자 정의 Lambda 함수의 안전한 over-the-air (OTA) 소프트웨어 업데이트

  • 로컬 보안 암호의 안전하고 암호화된 저장 및 커넥터 및 Lambda 함수의 액세스 제어.

AWS IoT Greengrass 코어 구성 파일

AWS IoT Greengrass 코어 소프트웨어에 대한 구성 파일은 config.json입니다. 이 파일은 /greengrass-root/config 디렉터리에 있습니다.

참고

greengrass-root는 디바이스에서 AWS IoT Greengrass 코어 소프트웨어가 설치된 경로를 나타냅니다. 일반적으로 이는 /greengrass 디렉터리입니다.

AWS IoT Greengrass 콘솔에서 기본 그룹 생성 옵션을 사용하면 config.json 파일이 작동 상태로 코어 디바이스에 배포됩니다.

다음 명령을 실행하여 이 파일의 내용을 검토할 수 있습니다.

cat /greengrass-root/config/config.json

다음은 예 config.json 파일입니다. 이 버전은 AWS IoT Greengrass 콘솔에서 코어를 만들 때 생성됩니다.

GGC v1.11
{ "coreThing": { "caPath": "root.ca.pem", "certPath": "hash.cert.pem", "keyPath": "hash.private.key", "thingArn": "arn:partition:iot:region:account-id:thing/core-thing-name", "iotHost": "host-prefix-ats.iot.region.amazonaws.com", "ggHost": "greengrass-ats.iot.region.amazonaws.com", "keepAlive": 600, "ggDaemonPort": 8000, "systemComponentAuthTimeout": 5000 }, "runtime": { "maxWorkItemCount": 1024, "maxConcurrentLimit": 25, "lruSize": 25, "mountAllBlockDevices": "no", "cgroup": { "useSystemd": "yes" } }, "managedRespawn": false, "crypto": { "principals": { "SecretsManager": { "privateKeyPath": "file:///greengrass/certs/hash.private.key" }, "IoTCertificate": { "privateKeyPath": "file:///greengrass/certs/hash.private.key", "certificatePath": "file:///greengrass/certs/hash.cert.pem" } }, "caPath": "file:///greengrass/certs/root.ca.pem" }, "writeDirectory": "/var/snap/aws-iot-greengrass/current/ggc-write-directory", "pidFileDirectory": "/var/snap/aws-iot-greengrass/current/pidFileDirectory" }

config.json 파일은 다음 속성을 지원합니다.

coreThing

필드 설명 참고
caPath

/greengrass-root/certs 디렉터리에 상대적인 AWS IoT 루트 CA의 경로입니다.

1.7.0 이전 버전과의 호환성을 위한 용도. crypto 객체가 있으면 이 속성이 무시됩니다.

참고
certPath

/greengrass-root/certs 디렉터리에 상대적인 코어 디바이스 인증서의 경로입니다.

1.7.0 이전 버전과의 호환성을 위한 용도. crypto 객체가 있으면 이 속성이 무시됩니다.
keyPath /greengrass-root/certs 디렉터리에 상대적인 코어 프라이빗 키의 경로입니다. 1.7.0 이전 버전과의 호환성을 위한 용도. crypto 객체가 있으면 이 속성이 무시됩니다.
thingArn AWS IoT Greengrass 코어 디바이스를 나타내는 AWS IoT 사물의 Amazon 리소스 이름(ARN)입니다. 코어 아래에서 또는 aws greengrass get-core-definition-version CLI 명령을 실행하여 AWS IoT Greengrass 콘솔에서 코어의 ARN을 찾습니다.
iotHost AWS IoT 엔드포인트입니다.

설정 아래에서 또는 aws iot describe-endpoint --endpoint-type iot:Data-ATS CLI 명령을 실행하여 AWS IoT 콘솔에서 엔드포인트를 찾습니다.

이 명령은 Amazon Trust Services(ATS) 엔드포인트를 반환합니다. 자세한 내용은 서버 인증 설명서를 참조하십시오.

참고

엔드포인트는 해당 인증서 유형과 일치해야 합니다.

엔드포인트는 해당 AWS 리전과 일치해야 합니다.

ggHost AWS IoT Greengrass 엔드포인트입니다.

호스트 접두사가 greengrass로 대체된 iotHost 엔드포인트입니다(예: greengrass-ats.iot.region.amazonaws.com). iotHost와 동일한 AWS 리전을 사용하십시오.

참고

엔드포인트는 해당 인증서 유형과 일치해야 합니다.

엔드포인트는 해당 AWS 리전과 일치해야 합니다.

iotMqttPort 선택 사항으로, AWS IoT과(와)의 MQTT 통신에 사용하는 포트 번호. 유효한 값은 8883 또는 443입니다. 기본 값은 8883입니다. 자세한 내용은 포트 443에서 또는 네트워크 프록시를 통해 연결 단원을 참조하십시오.
iotHttpPort 선택 사항으로, AWS IoT에 HTTPS 연결 생성을 위해 사용되는 포트 번호입니다. 유효한 값은 8443 또는 443입니다. 기본 값은 8443입니다. 자세한 내용은 포트 443에서 또는 네트워크 프록시를 통해 연결 단원을 참조하십시오.
ggMqttPort 선택 사항으로, 로컬 네트워크를 통한 MQTT 통신에 사용할 포트 번호입니다. 유효한 값은 1024 - 65535입니다. 기본 값은 8883입니다. 자세한 내용은 로컬 메시징을 위한 MQTT 포트 구성 단원을 참조하십시오.
ggHttpPort 선택 사항으로, AWS IoT Greengrass 서비스에 HTTPS 연결 생성을 위해 사용되는 포트 번호입니다. 유효한 값은 8443 또는 443입니다. 기본 값은 8443입니다. 자세한 내용은 포트 443에서 또는 네트워크 프록시를 통해 연결 단원을 참조하십시오.
keepAlive 선택 사항으로, MQTT KeepAlive 주기(초)입니다. 유효한 범위는 30~1200초입니다. 기본 값은 600입니다.
networkProxy 선택 사항으로, 연결할 프록시 서버를 정의하는 객체입니다. 프록시 서버는 HTTP 또는 HTTPS일 수 있습니다. 자세한 설명은 포트 443에서 또는 네트워크 프록시를 통해 연결 섹션을 참조하세요.
mqttOperationTimeout 선택 사항으로, Greengrass 코어가 AWS IoT Core에 대한 MQTT 연결에서 게시, 구독 또는 구독 취소 작업을 완료할 수 있는 시간(초)입니다. 기본값은 5입니다. 최소값은 5입니다.
ggDaemonPort 선택 사항으로, Greengrass 코어 IPC 포트 번호입니다.

이 속성은 AWS IoT Greengrass v1.11.0 이상에서 사용할 수 있습니다.

유효한 값은 1024~65535입니다. 기본값은 8000입니다.

systemComponentAuthTimeout 선택 사항으로, Greengrass 코어 IPC가 인증을 완료할 시간(밀리초) 입니다.

이 속성은 AWS IoT Greengrass v1.11.0 이상에서 사용할 수 있습니다.

유효한 값은 500~5000입니다. 기본값은 5000입니다.

실행 시간

필드 설명 참고
maxWorkItem개수

선택 사항으로, Greengrass 대몬(daemon)이 한 번에 처리할 수 있는 최대 작업 항목 수입니다. 이 제한을 초과하는 작업 항목은 무시됩니다.

작업 항목 대기열은 시스템 구성 요소, 사용자 정의 Lambda 함수 및 커넥터에서 공유됩니다.

기본값은 1,024입니다. 최대 값은 디바이스 하드웨어에 의해 제한됩니다.

이 값을 늘리면 AWS IoT Greengrass에서 사용하는 메모리가 증가합니다. 코어가 사용률이 높은 MQTT 메시지 트래픽을 수신할 것으로 예상되는 경우 이 값을 늘릴 수 있습니다.

maxConcurrentLimit

선택 사항으로, Greengrass 대몬(daemon)이 보유할 수 있는 최대 동시성 비고정 Lambda 작업자 수입니다. 사용자는 다른 정수를 지정하여 이 파라미터를 재정의할 수 있습니다.

기본값은 25입니다. 최소값은 lruSize에 의해 정의됩니다.

lruSize Optional. Defines the minimum value for maxConcurrentLimit. The default value is 25.
mountAllBlock디바이스 Optional. Enables AWS IoT Greengrass to use bind mounts to mount all block devices into a container after setting up the OverlayFS.

이 속성은 AWS IoT Greengrass v1.11.0 이상에서 사용할 수 있습니다.

유효 값은 yesno입니다. 기본 값은 no입니다.

/usr 디렉터리가 / 계층 구조 아래에 있지 않은 경우 이 값을 yes로 설정하십시오.

postStartHealthCheckTimeout Optional. The time (in milliseconds) after starting that the Greengrass daemon waits for the health check to finish. The default timeout is 30 seconds (30000 ms).
cgroup
useSystemd Indicates whether your device uses systemd. Valid values are yes or 아니요. Run the check_ggc_dependencies script in 모듈 1 to see if your device uses systemd.

crypto

crypto에는 PKCS#11 및 로컬 비밀 스토리지를 통해 하드웨어 보안 모듈(HSM)에서 프라이빗 키 스토리지를 지원하는 속성이 포함되어 있습니다. 자세한 내용은 AWS IoT Greengrass 핵심 보안 원칙, 하드웨어 보안 통합, AWS IoT Greengrass 코어에 암호 배포 단원을 참조하세요. HSM 및 파일 시스템의 프라이빗 키 스토리지 구성이 지원됩니다.

필드 설명 참고
caPath

AWS IoT 루트 CA의 절대 경로입니다.

file:///absolute/path/to/file 형식의 파일 URI여야 합니다.

참고
PKCS11
OpenSSLEngine

선택 사항으로, OpenSSL에 대한 PKCS#11 지원을 가능하게 하는 OpenSSL 엔진 .so 파일에 대한 절대 경로입니다.

파일 시스템에서는 파일에 대한 경로여야 합니다.

하드웨어 보안과 함께 Greengrass OTA 업데이트 에이전트를 사용하는 경우 이 속성이 필요합니다. 자세한 설명은 무선 업데이트에 대한 지원 구성 섹션을 참조하세요.

P11Provider

PKCS#11 구현의 libdl 로드 가능 라이브러리에 대한 절대 경로입니다.

파일 시스템에서는 파일에 대한 경로여야 합니다.

slotLabel

하드웨어 모듈을 식별하는 데 사용되는 슬롯 모듈입니다.

PKCS#11 레이블 사양을 준수해야 합니다.

slotUserPin

모듈에 대해 Greengrass 코어를 인증하는 데 사용되는 사용자 핀입니다.

구성된 프라이빗 키를 사용하여 C_Sign을 수행하려면 충분한 권한이 있어야 합니다.

principals
IoTCertificate The certificate and private key that the core uses to make requests to AWS IoT.
IoT 인증서. privateKeyPath

코어 프라이빗 키의 경로입니다.

파일 시스템 스토리지의 경우 file:///absolute/path/to/file 형식의 파일 URI여야 합니다.

HSM 스토리지의 경우 객체 레이블을 지정하는 RFC 7512 PKCS#11 경로여야 합니다.

IoTCertificate  .certificatePath

코어 디바이스 인증서의 절대 경로입니다.

file:///absolute/path/to/file 형식의 파일 URI여야 합니다.

MQTT ServerCertificate

선택 사항으로, 코어가 MQTT 서버 또는 게이트웨이로 작동하기 위해 인증서와 함께 사용하는 프라이빗 키입니다.

맷ServerCertificate . privateKeyPath

로컬 MQTT 서버 프라이빗 키의 경로입니다.

이 값은 로컬 MQTT 서버에 대한 고유한 프라이빗 키를 지정하는 데 사용합니다.

파일 시스템 스토리지의 경우 file:///absolute/path/to/file 형식의 파일 URI여야 합니다.

HSM 스토리지의 경우 객체 레이블을 지정하는 RFC 7512 PKCS#11 경로여야 합니다.

이 속성을 생략하면 AWS IoT Greengrass에서는 교체 설정을 기반으로 키를 교체합니다. 지정된 경우, 고객이 키 교체를 책임집니다.

SecretsManager The private key that secures the data key used for encryption. For more information, see AWS IoT Greengrass 코어에 암호 배포.
SecretsManager  .privateKeyPath

로컬 보안 관리자 프라이빗 키의 경로입니다.

RSA 키만 지원됩니다.

파일 시스템 스토리지의 경우 file:///absolute/path/to/file 형식의 파일 URI여야 합니다.

HSM 스토리지의 경우 객체 레이블을 지정하는 RFC 7512 PKCS#11 경로여야 합니다. PKCS#1 v1.5 패딩 메커니즘을 사용하여 프라이빗 키를 생성해야 합니다.

다음 구성 속성도 지원됩니다.

필드 설명 참고
mqttMaxConnectionRetryInterval

선택 사항으로, 연결이 삭제된 경우, MQTT 연결 재시도 간의 최대 간격(초)입니다.

부호 없는 정수로 이 값을 지정합니다. 기본값은 60입니다.

managedRespawn

선택 사항으로, 업데이트 전 OTA 에이전트에서 사용자 지정 코드를 실행해야 함을 나타냅니다.

유효한 값은 true 또는 false입니다. 자세한 설명은 AWS IoT Greengrass 코어 소프트웨어의 OTA 업데이트 섹션을 참조하세요.

writeDirectory

선택 사항으로, AWS IoT Greengrass가 모든 읽기-쓰기 리소스를 생성하는 쓰기 디렉터리입니다.

자세한 설명은 AWS IoT Greengrass를 위한 쓰기 디렉터리 구성 섹션을 참조하세요.

pidFileDirectory

선택 사항입니다. AWS IoT Greengrass는 프로세스 ID(PID)를 이 디렉터리에 저장합니다.

기본 값은 /var/run입니다.

Extended life versions

다음 버전의 AWS IoT Greengrass 코어 소프트웨어는 수명 연장 단계에 있습니다. 이 정보는 참고 용도로만 포함된 것입니다.

GGC v1.10
{ "coreThing" : { "caPath" : "root.ca.pem", "certPath" : "hash.cert.pem", "keyPath" : "hash.private.key", "thingArn" : "arn:partition:iot:region:account-id:thing/core-thing-name", "iotHost" : "host-prefix-ats.iot.region.amazonaws.com", "ggHost" : "greengrass-ats.iot.region.amazonaws.com", "keepAlive" : 600, "systemComponentAuthTimeout": 5000 }, "runtime" : { "maxWorkItemCount" : 1024, "maxConcurrentLimit" : 25, "lruSize": 25, "cgroup" : { "useSystemd" : "yes" } }, "managedRespawn" : false, "crypto" : { "principals" : { "SecretsManager" : { "privateKeyPath" : "file:///greengrass/certs/hash.private.key" }, "IoTCertificate" : { "privateKeyPath" : "file:///greengrass/certs/hash.private.key", "certificatePath" : "file:///greengrass/certs/hash.cert.pem" } }, "caPath" : "file:///greengrass/certs/root.ca.pem" } }

config.json 파일은 다음 속성을 지원합니다.

coreThing

필드 설명 참고
caPath

/greengrass-root/certs 디렉터리에 상대적인 AWS IoT 루트 CA의 경로입니다.

1.7.0 이전 버전과의 호환성을 위한 용도. crypto 객체가 있으면 이 속성이 무시됩니다.

참고
certPath

/greengrass-root/certs 디렉터리에 상대적인 코어 디바이스 인증서의 경로입니다.

1.7.0 이전 버전과의 호환성을 위한 용도. crypto 객체가 있으면 이 속성이 무시됩니다.
keyPath /greengrass-root/certs 디렉터리에 상대적인 코어 프라이빗 키의 경로입니다. 1.7.0 이전 버전과의 호환성을 위한 용도. crypto 객체가 있으면 이 속성이 무시됩니다.
thingArn AWS IoT Greengrass 코어 디바이스를 나타내는 AWS IoT 사물의 Amazon 리소스 이름(ARN)입니다. 코어 아래에서 또는 aws greengrass get-core-definition-version CLI 명령을 실행하여 AWS IoT Greengrass 콘솔에서 코어의 ARN을 찾습니다.
iotHost AWS IoT 엔드포인트입니다.

설정 아래에서 또는 aws iot describe-endpoint --endpoint-type iot:Data-ATS CLI 명령을 실행하여 AWS IoT 콘솔에서 엔드포인트를 찾습니다.

이 명령은 Amazon Trust Services(ATS) 엔드포인트를 반환합니다. 자세한 내용은 서버 인증 설명서를 참조하십시오.

참고

엔드포인트는 해당 인증서 유형과 일치해야 합니다.

엔드포인트는 해당 AWS 리전과 일치해야 합니다.

ggHost AWS IoT Greengrass 엔드포인트입니다.

호스트 접두사가 greengrass로 대체된 iotHost 엔드포인트입니다(예: greengrass-ats.iot.region.amazonaws.com). iotHost와 동일한 AWS 리전을 사용하십시오.

참고

엔드포인트는 해당 인증서 유형과 일치해야 합니다.

엔드포인트는 해당 AWS 리전과 일치해야 합니다.

iotMqttPort 선택 사항으로, AWS IoT과(와)의 MQTT 통신에 사용하는 포트 번호. 유효한 값은 8883 또는 443입니다. 기본 값은 8883입니다. 자세한 내용은 포트 443에서 또는 네트워크 프록시를 통해 연결 단원을 참조하십시오.
iotHttpPort 선택 사항으로, AWS IoT에 HTTPS 연결 생성을 위해 사용되는 포트 번호입니다. 유효한 값은 8443 또는 443입니다. 기본 값은 8443입니다. 자세한 내용은 포트 443에서 또는 네트워크 프록시를 통해 연결 단원을 참조하십시오.
ggMqttPort 선택 사항으로, 로컬 네트워크를 통한 MQTT 통신에 사용할 포트 번호입니다. 유효한 값은 1024 - 65535입니다. 기본 값은 8883입니다. 자세한 내용은 로컬 메시징을 위한 MQTT 포트 구성 단원을 참조하십시오.
ggHttpPort 선택 사항으로, AWS IoT Greengrass 서비스에 HTTPS 연결 생성을 위해 사용되는 포트 번호입니다. 유효한 값은 8443 또는 443입니다. 기본 값은 8443입니다. 자세한 내용은 포트 443에서 또는 네트워크 프록시를 통해 연결 단원을 참조하십시오.
keepAlive 선택 사항으로, MQTT KeepAlive 주기(초)입니다. 유효한 범위는 30~1200초입니다. 기본 값은 600입니다.
networkProxy 선택 사항으로, 연결할 프록시 서버를 정의하는 객체입니다. 프록시 서버는 HTTP 또는 HTTPS일 수 있습니다. 자세한 설명은 포트 443에서 또는 네트워크 프록시를 통해 연결 섹션을 참조하세요.
mqttOperationTimeout 선택 사항으로, Greengrass 코어가 AWS IoT Core에 대한 MQTT 연결에서 게시, 구독 또는 구독 취소 작업을 완료할 수 있는 시간(초)입니다.

이 속성은 AWS IoT Greengrass v1.10.2부터 사용할 수 있습니다.

기본값은 5입니다. 최소값은 5입니다.

실행 시간

필드 설명 참고
maxWorkItem개수

선택 사항으로, Greengrass 대몬(daemon)이 한 번에 처리할 수 있는 최대 작업 항목 수입니다. 이 제한을 초과하는 작업 항목은 무시됩니다.

작업 항목 대기열은 시스템 구성 요소, 사용자 정의 Lambda 함수 및 커넥터에서 공유됩니다.

기본값은 1,024입니다. 최대 값은 디바이스 하드웨어에 의해 제한됩니다.

이 값을 늘리면 AWS IoT Greengrass에서 사용하는 메모리가 증가합니다. 코어가 사용률이 높은 MQTT 메시지 트래픽을 수신할 것으로 예상되는 경우 이 값을 늘릴 수 있습니다.

maxConcurrentLimit

선택 사항으로, Greengrass 대몬(daemon)이 보유할 수 있는 최대 동시성 비고정 Lambda 작업자 수입니다. 사용자는 다른 정수를 지정하여 이 파라미터를 재정의할 수 있습니다.

기본값은 25입니다. 최소값은 lruSize에 의해 정의됩니다.

lruSize Optional. Defines the minimum value for maxConcurrentLimit. The default value is 25.
postStartHealthCheckTimeout Optional. The time (in milliseconds) after starting that the Greengrass daemon waits for the health check to finish. The default timeout is 30 seconds (30000 ms).
cgroup
useSystemd Indicates whether your device uses systemd. Valid values are yes or 아니요. Run the check_ggc_dependencies script in 모듈 1 to see if your device uses systemd.

crypto

crypto에는 PKCS#11 및 로컬 비밀 스토리지를 통해 하드웨어 보안 모듈(HSM)에서 프라이빗 키 스토리지를 지원하는 속성이 포함되어 있습니다. 자세한 내용은 AWS IoT Greengrass 핵심 보안 원칙, 하드웨어 보안 통합, AWS IoT Greengrass 코어에 암호 배포 단원을 참조하세요. HSM 및 파일 시스템의 프라이빗 키 스토리지 구성이 지원됩니다.

필드 설명 참고
caPath

AWS IoT 루트 CA의 절대 경로입니다.

file:///absolute/path/to/file 형식의 파일 URI여야 합니다.

참고
PKCS11
OpenSSLEngine

선택 사항으로, OpenSSL에 대한 PKCS#11 지원을 가능하게 하는 OpenSSL 엔진 .so 파일에 대한 절대 경로입니다.

파일 시스템에서는 파일에 대한 경로여야 합니다.

하드웨어 보안과 함께 Greengrass OTA 업데이트 에이전트를 사용하는 경우 이 속성이 필요합니다. 자세한 설명은 무선 업데이트에 대한 지원 구성 섹션을 참조하세요.

P11Provider

PKCS#11 구현의 libdl 로드 가능 라이브러리에 대한 절대 경로입니다.

파일 시스템에서는 파일에 대한 경로여야 합니다.

slotLabel

하드웨어 모듈을 식별하는 데 사용되는 슬롯 모듈입니다.

PKCS#11 레이블 사양을 준수해야 합니다.

slotUserPin

모듈에 대해 Greengrass 코어를 인증하는 데 사용되는 사용자 핀입니다.

구성된 프라이빗 키를 사용하여 C_Sign을 수행하려면 충분한 권한이 있어야 합니다.

principals
IoTCertificate The certificate and private key that the core uses to make requests to AWS IoT.
IoT 인증서. privateKeyPath

코어 프라이빗 키의 경로입니다.

파일 시스템 스토리지의 경우 file:///absolute/path/to/file 형식의 파일 URI여야 합니다.

HSM 스토리지의 경우 객체 레이블을 지정하는 RFC 7512 PKCS#11 경로여야 합니다.

IoTCertificate  .certificatePath

코어 디바이스 인증서의 절대 경로입니다.

file:///absolute/path/to/file 형식의 파일 URI여야 합니다.

MQTT ServerCertificate

선택 사항으로, 코어가 MQTT 서버 또는 게이트웨이로 작동하기 위해 인증서와 함께 사용하는 프라이빗 키입니다.

맷ServerCertificate . privateKeyPath

로컬 MQTT 서버 프라이빗 키의 경로입니다.

이 값은 로컬 MQTT 서버에 대한 고유한 프라이빗 키를 지정하는 데 사용합니다.

파일 시스템 스토리지의 경우 file:///absolute/path/to/file 형식의 파일 URI여야 합니다.

HSM 스토리지의 경우 객체 레이블을 지정하는 RFC 7512 PKCS#11 경로여야 합니다.

이 속성을 생략하면 AWS IoT Greengrass에서는 교체 설정을 기반으로 키를 교체합니다. 지정된 경우, 고객이 키 교체를 책임집니다.

SecretsManager The private key that secures the data key used for encryption. For more information, see AWS IoT Greengrass 코어에 암호 배포.
SecretsManager  .privateKeyPath

로컬 보안 관리자 프라이빗 키의 경로입니다.

RSA 키만 지원됩니다.

파일 시스템 스토리지의 경우 file:///absolute/path/to/file 형식의 파일 URI여야 합니다.

HSM 스토리지의 경우 객체 레이블을 지정하는 RFC 7512 PKCS#11 경로여야 합니다. PKCS#1 v1.5 패딩 메커니즘을 사용하여 프라이빗 키를 생성해야 합니다.

다음 구성 속성도 지원됩니다.

필드 설명 참고
mqttMaxConnectionRetryInterval

선택 사항으로, 연결이 삭제된 경우, MQTT 연결 재시도 간의 최대 간격(초)입니다.

부호 없는 정수로 이 값을 지정합니다. 기본값은 60입니다.

managedRespawn

선택 사항으로, 업데이트 전 OTA 에이전트에서 사용자 지정 코드를 실행해야 함을 나타냅니다.

유효한 값은 true 또는 false입니다. 자세한 설명은 AWS IoT Greengrass 코어 소프트웨어의 OTA 업데이트 섹션을 참조하세요.

writeDirectory

선택 사항으로, AWS IoT Greengrass가 모든 읽기-쓰기 리소스를 생성하는 쓰기 디렉터리입니다.

자세한 설명은 AWS IoT Greengrass를 위한 쓰기 디렉터리 구성 섹션을 참조하세요.

GGC v1.9
{ "coreThing" : { "caPath" : "root.ca.pem", "certPath" : "hash.cert.pem", "keyPath" : "hash.private.key", "thingArn" : "arn:partition:iot:region:account-id:thing/core-thing-name", "iotHost" : "host-prefix-ats.iot.region.amazonaws.com", "ggHost" : "greengrass-ats.iot.region.amazonaws.com", "keepAlive" : 600 }, "runtime" : { "cgroup" : { "useSystemd" : "yes" } }, "managedRespawn" : false, "crypto" : { "principals" : { "SecretsManager" : { "privateKeyPath" : "file:///greengrass/certs/hash.private.key" }, "IoTCertificate" : { "privateKeyPath" : "file:///greengrass/certs/hash.private.key", "certificatePath" : "file:///greengrass/certs/hash.cert.pem" } }, "caPath" : "file:///greengrass/certs/root.ca.pem" } }

config.json 파일은 다음 속성을 지원합니다.

coreThing

필드 설명 참고
caPath

/greengrass-root/certs 디렉터리에 상대적인 AWS IoT 루트 CA의 경로입니다.

1.7.0 이전 버전과의 호환성을 위한 용도. crypto 객체가 있으면 이 속성이 무시됩니다.

참고
certPath

/greengrass-root/certs 디렉터리에 상대적인 코어 디바이스 인증서의 경로입니다.

1.7.0 이전 버전과의 호환성을 위한 용도. crypto 객체가 있으면 이 속성이 무시됩니다.
keyPath /greengrass-root/certs 디렉터리에 상대적인 코어 프라이빗 키의 경로입니다. 1.7.0 이전 버전과의 호환성을 위한 용도. crypto 객체가 있으면 이 속성이 무시됩니다.
thingArn AWS IoT Greengrass 코어 디바이스를 나타내는 AWS IoT 사물의 Amazon 리소스 이름(ARN)입니다. 코어 아래에서 또는 aws greengrass get-core-definition-version CLI 명령을 실행하여 AWS IoT Greengrass 콘솔에서 코어의 ARN을 찾습니다.
iotHost AWS IoT 엔드포인트입니다.

설정 아래에서 또는 aws iot describe-endpoint --endpoint-type iot:Data-ATS CLI 명령을 실행하여 AWS IoT 콘솔에서 엔드포인트를 찾습니다.

이 명령은 Amazon Trust Services(ATS) 엔드포인트를 반환합니다. 자세한 내용은 서버 인증 설명서를 참조하십시오.

참고

엔드포인트는 해당 인증서 유형과 일치해야 합니다.

엔드포인트는 해당 AWS 리전과 일치해야 합니다.

ggHost AWS IoT Greengrass 엔드포인트입니다.

호스트 접두사가 greengrass로 대체된 iotHost 엔드포인트입니다(예: greengrass-ats.iot.region.amazonaws.com). iotHost와 동일한 AWS 리전을 사용하십시오.

참고

엔드포인트는 해당 인증서 유형과 일치해야 합니다.

엔드포인트는 해당 AWS 리전과 일치해야 합니다.

iotMqttPort 선택 사항으로, AWS IoT과(와)의 MQTT 통신에 사용하는 포트 번호. 유효한 값은 8883 또는 443입니다. 기본 값은 8883입니다. 자세한 내용은 포트 443에서 또는 네트워크 프록시를 통해 연결 단원을 참조하십시오.
iotHttpPort 선택 사항으로, AWS IoT에 HTTPS 연결 생성을 위해 사용되는 포트 번호입니다. 유효한 값은 8443 또는 443입니다. 기본 값은 8443입니다. 자세한 내용은 포트 443에서 또는 네트워크 프록시를 통해 연결 단원을 참조하십시오.
ggHttpPort 선택 사항으로, AWS IoT Greengrass 서비스에 HTTPS 연결 생성을 위해 사용되는 포트 번호입니다. 유효한 값은 8443 또는 443입니다. 기본 값은 8443입니다. 자세한 내용은 포트 443에서 또는 네트워크 프록시를 통해 연결 단원을 참조하십시오.
keepAlive 선택 사항으로, MQTT KeepAlive 주기(초)입니다. 유효한 범위는 30~1200초입니다. 기본 값은 600입니다.
networkProxy 선택 사항으로, 연결할 프록시 서버를 정의하는 객체입니다. 프록시 서버는 HTTP 또는 HTTPS일 수 있습니다. 자세한 설명은 포트 443에서 또는 네트워크 프록시를 통해 연결 섹션을 참조하세요.

실행 시간

필드 설명 참고
maxConcurrentLimit

선택 사항으로, Greengrass 대몬(daemon)이 보유할 수 있는 최대 동시성 비고정 Lambda 작업자 수입니다. 사용자는 다른 정수를 지정하여 이 파라미터를 재정의할 수 있습니다.

기본값은 25입니다. 최소값은 lruSize에 의해 정의됩니다.

lruSize Optional. Defines the minimum value for maxConcurrentLimit. The default value is 25.
postStartHealthCheckTimeout Optional. The time (in milliseconds) after starting that the Greengrass daemon waits for the health check to finish. The default timeout is 30 seconds (30000 ms).
cgroup
useSystemd Indicates whether your device uses systemd. Valid values are yes or 아니요. Run the check_ggc_dependencies script in 모듈 1 to see if your device uses systemd.

crypto

crypto 객체는 v1.7.0에서 추가되었습니다. 이 객체는 PKCS#11 및 로컬 보안 스토리지를 통해 HSM(하드웨어 보안 모듈)에 대한 프라이빗 키 스토리지를 지원하는 속성을 도입합니다. 자세한 내용은 AWS IoT Greengrass 핵심 보안 원칙, 하드웨어 보안 통합, AWS IoT Greengrass 코어에 암호 배포 단원을 참조하세요. HSM 및 파일 시스템의 프라이빗 키 스토리지 구성이 지원됩니다.

필드 설명 참고
caPath

AWS IoT 루트 CA의 절대 경로입니다.

file:///absolute/path/to/file 형식의 파일 URI여야 합니다.

참고
PKCS11
OpenSSLEngine

선택 사항으로, OpenSSL에 대한 PKCS#11 지원을 가능하게 하는 OpenSSL 엔진 .so 파일에 대한 절대 경로입니다.

파일 시스템에서는 파일에 대한 경로여야 합니다.

하드웨어 보안과 함께 Greengrass OTA 업데이트 에이전트를 사용하는 경우 이 속성이 필요합니다. 자세한 설명은 무선 업데이트에 대한 지원 구성 섹션을 참조하세요.

P11Provider

PKCS#11 구현의 libdl 로드 가능 라이브러리에 대한 절대 경로입니다.

파일 시스템에서는 파일에 대한 경로여야 합니다.

slotLabel

하드웨어 모듈을 식별하는 데 사용되는 슬롯 모듈입니다.

PKCS#11 레이블 사양을 준수해야 합니다.

slotUserPin

모듈에 대해 Greengrass 코어를 인증하는 데 사용되는 사용자 핀입니다.

구성된 프라이빗 키를 사용하여 C_Sign을 수행하려면 충분한 권한이 있어야 합니다.

principals
IoTCertificate The certificate and private key that the core uses to make requests to AWS IoT.
IoT 인증서. privateKeyPath

코어 프라이빗 키의 경로입니다.

파일 시스템 스토리지의 경우 file:///absolute/path/to/file 형식의 파일 URI여야 합니다.

HSM 스토리지의 경우 객체 레이블을 지정하는 RFC 7512 PKCS#11 경로여야 합니다.

IoTCertificate  .certificatePath

코어 디바이스 인증서의 절대 경로입니다.

file:///absolute/path/to/file 형식의 파일 URI여야 합니다.

MQTT ServerCertificate

선택 사항으로, 코어가 MQTT 서버 또는 게이트웨이로 작동하기 위해 인증서와 함께 사용하는 프라이빗 키입니다.

맷ServerCertificate . privateKeyPath

로컬 MQTT 서버 프라이빗 키의 경로입니다.

이 값은 로컬 MQTT 서버에 대한 고유한 프라이빗 키를 지정하는 데 사용합니다.

파일 시스템 스토리지의 경우 file:///absolute/path/to/file 형식의 파일 URI여야 합니다.

HSM 스토리지의 경우 객체 레이블을 지정하는 RFC 7512 PKCS#11 경로여야 합니다.

이 속성을 생략하면 AWS IoT Greengrass에서는 교체 설정을 기반으로 키를 교체합니다. 지정된 경우, 고객이 키 교체를 책임집니다.

SecretsManager The private key that secures the data key used for encryption. For more information, see AWS IoT Greengrass 코어에 암호 배포.
SecretsManager  .privateKeyPath

로컬 보안 관리자 프라이빗 키의 경로입니다.

RSA 키만 지원됩니다.

파일 시스템 스토리지의 경우 file:///absolute/path/to/file 형식의 파일 URI여야 합니다.

HSM 스토리지의 경우 객체 레이블을 지정하는 RFC 7512 PKCS#11 경로여야 합니다. PKCS#1 v1.5 패딩 메커니즘을 사용하여 프라이빗 키를 생성해야 합니다.

다음 구성 속성도 지원됩니다.

필드 설명 참고
mqttMaxConnectionRetryInterval

선택 사항으로, 연결이 삭제된 경우, MQTT 연결 재시도 간의 최대 간격(초)입니다.

부호 없는 정수로 이 값을 지정합니다. 기본값은 60입니다.

managedRespawn

선택 사항으로, 업데이트 전 OTA 에이전트에서 사용자 지정 코드를 실행해야 함을 나타냅니다.

유효한 값은 true 또는 false입니다. 자세한 설명은 AWS IoT Greengrass 코어 소프트웨어의 OTA 업데이트 섹션을 참조하세요.

writeDirectory

선택 사항으로, AWS IoT Greengrass가 모든 읽기-쓰기 리소스를 생성하는 쓰기 디렉터리입니다.

자세한 설명은 AWS IoT Greengrass를 위한 쓰기 디렉터리 구성 섹션을 참조하세요.

GGC v1.8
{ "coreThing" : { "caPath" : "root.ca.pem", "certPath" : "hash.cert.pem", "keyPath" : "hash.private.key", "thingArn" : "arn:aws:iot:region:account-id:thing/core-thing-name", "iotHost" : "host-prefix-ats.iot.region.amazonaws.com", "ggHost" : "greengrass-ats.iot.region.amazonaws.com", "keepAlive" : 600 }, "runtime" : { "cgroup" : { "useSystemd" : "yes" } }, "managedRespawn" : false, "crypto" : { "principals" : { "SecretsManager" : { "privateKeyPath" : "file:///greengrass/certs/hash.private.key" }, "IoTCertificate" : { "privateKeyPath" : "file:///greengrass/certs/hash.private.key", "certificatePath" : "file:///greengrass/certs/hash.cert.pem" } }, "caPath" : "file:///greengrass/certs/root.ca.pem" } }

config.json 파일은 다음 속성을 지원합니다.

coreThing

필드 설명 참고
caPath

/greengrass-root/certs 디렉터리에 상대적인 AWS IoT 루트 CA의 경로입니다.

1.7.0 이전 버전과의 호환성을 위한 용도. crypto 객체가 있으면 이 속성이 무시됩니다.

참고
certPath

/greengrass-root/certs 디렉터리에 상대적인 코어 디바이스 인증서의 경로입니다.

1.7.0 이전 버전과의 호환성을 위한 용도. crypto 객체가 있으면 이 속성이 무시됩니다.
keyPath /greengrass-root/certs 디렉터리에 상대적인 코어 프라이빗 키의 경로입니다. 1.7.0 이전 버전과의 호환성을 위한 용도. crypto 객체가 있으면 이 속성이 무시됩니다.
thingArn AWS IoT Greengrass 코어 디바이스를 나타내는 AWS IoT 사물의 Amazon 리소스 이름(ARN)입니다. 코어 아래에서 또는 aws greengrass get-core-definition-version CLI 명령을 실행하여 AWS IoT Greengrass 콘솔에서 코어의 ARN을 찾습니다.
iotHost AWS IoT 엔드포인트입니다.

설정 아래에서 또는 aws iot describe-endpoint --endpoint-type iot:Data-ATS CLI 명령을 실행하여 AWS IoT 콘솔에서 엔드포인트를 찾습니다.

이 명령은 Amazon Trust Services(ATS) 엔드포인트를 반환합니다. 자세한 내용은 서버 인증 설명서를 참조하십시오.

참고

엔드포인트는 해당 인증서 유형과 일치해야 합니다. 엔드포인트는 해당 AWS 리전과 일치해야 합니다.

ggHost AWS IoT Greengrass 엔드포인트입니다.

호스트 접두사가 greengrass로 대체된 iotHost 엔드포인트입니다(예: greengrass-ats.iot.region.amazonaws.com). iotHost와 동일한 AWS 리전을 사용하십시오.

참고

엔드포인트는 해당 인증서 유형과 일치해야 합니다. 엔드포인트는 해당 AWS 리전과 일치해야 합니다.

iotMqttPort 선택 사항으로, AWS IoT과(와)의 MQTT 통신에 사용하는 포트 번호. 유효한 값은 8883 또는 443입니다. 기본 값은 8883입니다. 자세한 내용은 포트 443에서 또는 네트워크 프록시를 통해 연결 단원을 참조하십시오.
iotHttpPort 선택 사항으로, AWS IoT에 HTTPS 연결 생성을 위해 사용되는 포트 번호입니다. 유효한 값은 8443 또는 443입니다. 기본 값은 8443입니다. 자세한 내용은 포트 443에서 또는 네트워크 프록시를 통해 연결 단원을 참조하십시오.
ggHttpPort 선택 사항으로, AWS IoT Greengrass 서비스에 HTTPS 연결 생성을 위해 사용되는 포트 번호입니다. 유효한 값은 8443 또는 443입니다. 기본 값은 8443입니다. 자세한 내용은 포트 443에서 또는 네트워크 프록시를 통해 연결 단원을 참조하십시오.
keepAlive 선택 사항으로, MQTT KeepAlive 주기(초)입니다. 유효한 범위는 30~1200초입니다. 기본 값은 600입니다.
networkProxy 선택 사항으로, 연결할 프록시 서버를 정의하는 객체입니다. 프록시 서버는 HTTP 또는 HTTPS일 수 있습니다. 자세한 설명은 포트 443에서 또는 네트워크 프록시를 통해 연결 섹션을 참조하세요.

실행 시간

필드 설명 참고
cgroup
useSystemd Indicates whether your device uses systemd. Valid values are yes or 아니요. Run the check_ggc_dependencies script in 모듈 1 to see if your device uses systemd.

crypto

crypto 객체는 v1.7.0에서 추가되었습니다. 이 객체는 PKCS#11 및 로컬 보안 스토리지를 통해 HSM(하드웨어 보안 모듈)에 대한 프라이빗 키 스토리지를 지원하는 속성을 도입합니다. 자세한 내용은 AWS IoT Greengrass 핵심 보안 원칙, 하드웨어 보안 통합, AWS IoT Greengrass 코어에 암호 배포 단원을 참조하세요. HSM 및 파일 시스템의 프라이빗 키 스토리지 구성이 지원됩니다.

필드 설명 참고
caPath

AWS IoT 루트 CA의 절대 경로입니다.

file:///absolute/path/to/file 형식의 파일 URI여야 합니다.

참고
PKCS11
OpenSSLEngine

선택 사항으로, OpenSSL에 대한 PKCS#11 지원을 가능하게 하는 OpenSSL 엔진 .so 파일에 대한 절대 경로입니다.

파일 시스템에서는 파일에 대한 경로여야 합니다.

하드웨어 보안과 함께 Greengrass OTA 업데이트 에이전트를 사용하는 경우 이 속성이 필요합니다. 자세한 설명은 무선 업데이트에 대한 지원 구성 섹션을 참조하세요.

P11Provider

PKCS#11 구현의 libdl 로드 가능 라이브러리에 대한 절대 경로입니다.

파일 시스템에서는 파일에 대한 경로여야 합니다.

slotLabel

하드웨어 모듈을 식별하는 데 사용되는 슬롯 모듈입니다.

PKCS#11 레이블 사양을 준수해야 합니다.

slotUserPin

모듈에 대해 Greengrass 코어를 인증하는 데 사용되는 사용자 핀입니다.

구성된 프라이빗 키를 사용하여 C_Sign을 수행하려면 충분한 권한이 있어야 합니다.

principals
IoTCertificate The certificate and private key that the core uses to make requests to AWS IoT.
IoT 인증서. privateKeyPath

코어 프라이빗 키의 경로입니다.

파일 시스템 스토리지의 경우 file:///absolute/path/to/file 형식의 파일 URI여야 합니다.

HSM 스토리지의 경우 객체 레이블을 지정하는 RFC 7512 PKCS#11 경로여야 합니다.

IoTCertificate  .certificatePath

코어 디바이스 인증서의 절대 경로입니다.

file:///absolute/path/to/file 형식의 파일 URI여야 합니다.

MQTT ServerCertificate

선택 사항으로, 코어가 MQTT 서버 또는 게이트웨이로 작동하기 위해 인증서와 함께 사용하는 프라이빗 키입니다.

맷ServerCertificate . privateKeyPath

로컬 MQTT 서버 프라이빗 키의 경로입니다.

이 값은 로컬 MQTT 서버에 대한 고유한 프라이빗 키를 지정하는 데 사용합니다.

파일 시스템 스토리지의 경우 file:///absolute/path/to/file 형식의 파일 URI여야 합니다.

HSM 스토리지의 경우 객체 레이블을 지정하는 RFC 7512 PKCS#11 경로여야 합니다.

이 속성을 생략하면 AWS IoT Greengrass에서는 교체 설정을 기반으로 키를 교체합니다. 지정된 경우, 고객이 키 교체를 책임집니다.

SecretsManager The private key that secures the data key used for encryption. For more information, see AWS IoT Greengrass 코어에 암호 배포.
SecretsManager  .privateKeyPath

로컬 보안 관리자 프라이빗 키의 경로입니다.

RSA 키만 지원됩니다.

파일 시스템 스토리지의 경우 file:///absolute/path/to/file 형식의 파일 URI여야 합니다.

HSM 스토리지의 경우 객체 레이블을 지정하는 RFC 7512 PKCS#11 경로여야 합니다. PKCS#1 v1.5 패딩 메커니즘을 사용하여 프라이빗 키를 생성해야 합니다.

다음 구성 속성도 지원됩니다.

필드 설명 참고
mqttMaxConnectionRetryInterval

선택 사항으로, 연결이 삭제된 경우, MQTT 연결 재시도 간의 최대 간격(초)입니다.

부호 없는 정수로 이 값을 지정합니다. 기본값은 60입니다.

managedRespawn

선택 사항으로, 업데이트 전 OTA 에이전트에서 사용자 지정 코드를 실행해야 함을 나타냅니다.

유효한 값은 true 또는 false입니다. 자세한 설명은 AWS IoT Greengrass 코어 소프트웨어의 OTA 업데이트 섹션을 참조하세요.

writeDirectory

선택 사항으로, AWS IoT Greengrass가 모든 읽기-쓰기 리소스를 생성하는 쓰기 디렉터리입니다.

자세한 설명은 AWS IoT Greengrass를 위한 쓰기 디렉터리 구성 섹션을 참조하세요.

GGC v1.7
{ "coreThing" : { "caPath" : "root.ca.pem", "certPath" : "hash.cert.pem", "keyPath" : "hash.private.key", "thingArn" : "arn:aws:iot:region:account-id:thing/core-thing-name", "iotHost" : "host-prefix-ats.iot.region.amazonaws.com", "ggHost" : "greengrass-ats.iot.region.amazonaws.com", "keepAlive" : 600 }, "runtime" : { "cgroup" : { "useSystemd" : "yes" } }, "managedRespawn" : false, "crypto" : { "principals" : { "SecretsManager" : { "privateKeyPath" : "file:///greengrass/certs/hash.private.key" }, "IoTCertificate" : { "privateKeyPath" : "file:///greengrass/certs/hash.private.key", "certificatePath" : "file:///greengrass/certs/hash.cert.pem" } }, "caPath" : "file:///greengrass/certs/root.ca.pem" } }

config.json 파일은 다음 속성을 지원합니다.

coreThing

필드 설명 참고
caPath

/greengrass-root/certs 디렉터리에 상대적인 AWS IoT 루트 CA의 경로입니다.

1.7.0 이전 버전과의 호환성을 위한 용도. crypto 객체가 있으면 이 속성이 무시됩니다.

참고
certPath

/greengrass-root/certs 디렉터리에 상대적인 코어 디바이스 인증서의 경로입니다.

1.7.0 이전 버전과의 호환성을 위한 용도. crypto 객체가 있으면 이 속성이 무시됩니다.
keyPath /greengrass-root/certs 디렉터리에 상대적인 코어 프라이빗 키의 경로입니다. 1.7.0 이전 버전과의 호환성을 위한 용도. crypto 객체가 있으면 이 속성이 무시됩니다.
thingArn AWS IoT Greengrass 코어 디바이스를 나타내는 AWS IoT 사물의 Amazon 리소스 이름(ARN)입니다. 코어 아래에서 또는 aws greengrass get-core-definition-version CLI 명령을 실행하여 AWS IoT Greengrass 콘솔에서 코어의 ARN을 찾습니다.
iotHost AWS IoT 엔드포인트입니다.

설정 아래에서 또는 aws iot describe-endpoint --endpoint-type iot:Data-ATS CLI 명령을 실행하여 AWS IoT 콘솔에서 엔드포인트를 찾습니다.

이 명령은 Amazon Trust Services(ATS) 엔드포인트를 반환합니다. 자세한 내용은 서버 인증 설명서를 참조하십시오.

참고

엔드포인트는 해당 인증서 유형과 일치해야 합니다. 엔드포인트는 해당 AWS 리전과 일치해야 합니다.

ggHost AWS IoT Greengrass 엔드포인트입니다.

호스트 접두사가 greengrass로 대체된 iotHost 엔드포인트입니다(예: greengrass-ats.iot.region.amazonaws.com). iotHost와 동일한 AWS 리전을 사용하십시오.

참고

엔드포인트는 해당 인증서 유형과 일치해야 합니다. 엔드포인트는 해당 AWS 리전과 일치해야 합니다.

iotMqttPort 선택 사항으로, AWS IoT과(와)의 MQTT 통신에 사용하는 포트 번호. 유효한 값은 8883 또는 443입니다. 기본 값은 8883입니다. 자세한 내용은 포트 443에서 또는 네트워크 프록시를 통해 연결 단원을 참조하십시오.
keepAlive 선택 사항으로, MQTT KeepAlive 주기(초)입니다. 유효한 범위는 30~1200초입니다. 기본 값은 600입니다.
networkProxy 선택 사항으로, 연결할 프록시 서버를 정의하는 객체입니다. 프록시 서버는 HTTP 또는 HTTPS일 수 있습니다. 자세한 설명은 포트 443에서 또는 네트워크 프록시를 통해 연결 섹션을 참조하세요.

실행 시간

필드 설명 참고
cgroup
useSystemd Indicates whether your device uses systemd. Valid values are yes or 아니요. Run the check_ggc_dependencies script in 모듈 1 to see if your device uses systemd.

crypto

v1.7.0에 추가된 crypto 객체는 PKCS#11 및 로컬 비밀 스토리지를 통해 하드웨어 보안 모듈(HSM)에 대한 프라이빗 키 스토리지를 지원하는 속성을 도입합니다. 자세한 내용은 하드웨어 보안 통합AWS IoT Greengrass 코어에 암호 배포 섹션을 참조하세요. HSM 및 파일 시스템의 프라이빗 키 스토리지 구성이 지원됩니다.

필드 설명 참고
caPath

AWS IoT 루트 CA의 절대 경로입니다.

file:///absolute/path/to/file 형식의 파일 URI여야 합니다.

참고
PKCS11
OpenSSLEngine

선택 사항으로, OpenSSL에 대한 PKCS#11 지원을 가능하게 하는 OpenSSL 엔진 .so 파일에 대한 절대 경로입니다.

파일 시스템에서는 파일에 대한 경로여야 합니다.

하드웨어 보안과 함께 Greengrass OTA 업데이트 에이전트를 사용하는 경우 이 속성이 필요합니다. 자세한 설명은 무선 업데이트에 대한 지원 구성 섹션을 참조하세요.

P11Provider

PKCS#11 구현의 libdl 로드 가능 라이브러리에 대한 절대 경로입니다.

파일 시스템에서는 파일에 대한 경로여야 합니다.

slotLabel

하드웨어 모듈을 식별하는 데 사용되는 슬롯 모듈입니다.

PKCS#11 레이블 사양을 준수해야 합니다.

slotUserPin

모듈에 대해 Greengrass 코어를 인증하는 데 사용되는 사용자 핀입니다.

구성된 프라이빗 키를 사용하여 C_Sign을 수행하려면 충분한 권한이 있어야 합니다.

principals
IoTCertificate The certificate and private key that the core uses to make requests to AWS IoT.
IoT 인증서. privateKeyPath

코어 프라이빗 키의 경로입니다.

파일 시스템 스토리지의 경우 file:///absolute/path/to/file 형식의 파일 URI여야 합니다.

HSM 스토리지의 경우 객체 레이블을 지정하는 RFC 7512 PKCS#11 경로여야 합니다.

IoTCertificate  .certificatePath

코어 디바이스 인증서의 절대 경로입니다.

file:///absolute/path/to/file 형식의 파일 URI여야 합니다.

MQTT ServerCertificate

선택 사항으로, 코어가 MQTT 서버 또는 게이트웨이로 작동하기 위해 인증서와 함께 사용하는 프라이빗 키입니다.

맷ServerCertificate . privateKeyPath

로컬 MQTT 서버 프라이빗 키의 경로입니다.

이 값은 로컬 MQTT 서버에 대한 고유한 프라이빗 키를 지정하는 데 사용합니다.

파일 시스템 스토리지의 경우 file:///absolute/path/to/file 형식의 파일 URI여야 합니다.

HSM 스토리지의 경우 객체 레이블을 지정하는 RFC 7512 PKCS#11 경로여야 합니다.

이 속성을 생략하면 AWS IoT Greengrass에서는 교체 설정을 기반으로 키를 교체합니다. 지정된 경우, 고객이 키 교체를 책임집니다.

SecretsManager The private key that secures the data key used for encryption. For more information, see AWS IoT Greengrass 코어에 암호 배포.
SecretsManager  .privateKeyPath

로컬 보안 관리자 프라이빗 키의 경로입니다.

RSA 키만 지원됩니다.

파일 시스템 스토리지의 경우 file:///absolute/path/to/file 형식의 파일 URI여야 합니다.

HSM 스토리지의 경우 객체 레이블을 지정하는 RFC 7512 PKCS#11 경로여야 합니다. PKCS#1 v1.5 패딩 메커니즘을 사용하여 프라이빗 키를 생성해야 합니다.

다음 구성 속성도 지원됩니다.

필드 설명 참고
mqttMaxConnectionRetryInterval

선택 사항으로, 연결이 삭제된 경우, MQTT 연결 재시도 간의 최대 간격(초)입니다.

부호 없는 정수로 이 값을 지정합니다. 기본값은 60입니다.

managedRespawn

선택 사항으로, 업데이트 전 OTA 에이전트에서 사용자 지정 코드를 실행해야 함을 나타냅니다.

유효한 값은 true 또는 false입니다. 자세한 설명은 AWS IoT Greengrass 코어 소프트웨어의 OTA 업데이트 섹션을 참조하세요.

writeDirectory

선택 사항으로, AWS IoT Greengrass가 모든 읽기-쓰기 리소스를 생성하는 쓰기 디렉터리입니다.

자세한 설명은 AWS IoT Greengrass를 위한 쓰기 디렉터리 구성 섹션을 참조하세요.

GGC v1.6
{ "coreThing": { "caPath": "root-ca-pem", "certPath": "cloud-pem-crt", "keyPath": "cloud-pem-key", "thingArn": "arn:aws:iot:region:account-id:thing/core-thing-name", "iotHost": "host-prefix.iot.region.amazonaws.com", "ggHost": "greengrass.iot.region.amazonaws.com", "keepAlive": 600, "mqttMaxConnectionRetryInterval": 60 }, "runtime": { "cgroup": { "useSystemd": "yes|no" } }, "managedRespawn": true, "writeDirectory": "/write-directory" }
참고

AWS IoT Greengrass 콘솔에서 기본 그룹 생성 옵션을 사용하는 경우, config.json 파일은 기본 구성을 지정하는 작동 상태로 코어 디바이스에 배포됩니다.

config.json 파일은 다음 속성을 지원합니다.

필드 설명 참고
caPath

/greengrass-root/certs 디렉터리에 상대적인 AWS IoT 루트 CA의 경로입니다.

파일을 /greengrass-root/certs에 저장합니다.

certPath

/greengrass-root/certs 디렉터리에 상대적인 AWS IoT Greengrass 코어 인증서의 경로입니다.

파일을 /greengrass-root/certs에 저장합니다.
keyPath /greengrass-root/certs 디렉터리에 상대적인 AWS IoT Greengrass 코어 프라이빗 키의 경로입니다. 파일을 /greengrass-root/certs에 저장합니다.
thingArn AWS IoT Greengrass 코어 디바이스를 나타내는 AWS IoT 사물의 Amazon 리소스 이름(ARN)입니다. 코어 아래에서 또는 aws greengrass get-core-definition-version CLI 명령을 실행하여 AWS IoT Greengrass 콘솔에서 코어의 ARN을 찾습니다.
iotHost AWS IoT 엔드포인트입니다. AWS IoT 콘솔의 설정에서 또는 aws iot describe-endpointCLI 명령을 실행하여 찾을 수 있습니다.
ggHost AWS IoT Greengrass 엔드포인트입니다. 이 값은 greengrass.iot.region.amazonaws.com 형식을 사용합니다. iotHost와 같은 리전을 사용합니다.
keepAlive MQTT KeepAlive 주기(초)입니다. 이 값은 선택 사항입니다. 기본값은 600입니다.
mqttMaxConnectionRetryInterval

연결이 삭제된 경우, MQTT 연결 재시도 간의 최대 간격(초)입니다.

부호 없는 정수로 이 값을 지정합니다. 이 값은 선택 사항입니다. 기본값은 60입니다.

useSystemd 디바이스가 systemd를 사용하는지 여부를 나타냅니다. 유효한 값은 yes 또는 no입니다. 디바이스가 systemd를 사용하는지 알아보려면 모듈 1에서 check_ggc_dependencies 스크립트를 실행합니다.
managedRespawn

선택적 over-the-air (OTA) 업데이트 기능으로, 이는 OTA 에이전트가 업데이트 전에 사용자 지정 코드를 실행해야 함을 나타냅니다.

유효한 값은 true 또는 false입니다. 자세한 설명은 AWS IoT Greengrass 코어 소프트웨어의 OTA 업데이트 섹션을 참조하세요.

writeDirectory

AWS IoT Greengrass가 모든 읽기-쓰기 리소스를 생성하는 쓰기 디렉터리입니다.

이 값은 선택 사항입니다. 자세한 설명은 AWS IoT Greengrass를 위한 쓰기 디렉터리 구성 섹션을 참조하세요.

GGC v1.5
{ "coreThing": { "caPath": "root-ca-pem", "certPath": "cloud-pem-crt", "keyPath": "cloud-pem-key", "thingArn": "arn:aws:iot:region:account-id:thing/core-thing-name", "iotHost": "host-prefix.iot.region.amazonaws.com", "ggHost": "greengrass.iot.region.amazonaws.com", "keepAlive": 600 }, "runtime": { "cgroup": { "useSystemd": "yes|no" } }, "managedRespawn": true }

config.json 파일은 /greengrass-root/config에 있고 다음 파라미터를 포함하고 있습니다.

필드 설명 참고
caPath

/greengrass-root/certs 폴더에 상대적인 AWS IoT 루트 CA의 경로입니다.

파일을 폴더 /greengrass-root/certs에 저장합니다.

certPath

/greengrass-root/certs 폴더에 상대적인 AWS IoT Greengrass 코어 인증서의 경로입니다.

파일을 폴더 /greengrass-root/certs에 저장합니다.
keyPath /greengrass-root/certs 폴더에 상대적인 AWS IoT Greengrass 코어 프라이빗 키의 경로입니다. 파일을 폴더 /greengrass-root/certs에 저장합니다.
thingArn AWS IoT Greengrass 코어 디바이스를 나타내는 AWS IoT 사물의 Amazon 리소스 이름(ARN)입니다. 코어 아래에서 또는 aws greengrass get-core-definition-version CLI 명령을 실행하여 AWS IoT Greengrass 콘솔에서 코어의 ARN을 찾습니다.
iotHost AWS IoT 엔드포인트입니다. AWS IoT 콘솔의 설정에서 찾거나 aws iot describe-endpoint 명령을 실행하여 찾을 수 있습니다.
ggHost AWS IoT Greengrass 엔드포인트입니다. 이 값은 greengrass.iot.region.amazonaws.com 형식을 사용합니다. iotHost와 같은 리전을 사용합니다.
keepAlive MQTT KeepAlive 주기(초)입니다. 이 값은 선택 사항입니다. 기본값은 600초입니다.
useSystemd 디바이스가 systemd를 사용하는지 여부를 나타냅니다. 유효한 값은 yes 또는 no입니다. 디바이스가 systemd를 사용하는지 알아보려면 모듈 1에서 check_ggc_dependencies 스크립트를 실행합니다.
managedRespawn

선택적 over-the-air (OTA) 업데이트 기능으로, 이는 OTA 에이전트가 업데이트 전에 사용자 지정 코드를 실행해야 함을 나타냅니다.

자세한 설명은 AWS IoT Greengrass 코어 소프트웨어의 OTA 업데이트 섹션을 참조하세요.

GGC v1.3
{ "coreThing": { "caPath": "root-ca-pem", "certPath": "cloud-pem-crt", "keyPath": "cloud-pem-key", "thingArn": "arn:aws:iot:region:account-id:thing/core-thing-name", "iotHost": "host-prefix.iot.region.amazonaws.com", "ggHost": "greengrass.iot.region.amazonaws.com", "keepAlive": 600 }, "runtime": { "cgroup": { "useSystemd": "yes|no" } }, "managedRespawn": true }

config.json 파일은 /greengrass-root/config에 있고 다음 파라미터를 포함하고 있습니다.

필드 설명 참고
caPath

/greengrass-root/certs 폴더에 상대적인 AWS IoT 루트 CA의 경로입니다.

파일을 폴더 /greengrass-root/certs에 저장합니다.

certPath

/greengrass-root/certs 폴더에 상대적인 AWS IoT Greengrass 코어 인증서의 경로입니다.

파일을 폴더 /greengrass-root/certs에 저장합니다.
keyPath /greengrass-root/certs 폴더에 상대적인 AWS IoT Greengrass 코어 프라이빗 키의 경로입니다. 파일을 폴더 /greengrass-root/certs에 저장합니다.
thingArn AWS IoT Greengrass 코어를 나타내는 AWS IoT 사물의 Amazon 리소스 이름(ARN)입니다. 이 값은 AWS IoT Greengrass 콘솔의 AWS IoT 사물에 대한 정의에서 찾을 수 있습니다.
iotHost AWS IoT 엔드포인트입니다. 이 값은 AWS IoT 콘솔의 설정에서 찾을 수 있습니다.
ggHost AWS IoT Greengrass 엔드포인트입니다. 이 값은 AWS IoT 콘솔의 설정에서 greengrass.가 앞에 추가된 상태로 찾을 수 있습니다.
keepAlive MQTT KeepAlive 주기(초)입니다. 이 값은 선택 사항입니다. 기본값은 600초입니다.
useSystemd 디바이스에서 systemd를 사용하는 경우, 이진 플래그입니다. 유효한 값은 yes 또는 no입니다. 모듈 1의 종속성 스크립트를 사용하여 디바이스가 systemd을 사용하는지 확인합니다.
managedRespawn

선택적 over-the-air (OTA) 업데이트 기능으로, 이는 OTA 에이전트가 업데이트 전에 사용자 지정 코드를 실행해야 함을 나타냅니다.

자세한 설명은 AWS IoT Greengrass 코어 소프트웨어의 OTA 업데이트 섹션을 참조하세요.

GGC v1.1
{ "coreThing": { "caPath": "root-ca-pem", "certPath": "cloud-pem-crt", "keyPath": "cloud-pem-key", "thingArn": "arn:aws:iot:region:account-id:thing/core-thing-name", "iotHost": "host-prefix.iot.region.amazonaws.com", "ggHost": "greengrass.iot.region.amazonaws.com", "keepAlive": 600 }, "runtime": { "cgroup": { "useSystemd": "yes|no" } } }

config.json 파일은 /greengrass-root/config에 있고 다음 파라미터를 포함하고 있습니다.

필드 설명 참고
caPath

/greengrass-root/certs 폴더에 상대적인 AWS IoT 루트 CA의 경로입니다.

파일을 폴더 /greengrass-root/certs에 저장합니다.

certPath

/greengrass-root/certs 폴더에 상대적인 AWS IoT Greengrass 코어 인증서의 경로입니다.

파일을 폴더 /greengrass-root/certs에 저장합니다.
keyPath /greengrass-root/certs 폴더에 상대적인 AWS IoT Greengrass 코어 프라이빗 키의 경로입니다. 파일을 폴더 /greengrass-root/certs에 저장합니다.
thingArn AWS IoT Greengrass 코어를 나타내는 AWS IoT 사물의 Amazon 리소스 이름(ARN)입니다. 이 값은 AWS IoT Greengrass 콘솔의 AWS IoT 사물에 대한 정의에서 찾을 수 있습니다.
iotHost AWS IoT 엔드포인트입니다. 이 값은 AWS IoT 콘솔의 설정에서 찾을 수 있습니다.
ggHost AWS IoT Greengrass 엔드포인트입니다. 이 값은 AWS IoT 콘솔의 설정에서 greengrass.가 앞에 추가된 상태로 찾을 수 있습니다.
keepAlive MQTT KeepAlive 주기(초)입니다. 이 값은 선택 사항입니다. 기본값은 600초입니다.
useSystemd 디바이스에서 systemd를 사용하는 경우, 이진 플래그입니다. 유효한 값은 yes 또는 no입니다. 모듈 1의 종속성 스크립트를 사용하여 디바이스가 systemd을 사용하는지 확인합니다.
GGC v1.0

AWS IoT Greengrass Core v1.0에서 config.jsongreengrass-root/configuration에 배포됩니다.

{ "coreThing": { "caPath": "root-ca-pem", "certPath": "cloud-pem-crt", "keyPath": "cloud-pem-key", "thingArn": "arn:aws:iot:region:account-id:thing/core-thing-name", "iotHost": "host-prefix.iot.region.amazonaws.com", "ggHost": "greengrass.iot.region.amazonaws.com", "keepAlive": 600 }, "runtime": { "cgroup": { "useSystemd": "yes|no" } } }

config.json 파일은 /greengrass-root/configuration에 있고 다음 파라미터를 포함하고 있습니다.

필드 설명 참고
caPath

/greengrass-root/configuration/certs 폴더에 상대적인 AWS IoT 루트 CA의 경로입니다.

파일을 폴더 /greengrass-root/configuration/certs에 저장합니다.

certPath

/greengrass-root/configuration/certs 폴더에 상대적인 AWS IoT Greengrass 코어 인증서의 경로입니다.

파일을 폴더 /greengrass-root/configuration/certs에 저장합니다.
keyPath /greengrass-root/configuration/certs 폴더에 상대적인 AWS IoT Greengrass 코어 프라이빗 키의 경로입니다. 파일을 폴더 /greengrass-root/configuration/certs에 저장합니다.
thingArn AWS IoT Greengrass 코어를 나타내는 AWS IoT 사물의 Amazon 리소스 이름(ARN)입니다. 이 값은 AWS IoT Greengrass 콘솔의 AWS IoT 사물에 대한 정의에서 찾을 수 있습니다.
iotHost AWS IoT 엔드포인트입니다. 이 값은 AWS IoT 콘솔의 설정에서 찾을 수 있습니다.
ggHost AWS IoT Greengrass 엔드포인트입니다.

이 값은 AWS IoT 콘솔의 설정에서 greengrass.가 앞에 추가된 상태로 찾을 수 있습니다.

keepAlive MQTT KeepAlive 주기(초)입니다. 이 값은 선택 사항입니다. 기본값은 600초입니다.
useSystemd 디바이스에서 systemd를 사용하는 경우 이진 플래그입니다. 유효한 값은 yes 또는 no입니다. 모듈 1의 종속성 스크립트를 사용하여 디바이스가 systemd을 사용하는지 확인합니다.

서비스 엔드포인트는 루트 CA 인증서 유형과 일치해야 합니다

AWS IoT Core 및 AWS IoT Greengrass 엔드포인트는 디바이스에 있는 루트 CA 인증서 유형과 일치해야 합니다. 엔드포인트와 인증서 유형이 일치하지 않으면 디바이스와 AWS IoT Core 또는 AWS IoT Greengrass 간의 인증 시도가 실패합니다. 자세한 내용은 AWS IoT 개발자 안내서서버 인증을 참조하세요.

디바이스에서 Amazon Trust Services(ATS) 루트 CA 인증서(선호되는 방법)를 사용하는 경우, 디바이스 관리 및 검색 데이터 영역 작업에도 ATS 엔드포인트를 사용해야 합니다. AWS IoT Core 엔드포인트에 대한 다음 구문과 같이 ATS 엔드포인트에는 ats 세그먼트가 포함됩니다.

prefix-ats.iot.region.amazonaws.com
참고

이전 버전과의 호환성을 위해 AWS IoT Greengrass 현재 일부 AWS 리전 버전에서는 레거시 VeriSign 루트 CA 인증서 및 엔드포인트를 지원합니다. 레거시 VeriSign 루트 CA 인증서를 사용하는 경우 ATS 엔드포인트를 만들고 ATS 루트 CA 인증서를 대신 사용하는 것이 좋습니다. 그렇지 않을 경우 해당 레거시 엔드포인트를 사용하십시오. 자세한 내용은 Amazon Web Services 일반 참조지원되는 레거시 엔드포인트 섹션을 참조하세요.

config.json의 엔드포인트

Greengrass 코어 디바이스에서 엔드포인트는 config.json 파일의 coreThing 객체에 지정됩니다. iotHost 속성은 AWS IoT Core 엔드포인트를 나타냅니다. ggHost 속성은 AWS IoT Greengrass 엔드포인트를 나타냅니다. 다음 예제 코드 조각에서 이러한 속성은 ATS 엔드포인트를 지정합니다.

{ "coreThing" : { ... "iotHost" : "abcde1234uwxyz-ats.iot.us-west-2.amazonaws.com", "ggHost" : "greengrass-ats.iot.us-west-2.amazonaws.com", ... },
AWS IoT Core 엔드포인트

적절한 --endpoint-type 파라미터와 함께 aws iot describe-endpoint CLI 명령을 실행하여 AWS IoT Core 엔드포인트를 가져올 수 있습니다.

  • ATS 서명 엔드포인트를 반환하려면 다음을 실행합니다.

    aws iot describe-endpoint --endpoint-type iot:Data-ATS
  • VeriSign 서명된 레거시 엔드포인트를 반환하려면 다음을 실행하십시오.

    aws iot describe-endpoint --endpoint-type iot:Data
AWS IoT Greengrass 엔드포인트

AWS IoT Greengrass 엔드포인트는 호스트 접두사가 greengrass로 대체된 iotHost 엔드포인트입니다. 예를 들어, ATS 서명 엔드포인트는 greengrass-ats.iot.region.amazonaws.com입니다. 이는 해당 AWS IoT Core 엔드포인트와 동일한 리전을 사용합니다.

포트 443에서 또는 네트워크 프록시를 통해 연결

이 기능은 AWS IoT Greengrass 코어 v1.7 이상에 사용할 수 있습니다.

Greengrass 코어는 TLS 클라이언트 인증으로 MQTT 메시징 프로토콜을 사용해 AWS IoT Core와 통신합니다. 일반적으로 MQTT over TLS는 포트 8883을 사용합니다. 그러나 보안 조치로서 제한적 환경 하에서 작은 범위의 TCP 포트로의 인바운드 및 아웃바운드 트래픽이 제한될 수 있습니다. 예를 들어, 기업 방화벽은 HTTPS 트래픽용 포트 443을 열지만 MQTT 트래픽용 포트 8883과 같이 비교적 일반적이지 않은 프로토콜에 사용되는 기타 포트를 닫을 수 있습니다. 다른 제한적 환경에서는 모든 트래픽이 인터넷 연결 전에 HTTP 프록시를 경유해야 할 수 있습니다.

이와 같은 시나리오에서 통신을 활성화해야 할 경우 AWS IoT Greengrass에서는 다음 구성이 허용됩니다.

  • 포트 443을 통해 TLS 클라이언트 인증을 사용하는 MQTT. 네트워크에서 포트 443에 대한 연결을 허용하는 경우 MQTT 트래픽에 기본 포트(8883) 대신 포트 443을 사용하도록 코어를 구성할 수 있습니다. 이는 포트 443으로 직접 연결되거나 네트워크 프록시 서버를 통해 연결되는 것일 수 있습니다.

    AWS IoT Greengrass는 ALPN(Application Layer Protocol Network) TLS 확장을 사용해 이러한 연결을 지원합니다. 기본 구성과 마찬가지로 포트 443에서의 MQTT over TLS는 인증서 기반 클라이언트 인증을 사용합니다.

    포트 443에 대한 직접 연결을 사용하도록 구성된 경우 코어는 AWS IoT Greengrass 소프트웨어에 대한 over-the-air (OTA) 업데이트를 지원합니다. 이 지원을 위해서는 AWS IoT Greengrass 코어 v1.9.3 이상이 필요합니다.

  • 포트 443을 통한 HTTPS 통신. AWS IoT Greengrass는 기본적으로 포트 8443을 통해 HTTPS 트래픽을 보내지만 포트 443을 사용하도록 구성할 수 있습니다.

  • 네트워크 프록시를 통한 연결. Greengrass 코어에 연결을 위한 중간 역할을 수행하도록 네트워크 프록시 서버를 구성할 수 있습니다. 기본 인증과 HTTP 및 HTTPS 프록시만 지원됩니다.

    프록시 구성은 http_proxy, https_proxyno_proxy 환경 변수를 통해 사용자 정의 Lambda 함수로 전달됩니다. 프록시를 통해 연결하려면 사용자 정의 Lambda 함수가 이러한 전달된 설정을 사용해야 합니다. boto3 또는 cURL 및 python requests 패키지와 같은 연결을 만드는 데 Lambda 함수가 사용하는 공통 라이브러리는 일반적으로 이러한 환경 변수를 기본값으로 사용합니다. 또한 Lambda 함수가 이러한 동일한 환경 변수를 지정하는 경우 AWS IoT Greengrass가 이를 재정의하지 않습니다.

    중요

    네트워크 프록시를 사용하도록 구성된 Greengrass 코어는 OTA 업데이트를 지원하지 않습니다.

포트 443을 통해 MQTT를 구성하려면

이 기능을 사용하려면 AWS IoT Greengrass 코어 v1.7 이상이 필요합니다.

이 절차를 통해 Greengrass 코어는 AWS IoT Core의 MQTT 메시징에 포트 443을 사용할 수 있습니다.

  1. 다음 명령을 실행해 Greengrass 대몬(daemon)을 중단합니다.

    cd /greengrass-root/ggc/core/ sudo ./greengrassd stop
  2. su 사용자로서 편집을 하려면 greengrass-root/config/config.json을 엽니다.

  3. 다음 예제에 나와 있는 것처럼 coreThing 객체에서 iotMqttPort 속성을 추가하고 그 값을 443으로 설정합니다.

    { "coreThing" : { "caPath" : "root.ca.pem", "certPath" : "12345abcde.cert.pem", "keyPath" : "12345abcde.private.key", "thingArn" : "arn:aws:iot:us-west-2:123456789012:thing/core-thing-name", "iotHost" : "abcd123456wxyz-ats.iot.us-west-2.amazonaws.com", "iotMqttPort" : 443, "ggHost" : "greengrass-ats.iot.us-west-2.amazonaws.com", "keepAlive" : 600 }, ... }
  4. 대몬(daemon)을 시작합니다.

    cd /greengrass-root/ggc/core/ sudo ./greengrassd start

 

포트 443을 통해 HTTPS를 구성하려면

이 기능을 사용하려면 AWS IoT Greengrass 코어 v1.8 이상이 필요합니다.

이 절차에서는 HTTPS 통신에 포트 443을 사용하도록 코어를 구성합니다.

  1. 다음 명령을 실행해 Greengrass 대몬(daemon)을 중단합니다.

    cd /greengrass-root/ggc/core/ sudo ./greengrassd stop
  2. su 사용자로서 편집을 하려면 greengrass-root/config/config.json을 엽니다.

  3. 다음 예제에 나와 있는 것처럼 coreThing 객체에서 iotHttpPortggHttpPort 속성을 추가합니다.

    { "coreThing" : { "caPath" : "root.ca.pem", "certPath" : "12345abcde.cert.pem", "keyPath" : "12345abcde.private.key", "thingArn" : "arn:aws:iot:us-west-2:123456789012:thing/core-thing-name", "iotHost" : "abcd123456wxyz-ats.iot.us-west-2.amazonaws.com", "iotHttpPort" : 443, "ggHost" : "greengrass-ats.iot.us-west-2.amazonaws.com", "ggHttpPort" : 443, "keepAlive" : 600 }, ... }
  4. 대몬(daemon)을 시작합니다.

    cd /greengrass-root/ggc/core/ sudo ./greengrassd start

 

네트워크 프록시를 구성하려면

이 기능을 사용하려면 AWS IoT Greengrass 코어 v1.7 이상이 필요합니다.

이 절차에서는 AWS IoT Greengrass가 HTTP 또는 HTTPS 네트워크 프록시를 통해 인터넷에 연결합니다.

  1. 다음 명령을 실행해 Greengrass 대몬(daemon)을 중단합니다.

    cd /greengrass-root/ggc/core/ sudo ./greengrassd stop
  2. su 사용자로서 편집을 하려면 greengrass-root/config/config.json을 엽니다.

  3. 다음 예제와 같이 coreThing 객체에서 networkProxy 객체를 추가합니다.

    { "coreThing" : { "caPath" : "root.ca.pem", "certPath" : "12345abcde.cert.pem", "keyPath" : "12345abcde.private.key", "thingArn" : "arn:aws:iot:us-west-2:123456789012:thing/core-thing-name", "iotHost" : "abcd123456wxyz-ats.iot.us-west-2.amazonaws.com", "ggHost" : "greengrass-ats.iot.us-west-2.amazonaws.com", "keepAlive" : 600, "networkProxy": { "noProxyAddresses" : "http://128.12.34.56,www.mywebsite.com", "proxy" : { "url" : "https://my-proxy-server:1100", "username" : "Mary_Major", "password" : "pass@word1357" } } }, ... }
  4. 대몬(daemon)을 시작합니다.

    cd /greengrass-root/ggc/core/ sudo ./greengrassd start

networkProxy 객체

networkProxy 객체를 사용하여 네트워크 프록시 관련 정보를 지정합니다. 이 객체에는 다음 속성이 있습니다.

필드 설명
noProxyAddresses

선택 사항으로, 프록시에서 제외되는 IP 주소 또는 호스트 이름을 쉼표로 구분한 목록입니다.

proxy

연결할 프록시입니다. 프록시에는 다음과 같은 속성이 있습니다.

  • url. scheme://userinfo@host:port 형식으로 표시되는 프록시 서버의 URL입니다.

    • scheme. 체계입니다. http 또는 https이어야 합니다.

    • userinfo. 선택 사항. 사용자 이름 및 암호 정보입니다. 지정한 경우 usernamepassword 필드는 무시됩니다.

    • host. 프록시 서버의 호스트 이름 또는 IP 주소입니다.

    • port. 선택 사항. 포트 번호입니다. 지정되지 않은 경우 다음 기본값이 사용됩니다.

      • http: 80

      • https: 443

  • username. 선택 사항. 프록시 서버로 인증하는 데 사용되는 사용자 이름입니다.

  • password. 선택 사항. 프록시 서버로 인증하는 데 사용되는 암호입니다.

엔드포인트 허용

Greengrass 디바이스와 AWS IoT Core 또는 AWS IoT Greengrass 간의 통신은 인증이 필요합니다. 이 인증은 등록된 X.509 디바이스 인증서와 암호화 키를 기반으로 수행됩니다. 인증된 요청이 추가로 암호화되지 않고 프록시를 통해 전달되도록 하려면 다음 엔드포인트를 허용하십시오.

엔드포인트 포트 설명
greengrass.region.amazonaws.com 443

그룹 관리를 위한 제어 플레인 작업에 사용됩니다.

prefix-ats.iot.region.amazonaws.com

또는

prefix.iot.region.amazonaws.com

MQTT: 8883 또는 443

HTTPS: 8443 또는 443

섀도우 동기화와 같이 디바이스 관리를 위한 데이터 플레인 작업에 사용됩니다.

코어 및 클라이언트 디바이스가 Amazon Trust Services 루트 CA 인증서(선호됨)를 사용하는지, 레거시 루트 CA 인증서를 사용하는지 또는 둘 다를 사용하는지에 따라 엔드포인트 하나 또는 둘 다를 사용하도록 허용합니다. 자세한 설명은 서비스 엔드포인트는 루트 CA 인증서 유형과 일치해야 합니다 섹션을 참조하세요.

greengrass-ats.iot.region.amazonaws.com

또는

greengrass.iot.region.amazonaws.com

8443 또는 443

디바이스 검색 작업에 사용됩니다.

코어 및 클라이언트 디바이스가 Amazon Trust Services 루트 CA 인증서(선호됨)를 사용하는지, 레거시 루트 CA 인증서를 사용하는지 또는 둘 다를 사용하는지에 따라 엔드포인트 하나 또는 둘 다를 사용하도록 허용합니다. 자세한 설명은 서비스 엔드포인트는 루트 CA 인증서 유형과 일치해야 합니다 섹션을 참조하세요.

참고

포트 443에서 연결하는 클라이언트는 ALPN(Application Layer Protocol Negotiation) TLS 확장을 구현하고 ProtocolNameListx-amzn-http-caProtocolName으로 전달해야 합니다. 자세한 정보는 AWS IoT 개발자 안내서프로토콜을 참조하세요.

*.s3.amazonaws.com 443

배포 작업 및 over-the-air 업데이트에 사용됩니다. 엔드포인트는 내부적으로 제어되고 언제든 변경될 수 있으므로 이 형식에는 * 문자가 포함됩니다.

logs.region.amazonaws.com 443

CloudWatch에 로그를 쓰도록 Greengrass 그룹을 구성한 경우 필요합니다.

AWS IoT Greengrass를 위한 쓰기 디렉터리 구성

이 기능은 AWS IoT Greengrass 코어 v1.6 이상에 사용할 수 있습니다.

기본적으로 AWS IoT Greengrass 코어 소프트웨어는 AWS IoT Greengrass이(가) 모든 읽기 및 쓰기 작업을 수행하는 단일 루트 디렉터리 아래에 배포됩니다. 하지만 디렉터리 및 파일 생성을 비롯한 모든 쓰기 작업에 대해 별도의 디렉터리를 사용하도록 AWS IoT Greengrass를 구성할 수도 있습니다. 이 경우 AWS IoT Greengrass는 2개의 최상위 디렉터리를 사용합니다.

  • 하나는 읽기-쓰기로 남겨두거나 선택에 따라 읽기 전용으로 설정할 수 있는 greengrass-root 디렉터리입니다. 여기에는 AWS IoT Greengrass 코어 소프트웨어와 런타임 동안 변경이 불가능한 상태로 유지되어야 하는 기타 중요한 구성 요소(예: 인증서 및 config.json)가 포함되어 있습니다.

  • 또 하나는 지정된 쓰기 디렉터리입니다. 여기에는 쓰기 가능한 내용(예: 로그, 상태 정보 및 배포된 사용자 정의 Lambda 함수)이 포함되어 있습니다.

이 구성은 다음과 같은 디렉터리 구조의 결과입니다.

Greengrass 루트 디렉터리
greengrass-root/ |-- certs/ | |-- root.ca.pem | |-- hash.cert.pem | |-- hash.private.key | |-- hash.public.key |-- config/ | |-- config.json |-- ggc/ | |-- packages/ | |-- package-version/ | |-- bin/ | |-- daemon | |-- greengrassd | |-- lambda/ | |-- LICENSE/ | |-- release_notes_package-version.html | |-- runtime/ | |-- java8/ | |-- nodejs8.10/ | |-- python3.8/ | |-- core/
쓰기 디렉터리
write-directory/ |-- packages/ | |-- package-version/ | |-- ggc_root/ | |-- rootfs_nosys/ | |-- rootfs_sys/ | |-- var/ |-- deployment/ | |-- group/ | |-- group.json | |-- lambda/ | |-- mlmodel/ |-- var/ | |-- log/ | |-- state/

 

쓰기 디렉터리를 구성하려면
  1. 다음 명령을 실행해 AWS IoT Greengrass 대몬(daemon)을 중단합니다.

    cd /greengrass-root/ggc/core/ sudo ./greengrassd stop
  2. su 사용자로서 편집을 하려면 greengrass-root/config/config.json을 엽니다.

  3. 아래 예제에서와 같이 파라미터로 writeDirectory를 추가하고 대상 디렉터리에 대한 경로를 지정합니다.

    { "coreThing": { "caPath": "root-CA.pem", "certPath": "hash.pem.crt", ... }, ... "writeDirectory" : "/write-directory" }
    참고

    원하는 만큼 자주 writeDirectory 설정을 업데이트할 수 있습니다. 설정이 업데이트되고 나면 AWS IoT Greengrass은(는) 다음에 시작할 때 새로 지정된 쓰기 디렉터리를 사용하지만, 이전의 쓰기 디렉터리에서 내용을 마이그레이션하지는 않습니다.

  4. 쓰기 디렉터리가 구성되면 이제 선택에 따라 greengrass-root 디렉터리를 읽기 전용으로 설정할 수 있습니다. 자세한 지침은 Greengrass 루트 디렉터리를 읽기 전용으로 설정하는 방법을 참조하십시오.

    그렇지 않으면 AWS IoT Greengrass 대몬(daemon)을 시작합니다.

    cd /greengrass-root/ggc/core/ sudo ./greengrassd start

 

Greengrass 루트 디렉터리를 읽기 전용으로 설정하려면

Greengrass 루트 디렉터리를 읽기 전용으로 설정하고 싶은 경우에만 이 단계를 수행합니다. 시작하기 전에 쓰기 디렉터리를 구성해야 합니다.

  1. 필요한 디렉터리에 대한 액세스 권한을 부여하십시오:

    1. config.json 소유자에게 읽기 및 쓰기 권한을 제공합니다.

      sudo chmod 0600 /greengrass-root/config/config.json
    2. ggc_user를 인증서 및 시스템 Lambda 디렉터리의 소유자로 설정합니다.

      sudo chown -R ggc_user:ggc_group /greengrass-root/certs/ sudo chown -R ggc_user:ggc_group /greengrass-root/ggc/packages/1.11.6/lambda/
      참고

      ggc_user 및 ggc_group 계정은 시스템 Lambda 함수를 실행하는 데 기본적으로 사용됩니다. 다른 계정을 사용하도록 그룹 레벨 기본 액세스 자격 증명을 구성한 경우 그 대신 해당 사용자(UID) 및 그룹(GID)에게 권한을 부여해야 합니다.

  2. 원하는 메커니즘을 사용하여 greengrass-root 디렉터리를 읽기 전용으로 설정합니다.

    참고

    greengrass-root 디렉터리를 읽기 전용으로 설정하는 한 가지 방법은 디렉터리를 읽기 전용으로 마운트하는 것입니다. 하지만 마운트된 디렉터리의 AWS IoT Greengrass Core 소프트웨어에 over-the-air (OTA) 업데이트를 적용하려면 먼저 디렉터리를 마운트 해제한 다음 업데이트 후 다시 마운트해야 합니다. 이러한 umountmount 작업들을 ota_pre_updateota_post_update 스크립트에 추가할 수 있습니다. OTA 업데이트에 대한 자세한 내용은 Greengrass OTA 업데이트 에이전트OTA 업데이트가 지원되는 관리형 Respawn 섹션을 참조하십시오.

  3. 대몬(daemon)을 시작합니다.

    cd /greengrass-root/ggc/core/ sudo ./greengrassd start

    1단계에서의 권한이 올바르게 설정되지 않으면 대몬(daemon)이 시작되지 않습니다.

MQTT 설정 구성

AWS IoT Greengrass 환경에서 로컬 디바이스, Lambda 함수, 커넥터 및 시스템 구성 요소는 서로 통신하고 AWS IoT Core와 통신할 수 있습니다. 모든 통신은 엔터티 간의 MQTT 통신을 인증하는 구독을 관리하는 코어를 거칩니다.

AWS IoT Greengrass에서 구성할 수 있는 MQTT 설정에 대한 자세한 내용은 다음 섹션을 참조하십시오.

참고

OPC-UA는 산업 통신을 위한 정보 교환 표준입니다. Greengrass 코어에서 OPC-UA에 대한 지원을 구현하려면 IoT 커넥터를 사용할 수 있습니다. SiteWise 이 커넥터는 OPC-UA 서버의 산업용 디바이스 데이터를 AWS IoT SiteWise의 자산 속성으로 보냅니다.

서비스 품질 메시지

AWS IoT Greengrass은 구성과 통신 대상 및 방향에 따라 QoS(서비스 품질) 수준 0 또는 1을 지원합니다. Greengrass 코어는 클라이언트(AWS IoT Core와의 통신용)와 메시지 브로커(로컬 네트워크상의 통신용) 역할을 모두 수행합니다.


                    클라이언트 및 로컬 메시지 브로커 역할을 하는 코어.

MQTT 및 QoS에 대한 자세한 내용은 MQTT 웹 사이트에서 시작하기를 참조하십시오.

AWS 클라우드와의 통신
  • 아웃바운드 메시지는 QoS 1을 사용

    코어는 QoS 1을 사용하여 AWS 클라우드 대상으로 보내는 메시지를 전송합니다. AWS IoT Greengrass에서는 MQTT 메시지 대기열을 사용하여 이러한 메시지를 처리합니다. AWS IoT에서 메시지 전송이 확인되지 않으면 메시지가 나중에 재시도되도록 스풀링됩니다. 대기열이 가득 찼을 때는 메시지를 재시도할 수 없습니다. 메시지 전송 확인은 간헐적인 연결로 인한 데이터 손실을 최소화하는 데 도움이 될 수 있습니다.

    AWS IoT로 아웃바운드 메시지는 QoS 1을 사용하므로, Greengrass 코어가 메시지를 보낼 수 있는 최대 속도는 코어와 AWS IoT 사이의 지연 시간에 따라 달라집니다. 코어는 메시지를 보낼 때마다 AWS IoT가 메시지를 승인할 때까지 기다렸다가 다음 메시지를 전송합니다. 예를 들어 코어와 AWS 리전 사이의 왕복 시간이 50밀리초인 경우 코어는 초당 최대 20개의 메시지를 보낼 수 있습니다. 코어가 연결되는 AWS 리전을 선택할 때는 이 동작을 고려하세요. AWS 클라우드에 대용량 IoT 데이터를 수집하려면 스트림 관리자를 사용할 수 있습니다.

    AWS 클라우드 대상으로 보내는 메시지를 유지할 수 있도록 로컬 스토리지 캐시를 구성하는 방법을 비롯한 MQTT 메시지 대기열에 대한 자세한 내용은 클라우드 대상을 위한 MQTT 메시지 대기열 섹션을 참조하세요.

  • 인바운드 메시지는 QoS 0(기본값) 또는 QoS 1을 사용

    기본적으로 코어는 QoS 0로 AWS 클라우드 소스의 메시지를 구독합니다. 영구 세션을 활성화하면 코어가 QoS 1로 구독합니다. 이렇게 하면 간헐적인 연결로 인한 데이터 손실을 최소화할 수 있습니다. 이러한 구독에 대한 QoS를 관리하려면 로컬 스풀러 시스템 구성 요소에 대한 지속성 설정을 구성합니다.

    코어가 AWS 클라우드 대상에서 영구 세션을 설정하도록 활성화하는 방법을 포함한 자세한 내용은 AWS IoT Core를 사용하는 MQTT 영구 세션 섹션을 참조하세요.

로컬 대상과의 통신

모든 로컬 통신은 QoS 0을 사용합니다. 코어는 Greengrass Lambda 함수, 커넥터 또는 클라이언트 디바이스 같은 로컬 대상에 메시지를 보내려고 시도합니다. 코어는 메시지를 저장하거나 전송 여부를 확인하지 않습니다. 메시지는 구성 요소 간 임의의 위치에서 끊길 수 있습니다.

참고

Lambda 함수 간의 직접 통신은 MQTT 메시징을 사용하지 않지만, 동작은 동일합니다.

클라우드 대상을 위한 MQTT 메시지 대기열

AWS 클라우드 대상을 목표로 하는 MQTT 메시지는 처리를 기다리기 위해 대기 상태가 됩니다. 대기 상태인 메시지는 FIFO(선입선출)에 따라 처리됩니다. 메시지가 처리되어 AWS IoT Core에 게시되면 해당 메시지가 대기열에서 제거됩니다.

기본적으로 Greengrass 코어는 AWS 클라우드 대상으로 보내는 처리되지 않은 메시지를 메모리에 저장합니다. 대신에 로컬 스토리지 캐시에 미처리 메시지를 저장하도록 코어를 구성할 수 있습니다. 인 메모리 스토리지와 달리, 로컬 스토리지 캐시는 코어 재시작(예: 그룹 배포 또는 디바이스 재부팅 이후)에도 유지될 수 있어 AWS IoT Greengrass이(가) 가 계속해서 메시지를 처리할 수 있습니다. 또한 스토리지 크기를 구성할 수 있습니다.

주의

Greengrass 코어는 MQTT 클라이언트가 오프라인 상태임을 감지하기 전에 게시 작업을 재시도하기 때문에, 연결이 끊어지면 중복된 MQTT 메시지를 대기열에 넣을 수 있습니다. 클라우드 대상에 대한 MQTT 메시지 중복을 방지하려면 코어의 keepAlive 값을 mqttOperationTimeout 값의 절반 미만으로 구성하십시오. 자세한 설명은 AWS IoT Greengrass 코어 구성 파일 섹션을 참조하세요.

AWS IoT Greengrass는 스풀러 시스템 구성 요소(GGCloudSpooler Lambda 함수)를 사용하여 메시지 대기열을 관리합니다. 다음 GGCloudSpooler 환경 변수를 사용하여 스토리지 설정을 구성할 수 있습니다.

  • GG_CONFIG_STORAGE_TYPE. 메시지 대기열의 위치입니다. 유효한 값은 다음과 같습니다.

    • FileSystem. 미처리 메시지를 물리적 코어 디바이스의 디스크에 있는 로컬 스토리지 캐시에 저장합니다. 코어가 재시작될 때 대기 상태인 메시지가 처리를 위해 보관됩니다. 처리가 끝난 메시지는 삭제됩니다.

    • Memory (default). 처리되지 않은 메시지를 메모리에 저장합니다. 코어가 재시작될 때 대기 상태인 메시지가 사라집니다.

      이 옵션은 하드웨어 기능이 제한된 디바이스에 최적화되어 있습니다. 이 구성을 사용하는 경우에는 서비스 중단이 최소화될 때 그룹을 배포하거나 디바이스를 재시작하는 것이 좋습니다.

  • GG_CONFIG_MAX_SIZE_BYTES. 스토리지 크기(바이트)입니다. 이 값은 262144 이상(256KB)인 음수가 아닌 정수면 어떤 것이든 가능하며, 크기가 더 작으면 AWS IoT Greengrass 코어 소프트웨어가 시작되지 않습니다. 기본 크기는 2.5MB입니다. 크기가 한도에 도달하면 대기열에서 가장 오래된 메시지가 새로운 메시지로 대체됩니다.

참고

이 기능은 AWS IoT Greengrass 코어 v1.6 이상에 사용할 수 있습니다. 이전 버전들은 대기열 크기가 2.5MB인 인 메모리 스토리지를 사용합니다. 이전 버전에서는 스토리지 설정을 구성할 수 없습니다.

로컬 스토리지의 캐시에 메시지를 저장하는 방법

파일 시스템에 메시지를 캐싱하여 코어 재시작에도 유지가 되도록 AWS IoT Greengrass을 구성할 수 있습니다. 이렇게 하려면 GGCloudSpooler 함수가 스토리지 유형을 FileSystem으로 설정하는 함수 정의 버전을 배포합니다. AWS IoT Greengrass API를 사용하여 로컬 스토리지 캐시를 구성해야 합니다. 콘솔에서는 이 작업을 수행할 수 없습니다.

다음 절차는 create-function-definition-version CLI 명령을 사용하여 파일 시스템에 대기 상태인 메시지를 저장하도록 스풀러를 구성합니다. 또한 2.6MB 대기열 크기를 구성합니다.

  1. 대상 Greengrass 그룹 및 그룹 버전의 ID를 확인합니다. 이 절차에서는 이것이 최신 그룹 및 그룹 버전이라고 가정합니다. 다음 쿼리는 가장 최근에 생성된 그룹을 반환합니다.

    aws greengrass list-groups --query "reverse(sort_by(Groups, &CreationTimestamp))[0]"

    또는 이름으로 쿼리할 수도 있습니다. 그룹 이름은 고유한 이름이 아니어도 되므로 여러 그룹을 반환할 수도 있습니다.

    aws greengrass list-groups --query "Groups[?Name=='MyGroup']"
    참고

    AWS IoT 콘솔에서도 이러한 값을 찾을 수 있습니다. 그룹 ID는 그룹의 설정 페이지에 표시됩니다. 그룹 버전 ID는 그룹의 배포 탭에 표시됩니다.

  2. 출력에서 대상 그룹의 IdLatestVersion 값을 복사합니다.

  3. 최신 그룹 버전을 확인합니다.

    • group-id를 복사한 Id로 바꿉니다.

    • latest-group-version-id를 복사한 LatestVersion로 바꿉니다.

    aws greengrass get-group-version \ --group-id group-id \ --group-version-id latest-group-version-id
  4. 출력의 Definition 객체에서 CoreDefinitionVersionArn과 다른 모든 그룹 구성 요소의 ARN을 복사합니다(FunctionDefinitionVersionArn 제외). 새 그룹 버전을 만들 때 이러한 값들이 사용됩니다.

  5. 출력의 FunctionDefinitionVersionArn에서 함수 정의의 ID를 복사합니다. 다음 예제에서와 같이, ARN에서 functions 세그먼트 다음에 나오는 GUID가 ID가 됩니다.

    arn:aws:greengrass:us-west-2:123456789012:/greengrass/definition/functions/bcfc6b49-beb0-4396-b703-6dEXAMPLEcu5/versions/0f7337b4-922b-45c5-856f-1aEXAMPLEsf6
    참고

    또는 create-function-definition 명령을 실행하여 함수 정의를 생성하고, 출력에서 ID를 복사할 수 있습니다.

  6. 함수 정의에 함수 정의 버전을 추가합니다.

    • 함수 정의를 위해 복사한 Id 것으로 function-definition-id바꾸십시오.

    • 함수 이름 (예:) arbitrary-function-id으로 spooler-function 바꾸십시오.

    • 이 버전에 포함시키고 싶은 Lambda 함수를 functions 배열에 추가합니다. get-function-definition-version 명령을 사용해 기존 함수 정의 버전에서 Greengrass Lambda 함수를 가져올 수 있습니다.

    주의

    262144보다 크거나 같은 GG_CONFIG_MAX_SIZE_BYTES에 대해 값을 지정해야 합니다. 크기가 더 작으면 AWS IoT Greengrass 코어 소프트웨어가 시작되지 않습니다.

    aws greengrass create-function-definition-version \ --function-definition-id function-definition-id \ --functions '[{"FunctionArn": "arn:aws:lambda:::function:GGCloudSpooler:1","FunctionConfiguration": {"Environment": {"Variables":{"GG_CONFIG_MAX_SIZE_BYTES":"2621440","GG_CONFIG_STORAGE_TYPE":"FileSystem"}},"Executable": "spooler","MemorySize": 32768,"Pinned": true,"Timeout": 3},"Id": "arbitrary-function-id"}]'
    참고

    이전에 GG_CONFIG_SUBSCRIPTION_QUALITY 환경 변수를 AWS IoT Core로 영구 세션을 지원하도록 설정한 경우 이 함수 인스턴스에 포함하십시오.

  7. 출력에서 함수 정의 버전의 Arn를 복사합니다.

  8. 시스템 Lambda 함수를 포함하는 그룹 버전을 만듭니다.

    • group-id를 그룹의 Id로 바꿉니다.

    • 최신 그룹 버전에서 복사한 것으로 core-definition-version-arn바꾸십시오. CoreDefinitionVersionArn

    • 새 함수 정의 버전용으로 복사한 것으로 function-definition-version-arn바꾸십시오. Arn

    • 최신 그룹 버전에서 복사한 다른 그룹 구성 요소의 ARN(예: SubscriptionDefinitionVersionArn 또는 DeviceDefinitionVersionArn)을 바꿉니다.

    • 사용되지 않은 파라미터를 모두 제거합니다. 예를 들어 그룹 버전에 리소스가 포함되어 있지 않으면 --resource-definition-version-arn을 제거합니다.

    aws greengrass create-group-version \ --group-id group-id \ --core-definition-version-arn core-definition-version-arn \ --function-definition-version-arn function-definition-version-arn \ --device-definition-version-arn device-definition-version-arn \ --logger-definition-version-arn logger-definition-version-arn \ --resource-definition-version-arn resource-definition-version-arn \ --subscription-definition-version-arn subscription-definition-version-arn
  9. 출력에서 Version을 복사합니다. 새 그룹 버전의 ID가 이 값이 됩니다.

  10. 새로운 그룹 버전을 사용하여 그룹을 배포합니다.

    • group-id를 해당 그룹에서 복사한 Id로 바꿉니다.

    • 새 그룹 버전용으로 복사한 것으로 group-version-id바꾸십시오. Version

    aws greengrass create-deployment \ --group-id group-id \ --group-version-id group-version-id \ --deployment-type NewDeployment

스토리지 설정을 업데이트하려면 AWS IoT Greengrass API를 사용해 구성이 업데이트된 GGCloudSpooler 함수를 포함하는 새로운 함수 정의 버전을 생성합니다. 그런 다음, 새 그룹 버전에 함수 정의 버전을 추가하고(다른 그룹 구성 요소와 함께) 그룹 버전을 배포합니다. 기본 구성을 복원하고 싶은 경우에는 GGCloudSpooler 함수가 포함되지 않은 함수 정의 버전을 배포할 수 있습니다.

이 시스템 Lambda 함수는 콘솔에 표시되지 않습니다. 하지만 함수가 최신 그룹 버전에 추가되고 난 후에는 콘솔에서 만든 배포에 포함이 됩니다(API를 사용해 이를 교체 또는 제거하지 않는 한).

AWS IoT Core를 사용하는 MQTT 영구 세션

이 기능은 AWS IoT Greengrass 코어 v1.10 이상에 사용할 수 있습니다.

Greengrass 코어는 AWS IoT 메시지 브로커를 사용해 영구 세션을 설정할 수 있습니다. 영구 세션은 코어가 오프라인 상태에서도 전송된 메시지를 수신할 수 있도록 해주는 지속적인 연결입니다. 코어는 연결 중인 클라이언트입니다.

영구 세션에서 AWS IoT 메시지 브로커는 연결 중에 코어에서 생성된 모든 구독을 저장합니다. 코어의 연결이 끊어지면 AWS IoT 메시지 브로커는 QoS 1로 게시되고 Lambda 함수 및 클라이언트 디바이스와 같은 로컬 대상으로 보내는 승인되지 않은 새 메시지를 저장합니다. 코어가 다시 연결되면 영구 세션이 재개되고 AWS IoT가 초당 최대 10개의 메시지 속도로 저장된 메시지를 코어로 보냅니다. 영구 세션의 기본 만료 기간은 1시간입니다. 이 기간은 메시지 브로커가 코어의 연결이 끊어졌음을 감지할 때 시작됩니다. 자세한 내용은 AWS IoT 개발자 안내서MQTT 영구 세션을 참조하세요.

AWS IoT Greengrass는 스풀러 시스템 구성 요소(GGCloudSpooler Lambda 함수)를 사용하여 소스로 AWS IoT가 있는 구독을 생성합니다. 다음 GGCloudSpooler 환경 변수를 사용하여 영구 세션을 구성할 수 있습니다.

  • GG_CONFIG_SUBSCRIPTION_QUALITY. 소스로 AWS IoT를 가지고 있는 구독의 품질입니다. 유효한 값은 다음과 같습니다.

    • AtMostOnce (default). 영구 세션을 비활성화합니다. 구독은 QoS 0을 사용합니다.

    • AtLeastOncePersistent. 영구 세션을 활성화합니다. CONNECT 메시지에서 cleanSession 플래그를 0으로 설정하고 QoS 1로 구독합니다.

      코어가 수신하는 QoS 1로 게시된 메시지는 Greengrass 대몬(daemon)의 인 메모리 작업 대기열에 도달하도록 보장됩니다. 코어는 대기열에 추가된 이후에 메시지를 확인합니다. 대기열에서 로컬 대상(예: Greengrass Lambda 함수, 커넥터 또는 디바이스)과의 후속 통신은 QoS 0으로 전송됩니다. AWS IoT Greengrass는 로컬 대상에 대한 전달을 보장하지 않습니다.

      참고

      maxWorkItemCount 구성 속성을 사용하여 작업 항목 대기열의 크기를 제어할 수 있습니다. 예를 들어 워크로드에 사용률이 높은 MQTT 트래픽이 필요한 경우 대기열 크기를 늘릴 수 있습니다.

      영구 세션이 활성화되면 코어는 MQTT 메시지를 AWS IoT와 교환하기 위해 적어도 하나의 추가 연결을 엽니다. 자세한 설명은 AWS IoT를 통한 MQTT 연결용 클라이언트 ID 섹션을 참조하세요.

MQTT 영구 세션을 구성하려면

AWS IoT Core에서 영구 세션을 사용하도록 AWS IoT Greengrass를 구성할 수 있습니다. 이렇게 하려면 GGCloudSpooler 함수가 구독 품질을 AtLeastOncePersistent로 설정하는 함수 정의 버전을 배포합니다. 이 설정은 소스로 AWS IoT Core(cloud)를 보유한 모든 구독에 적용됩니다. 영구 세션을 구성하려면 AWS IoT Greengrass API를 사용해야 합니다. 콘솔에서는 이 작업을 수행할 수 없습니다.

다음 절차에서는 create-function-definition-version CLI 명령을 통해 영구 세션을 사용하도록 스풀러를 구성합니다. 이 절차에서는 기존 그룹의 최신 그룹 버전에 대한 구성을 업데이트한다고 가정합니다.

  1. 대상 Greengrass 그룹 및 그룹 버전의 ID를 확인합니다. 이 절차에서는 이것이 최신 그룹 및 그룹 버전이라고 가정합니다. 다음 쿼리는 가장 최근에 생성된 그룹을 반환합니다.

    aws greengrass list-groups --query "reverse(sort_by(Groups, &CreationTimestamp))[0]"

    또는 이름으로 쿼리할 수도 있습니다. 그룹 이름은 고유한 이름이 아니어도 되므로 여러 그룹을 반환할 수도 있습니다.

    aws greengrass list-groups --query "Groups[?Name=='MyGroup']"
    참고

    AWS IoT 콘솔에서도 이러한 값을 찾을 수 있습니다. 그룹 ID는 그룹의 설정 페이지에 표시됩니다. 그룹 버전 ID는 그룹의 배포 탭에 표시됩니다.

  2. 출력에서 대상 그룹의 IdLatestVersion 값을 복사합니다.

  3. 최신 그룹 버전을 확인합니다.

    • group-id를 복사한 Id로 바꿉니다.

    • latest-group-version-id를 복사한 LatestVersion로 바꿉니다.

    aws greengrass get-group-version \ --group-id group-id \ --group-version-id latest-group-version-id
  4. 출력의 Definition 객체에서 CoreDefinitionVersionArn과 다른 모든 그룹 구성 요소의 ARN을 복사합니다(FunctionDefinitionVersionArn 제외). 새 그룹 버전을 만들 때 이러한 값들이 사용됩니다.

  5. 출력의 FunctionDefinitionVersionArn에서 함수 정의의 ID를 복사합니다. 다음 예제에서와 같이, ARN에서 functions 세그먼트 다음에 나오는 GUID가 ID가 됩니다.

    arn:aws:greengrass:us-west-2:123456789012:/greengrass/definition/functions/bcfc6b49-beb0-4396-b703-6dEXAMPLEcu5/versions/0f7337b4-922b-45c5-856f-1aEXAMPLEsf6
    참고

    또는 create-function-definition 명령을 실행하여 함수 정의를 생성하고, 출력에서 ID를 복사할 수 있습니다.

  6. 함수 정의에 함수 정의 버전을 추가합니다.

    • 함수 정의를 위해 복사한 것으로 function-definition-id바꾸십시오. Id

    • 함수 이름 (예:) arbitrary-function-id으로 spooler-function 바꾸십시오.

    • 이 버전에 포함시키고 싶은 Lambda 함수를 functions 배열에 추가합니다. get-function-definition-version 명령을 사용해 기존 함수 정의 버전에서 Greengrass Lambda 함수를 가져올 수 있습니다.

    aws greengrass create-function-definition-version \ --function-definition-id function-definition-id \ --functions '[{"FunctionArn": "arn:aws:lambda:::function:GGCloudSpooler:1","FunctionConfiguration": {"Environment": {"Variables":{"GG_CONFIG_SUBSCRIPTION_QUALITY":"AtLeastOncePersistent"}},"Executable": "spooler","MemorySize": 32768,"Pinned": true,"Timeout": 3},"Id": "arbitrary-function-id"}]'
    참고

    이전에 GG_CONFIG_STORAGE_TYPE 또는 GG_CONFIG_MAX_SIZE_BYTES 환경 변수를 설정하여 스토리지 설정을 정의한 경우 이 함수 인스턴스에 포함하십시오.

  7. 출력에서 함수 정의 버전의 Arn를 복사합니다.

  8. 시스템 Lambda 함수를 포함하는 그룹 버전을 만듭니다.

    • group-id를 그룹의 Id로 바꿉니다.

    • 최신 그룹 버전에서 복사한 것으로 core-definition-version-arn바꾸십시오. CoreDefinitionVersionArn

    • 새 함수 정의 버전용으로 복사한 것으로 function-definition-version-arn바꾸십시오. Arn

    • 최신 그룹 버전에서 복사한 다른 그룹 구성 요소의 ARN(예: SubscriptionDefinitionVersionArn 또는 DeviceDefinitionVersionArn)을 바꿉니다.

    • 사용되지 않은 파라미터를 모두 제거합니다. 예를 들어 그룹 버전에 리소스가 포함되어 있지 않으면 --resource-definition-version-arn을 제거합니다.

    aws greengrass create-group-version \ --group-id group-id \ --core-definition-version-arn core-definition-version-arn \ --function-definition-version-arn function-definition-version-arn \ --device-definition-version-arn device-definition-version-arn \ --logger-definition-version-arn logger-definition-version-arn \ --resource-definition-version-arn resource-definition-version-arn \ --subscription-definition-version-arn subscription-definition-version-arn
  9. 출력에서 Version을 복사합니다. 새 그룹 버전의 ID가 이 값이 됩니다.

  10. 새로운 그룹 버전을 사용하여 그룹을 배포합니다.

    • group-id를 해당 그룹에서 복사한 Id로 바꿉니다.

    • 새 그룹 버전용으로 복사한 것으로 group-version-id바꾸십시오. Version

    aws greengrass create-deployment \ --group-id group-id \ --group-version-id group-version-id \ --deployment-type NewDeployment
  11. (선택 사항) 핵심 구성 파일의 maxWorkItem개수 속성을 늘립니다. 이렇게 하면 코어가 증가한 MQTT 트래픽 및 로컬 대상과의 통신을 처리하는 데 도움이 될 수 있습니다.

이러한 구성 변경 사항을 반영해 코어를 업데이트하려면 AWS IoT Greengrass API를 사용해 구성이 업데이트된 GGCloudSpooler 함수를 포함하는 새로운 함수 정의 버전을 생성합니다. 그런 다음, 새 그룹 버전에 함수 정의 버전을 추가하고(다른 그룹 구성 요소와 함께) 그룹 버전을 배포합니다. 기본 구성을 복원하고 싶은 경우에는 GGCloudSpooler 함수가 포함되지 않은 함수 정의 버전을 생성할 수 있습니다.

이 시스템 Lambda 함수는 콘솔에 표시되지 않습니다. 하지만 함수가 최신 그룹 버전에 추가되고 난 후에는 콘솔에서 만든 배포에 포함이 됩니다(API를 사용해 이를 교체 또는 제거하지 않는 한).

AWS IoT를 통한 MQTT 연결용 클라이언트 ID

이 기능은 AWS IoT Greengrass 코어 v1.8 이상에 사용할 수 있습니다.

Greengrass 코어는 섀도우 동기화 및 인증서 관리와 같은 작업을 위해 AWS IoT Core를 통해 MQTT 연결을 엽니다. 이러한 연결의 경우 코어는 코어 사물 이름을 기반으로 예측 가능한 클라이언트 ID를 생성합니다. AWS IoT Device Defender 및 AWS IoT 수명 주기 이벤트를 포함한 모니터링, 감사 및 요금 기능에 예측 가능한 클라이언트 ID를 사용할 수 있습니다. 또한 예상 가능한 클라이언트 ID를 중심으로 논리를 생성할 수 있습니다(예: 인증서 속성을 기반으로 한 구독 정책 템플릿).

GGC v1.9 and later

두 Greengrass 시스템 구성 요소에서 AWS IoT Core를 통해 MQTT 연결을 엽니다. 이러한 구성 요소는 다음 패턴을 사용하여 연결을 위한 클라이언트 ID를 생성합니다.

Operation 클라이언트 ID 패턴
배포

core-thing-name

예제: MyCoreThing

연결, 연결 해제, 구독 및 구독 해지 수명 주기 이벤트 알림에 이 클라이언트 ID를 사용합니다.

구독

core-thing-name-cn

예제: MyCoreThing-c01

n은 00에서 시작하고 새 연결에 따라 최대 250까지 증분하는 정수입니다. 연결 수는 섀도우 상태를 AWS IoT Core(그룹당 최대 2,500개)와 동기화하는 디바이스 수 및 cloud를 그룹의 해당 소스로 포함하는 구독 수(그룹당 최대 10,000개)로 결정됩니다.

스풀러 시스템 구성 요소는 AWS IoT Core와의 연결을 설정하여 클라우드 소스 또는 대상과 구독에 대한 메시지를 교환합니다. 또한 스풀러는 AWS IoT Core와 로컬 섀도우 서비스 및 디바이스 인증서 관리자 간의 메시지 교환을 위한 프록시로 작동합니다.

그룹당 MQTT 연결 수를 계산하려면 다음 수식을 사용하십시오.

number of MQTT connections per group = number of connections for Deployment Agent + number of connections for Subscriptions

여기서

  • 배포 에이전트의 연결 수 = 1.

  • 구독의 연결 수 = (2 subscriptions for supporting certificate generation + number of MQTT topics in AWS IoT Core + number of device shadows synced) / 50.

    • 여기서, 50 = AWS IoT Core가 지원할 수 있는 연결당 최대 구독 수입니다.

참고

AWS IoT Core 구독을 위해 영구 세션을 활성화하면 코어가 영구 세션에서 사용할 추가 연결을 하나 이상 엽니다. 시스템 구성 요소는 영구 세션을 지원하지 않으므로 해당 연결을 공유할 수 없습니다.

MQTT 연결 수를 줄이고 비용을 절감하기 위해 로컬 Lambda 함수를 사용하여 엣지에서 데이터를 집계할 수 있습니다. 그런 다음 집계된 데이터를 AWS 클라우드로 전송합니다. 따라서 AWS IoT Core에서 사용하는 MQTT 항목이 줄어듭니다. 자세한 내용은 AWS IoT Greengrass 요금을 참조하세요.

GGC v1.8

여러 Greengrass 시스템 구성 요소에서 AWS IoT Core를 통해 MQTT 연결이 열립니다. 이러한 구성 요소는 다음 패턴을 사용하여 연결을 위한 클라이언트 ID를 생성합니다.

Operation 클라이언트 ID 패턴
배포

core-thing-name

예제: MyCoreThing

연결, 연결 해제, 구독 및 구독 해지 수명 주기 이벤트 알림에 이 클라이언트 ID를 사용합니다.

AWS IoT Core를 통한 MQTT 메시지 교환

core-thing-name-spr

예제: MyCoreThing-spr

섀도우 동기화

core-thing-name-snn

예제: MyCoreThing-s01

nn은 00에서 시작하고 새 연결에 따라 최대 03까지 증분하는 정수입니다. 연결 수는 섀도우 상태를 AWS IoT Core(연결당 최대 50개 구독)와 동기화하는 디바이스 수(그룹당 최대 200개 디바이스)로 결정됩니다.

디바이스 인증서 관리

core-thing-name-dcm

예제: MyCoreThing-dcm

참고

중복 ID를 동시 연결에 사용하면 무한 연결-연결 해제 루프가 발생할 수 있습니다. 이는 다른 디바이스가 연결에서 코어 디바이스 이름을 클라이언트 ID로 사용하도록 하드코딩되는 경우 발생할 수 있습니다. 자세한 내용은 이 문제 해결 단계를 참조하십시오.

또한 Greengrass 디바이스는 AWS IoT Device Management의 플릿 인덱싱 서비스와 완전 통합됩니다. 따라서 클라우드에서 디바이스 속성, 섀도우 상태, 연결 상태를 기반으로 디바이스를 인덱싱하고 검색할 수 있습니다. 예를 들어, 디바이스 연결 인덱싱을 사용하여 AWS IoT Core에 현재 연결되거나 연결 해제된 Greengrass 디바이스를 검색할 수 있도록 Greengrass 디바이스는 사물 이름을 클라이언트 ID로 사용하는 연결을 하나 이상 설정합니다. 자세한 내용은 AWS IoT 개발자 안내서플릿 인덱싱을 참조하세요.

로컬 메시징을 위한 MQTT 포트 구성

이 기능을 사용하려면 AWS IoT Greengrass 코어 v1.10 이상이 필요합니다.

Greengrass 코어는 로컬 Lambda 함수, 커넥터 및 클라이언트 디바이스 간의 MQTT 메시징을 위한 로컬 메시지 브로커 역할을 수행합니다. 기본적으로 코어는 로컬 네트워크의 MQTT 트래픽에 포트 8883을 사용합니다. 포트 8883에서 실행되는 다른 소프트웨어와의 충돌을 피하기 위해 포트를 변경할 수 있습니다.

코어가 로컬 MQTT 트래픽에 사용하는 포트 번호를 구성하려면
  1. 다음 명령을 실행해 Greengrass 대몬(daemon)을 중단합니다.

    cd /greengrass-root/ggc/core/ sudo ./greengrassd stop
  2. su 사용자로서 편집을 하려면 greengrass-root/config/config.json을 엽니다.

  3. coreThing 객체에서 ggMqttPort 속성을 추가하고 사용할 포트 번호로 값을 설정합니다. 유효한 값은 1024 ~ 65535입니다. 다음 예제에서는 포트 번호를 9000으로 설정합니다.

    { "coreThing" : { "caPath" : "root.ca.pem", "certPath" : "12345abcde.cert.pem", "keyPath" : "12345abcde.private.key", "thingArn" : "arn:aws:iot:us-west-2:123456789012:thing/core-thing-name", "iotHost" : "abcd123456wxyz-ats.iot.us-west-2.amazonaws.com", "ggHost" : "greengrass-ats.iot.us-west-2.amazonaws.com", "ggMqttPort" : 9000, "keepAlive" : 600 }, ... }
  4. 대몬(daemon)을 시작합니다.

    cd /greengrass-root/ggc/core/ sudo ./greengrassd start
  5. 코어에 대해 자동 IP 감지가 활성화된 경우에는 구성이 완료된 것입니다.

    자동 IP 감지가 활성화되지 않은 경우 코어의 연결 정보를 업데이트해야 합니다. 이렇게 하면 클라이언트 디바이스가 검색 작업 중에 올바른 포트 번호를 수신하여 코어 연결 정보를 얻을 수 있습니다. AWS IoT 콘솔 또는 AWS IoT Greengrass API를 사용하여 코어 연결 정보를 업데이트할 수 있습니다. 이 절차에서는 포트 번호만 업데이트합니다. 코어의 로컬 IP 주소는 동일하게 유지됩니다.

    코어에 대한 연결 정보를 업데이트하려면(콘솔)
    1. 그룹 구성 페이지에서 Greengrass 코어를 선택합니다.

    2. 코어 세부 정보 페이지에서 MQTT 브로커 엔드포인트 탭을 선택합니다.

    3. 엔드포인트 관리를 선택한 다음 엔드포인트 추가를 선택합니다.

    4. 현재 로컬 IP 주소와 새 포트 번호를 입력합니다. 다음 예제에서는 IP 주소 192.168.1.8의 포트 번호 9000를 설정합니다.

    5. 사용되지 않는 엔드포인트를 제거한 다음 업데이트를 선택합니다.

    코어에 대한 연결 정보를 업데이트하려면(API)
    • UpdateConnectivityInfo 작업을 사용합니다. 다음 예제에서는 AWS CLI에서 update-connectivity-info를 사용하여 IP 주소 192.168.1.8의 포트 번호 9000를 설정합니다.

      aws greengrass update-connectivity-info \ --thing-name "MyGroup_Core" \ --connectivity-info "[{\"Metadata\":\"\",\"PortNumber\":9000,\"HostAddress\":\"192.168.1.8\",\"Id\":\"localIP_192.168.1.8\"},{\"Metadata\":\"\",\"PortNumber\":8883,\"HostAddress\":\"127.0.0.1\",\"Id\":\"localhost_127.0.0.1_0\"}]"
    참고

    AWS IoT Core를 사용하여 코어가 MQTT 메시징에 사용하는 포트를 구성할 수도 있습니다. 자세한 설명은 포트 443에서 또는 네트워크 프록시를 통해 연결 섹션을 참조하세요.

AWS 클라우드를 통해 MQTT 연결 시 게시, 구독, 구독 취소 작업에 대한 제한 시간

이 기능은 AWS IoT Greengrass v1.10.2 이상에서 사용할 수 있습니다.

Greengrass 코어는 AWS IoT Core에 MQTT 연결 시 게시, 구독 또는 구독 취소 작업을 완료할 수 있는 시간(초)을 구성할 수 있습니다. 대역폭 제약 또는 긴 지연 시간으로 인해 작업 시간이 초과되는 경우 이 설정을 조정할 수 있습니다. config.json 파일에서 이 설정을 구성하려면 coreThing 객체의 mqttOperationTimeout 속성을 추가하거나 변경합니다. 예:

{ "coreThing": { "mqttOperationTimeout": 10, "caPath": "root-ca.pem", "certPath": "hash.cert.pem", "keyPath": "hash.private.key", ... }, ... }

기본 제한 시간은 5초입니다. 최소 제한 시간은 5초입니다.

자동 IP 감지 활성화

Greengrass 그룹의 클라이언트 장치가 Greengrass 코어를 자동으로 검색하도록 AWS IoT Greengrass를 구성할 수 있습니다. 활성화되면 코어는 IP 주소 변경을 감시합니다. 주소가 변경되면 코어는 업데이트된 주소 목록을 게시합니다. 이러한 주소는 코어와 동일한 Greengrass 그룹에 속한 클라이언트 디바이스에서 사용할 수 있습니다.

참고

클라이언트 디바이스에 대한 AWS IoT 정책은 디바이스가 코어에 대한 연결 정보를 검색할 수 있도록 허용하는 greengrass:Discover 권한을 부여해야 합니다. 이 정책 설명에 대한 자세한 내용은 검색 권한 섹션을 참조하십시오.

AWS IoT Greengrass 콘솔에서 이 기능을 활성화하려면 Greengrass 그룹을 처음 배포할 때 자동 감지를 선택합니다. Lambda 함수 탭을 선택하고 IP 감지기를 선택하여 그룹 구성 페이지에서 이 기능을 활성화하거나 비활성화할 수도 있습니다. MQTT 브로커 엔드포인트 자동 감지 및 재정의가 선택된 경우 자동 IP 감지가 활성화됩니다.

AWS IoT Greengrass API로 자동 검색을 관리하려면 IPDetector 시스템 Lambda 함수를 구성해야 합니다. 다음 절차는 create-function-definition-versionCLI 명령을 사용하여 Greengrass 코어의 자동 검색을 구성하는 방법을 보여줍니다.

  1. 대상 Greengrass 그룹 및 그룹 버전의 ID를 확인합니다. 이 절차에서는 이것이 최신 그룹 및 그룹 버전이라고 가정합니다. 다음 쿼리는 가장 최근에 생성된 그룹을 반환합니다.

    aws greengrass list-groups --query "reverse(sort_by(Groups, &CreationTimestamp))[0]"

    또는 이름으로 쿼리할 수도 있습니다. 그룹 이름은 고유한 이름이 아니어도 되므로 여러 그룹을 반환할 수도 있습니다.

    aws greengrass list-groups --query "Groups[?Name=='MyGroup']"
    참고

    AWS IoT 콘솔에서도 이러한 값을 찾을 수 있습니다. 그룹 ID는 그룹의 설정 페이지에 표시됩니다. 그룹 버전 ID는 그룹의 배포 탭에 표시됩니다.

  2. 출력에서 대상 그룹의 IdLatestVersion 값을 복사합니다.

  3. 최신 그룹 버전을 확인합니다.

    • group-id를 복사한 Id로 바꿉니다.

    • latest-group-version-id를 복사한 LatestVersion로 바꿉니다.

    aws greengrass get-group-version \ --group-id group-id \ --group-version-id latest-group-version-id
  4. 출력의 Definition 객체에서 CoreDefinitionVersionArn과 다른 모든 그룹 구성 요소의 ARN을 복사합니다(FunctionDefinitionVersionArn 제외). 새 그룹 버전을 만들 때 이러한 값들이 사용됩니다.

  5. 출력의 FunctionDefinitionVersionArn에서 함수 정의의 ID와 함수 정의 버전을 복사합니다.

    arn:aws:greengrass:region:account-id:/greengrass/groups/function-definition-id/versions/function-definition-version-id
    참고

    선택에 따라 create-function-definition 명령을 실행하여 함수 정의를 만들고, 출력에서 ID를 복사할 수 있습니다.

  6. get-function-definition-version 명령을 사용하여 현재 정의 상태를 가져옵니다. 복사한 function-definition-id내용을 함수 정의에 사용하십시오. 예를 들면 다음과 같습니다 4d941bc7-92a1-4f45-8d64-EXAMPLEf76c3.

    aws greengrass get-function-definition-version --function-definition-id function-definition-id --function-definition-version-id function-definition-version-id

    나열된 함수 구성을 적어 두십시오. 현재 정의 설정의 손실을 방지하기 위해 새 함수 정의 버전을 생성할 때 이 함수 구성을 포함시켜야 합니다.

  7. 함수 정의에 함수 정의 버전을 추가합니다.

    • 함수 정의를 위해 복사한 Id 것으로 function-definition-id바꾸십시오. 예를 들면 다음과 같습니다 4d941bc7-92a1-4f45-8d64-EXAMPLEf76c3.

    • 함수 이름 (예:) arbitrary-function-id으로 auto-detection-function 바꾸십시오.

    • 이 버전에 포함시키고 싶은 모든 Lambda 함수(예: 이전 단계에서 나열된 함수)를 functions 배열에 추가합니다.

    aws greengrass create-function-definition-version \ --function-definition-id function-definition-id \ --functions '[{"FunctionArn":"arn:aws:lambda:::function:GGIPDetector:1","Id":"arbitrary-function-id","FunctionConfiguration":{"Pinned":true,"MemorySize":32768,"Timeout":3}}]'\ --region us-west-2
  8. 출력에서 함수 정의 버전의 Arn를 복사합니다.

  9. 시스템 Lambda 함수를 포함하는 그룹 버전을 만듭니다.

    • group-id를 그룹의 Id로 바꿉니다.

    • 최신 그룹 버전에서 복사한 것으로 core-definition-version-arn바꾸십시오. CoreDefinitionVersionArn

    • 새 함수 정의 버전용으로 복사한 것으로 function-definition-version-arn바꾸십시오. Arn

    • 최신 그룹 버전에서 복사한 다른 그룹 구성 요소의 ARN(예: SubscriptionDefinitionVersionArn 또는 DeviceDefinitionVersionArn)을 바꿉니다.

    • 사용되지 않은 파라미터를 모두 제거합니다. 예를 들어 그룹 버전에 리소스가 포함되어 있지 않으면 --resource-definition-version-arn을 제거합니다.

    aws greengrass create-group-version \ --group-id group-id \ --core-definition-version-arn core-definition-version-arn \ --function-definition-version-arn function-definition-version-arn \ --device-definition-version-arn device-definition-version-arn \ --logger-definition-version-arn logger-definition-version-arn \ --resource-definition-version-arn resource-definition-version-arn \ --subscription-definition-version-arn subscription-definition-version-arn
  10. 출력에서 Version을 복사합니다. 새 그룹 버전의 ID가 이 값이 됩니다.

  11. 새로운 그룹 버전을 사용하여 그룹을 배포합니다.

    • group-id를 해당 그룹에서 복사한 Id로 바꿉니다.

    • 새 그룹 버전용으로 복사한 것으로 group-version-id바꾸십시오. Version

    aws greengrass create-deployment \ --group-id group-id \ --group-version-id group-version-id \ --deployment-type NewDeployment

Greengrass 코어의 IP 주소를 수동으로 입력하려면 IPDetector 함수가 포함되지 않은 다른 함수 정의로 이 튜토리얼을 완료할 수 있습니다. 다음과 같이 하면 감지 함수가 Greengrass 코어 IP 주소를 찾아서 자동으로 입력할 수 없습니다.

이 시스템 Lambda 함수는 Lambda 콘솔에 표시되지 않습니다. 함수가 최신 그룹 버전에 추가된 후에는 API를 사용하여 이를 교체하거나 제거하지 않는 한 콘솔에서 만든 배치에 포함됩니다.

Greengrass 대몬(daemon)을 시작하도록 init 시스템 구성

특히 대규모 디바이스 집합을 관리할 때는 부팅 동안 Greengrass 대몬(daemon)을 시작하도록 init 시스템을 설정하는 것이 좋습니다.

참고

apt를 사용하여 AWS IoT Greengrass 코어 소프트웨어를 설치한 경우 systemd 스크립트를 사용하여 부팅 시 시작을 활성화할 수 있습니다. 자세한 설명은 systemd 스크립트를 사용하여 Greengrass 대몬(daemon) 수명 주기 관리 섹션을 참조하세요.

initd, systemd 및 SystemV 같이 다양한 유형의 init 시스템이 있으며, 이들은 비슷한 구성 파라미터를 사용합니다. 다음은 systemd를 위한 서비스 파일의 예입니다. greengrassd(Greengrass를 시작하는 데 사용)는 Greengrass 대몬(daemon) 프로세스를 분기시키기 때문에 Type 파라미터가 forking로 설정되었고, Greengrass가 실패 상태가 되면 systemd에 Greengrass 재시작을 지시하도록Restart 파라미터가 on-failure로 설정되었습니다.

참고

디바이스가 systemd를 사용하는지 알아보려면 모듈 1에서 check_ggc_dependencies 스크립트를 실행합니다. 그런 다음 systemd를 사용하려면 config.json에서 useSystemd 파라미터가 yes로 설정되어 있어야 합니다.

[Unit] Description=Greengrass Daemon [Service] Type=forking PIDFile=/var/run/greengrassd.pid Restart=on-failure ExecStart=/greengrass/ggc/core/greengrassd start ExecReload=/greengrass/ggc/core/greengrassd restart ExecStop=/greengrass/ggc/core/greengrassd stop [Install] WantedBy=multi-user.target

다음 사항도 참조하십시오.