AWS IoT Greengrass 문제 해결 - AWS IoT Greengrass

다음에 대한 설명서를 보고 있습니다.AWS IoT Greengrass Version 1.AWS IoT Greengrass Version 2의 최신 주요 버전입니다AWS IoT Greengrass. 사용에 관한 자세한 내용은 단원을 참조하십시오.AWS IoT Greengrass V2에 대한 자세한 내용은AWS IoT Greengrass Version 2개발자 안내서.

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

AWS IoT Greengrass 문제 해결

이 단원에서는 AWS IoT Greengrass 관련 문제를 해결하는 데 도움이 되는 문제 해결 정보와 가능한 해결책을 제공합니다.

에 대한 내용은AWS IoT Greengrass할당량 (제한) 에 대한 자세한 내용은서비스 할당량Amazon Web Services 일반 참조.

AWS IoT Greengrass 코어 문제

만약AWS IoT Greengrass코어 소프트웨어가 시작되지 않습니다. 다음 일반 문제 해결 단계를 시도합니다.

  • 아키텍처에 적합한 바이너리를 설치했는지 확인합니다. 자세한 내용은 AWS IoT Greengrass 코어 소프트웨어를 참조하십시오.

  • 코어 디바이스가 로컬 스토리지를 사용할 수 있는지 확인합니다. 자세한 내용은 스토리지 문제 해결 섹션을 참조하세요.

  • runtime.logcrash.log에서 오류 메시지가 있는지 확인합니다. 자세한 내용은 로그 문제 해결 섹션을 참조하세요.

다음 증상과 오류를 검색해 관련 문제 해결에 도움이 되는 정보를 찾습니다.AWS IoT Greengrass코어.

문제

 

오류: CapPath, CertPath or KeyPath. Greengrass daemon process in pid = <pid>] 사망했다.

솔루션: 에서 이 오류가 표시될 수 있습니다.crash.log을 (를)AWS IoT Greengrass코어 소프트웨어가 시작하지 않습니다. 이는 v1.6 이전 버전을 실행하는 경우에 발생할 수 있습니다. 다음 중 하나를 수행하십시오.

  • v1.7 이상으로 업그레이드합니다. 항상 최신 버전의 AWS IoT Greengrass 코어 소프트웨어를 실행하는 것이 좋습니다. 다운로드 정보는 AWS IoT Greengrass 코어 소프트웨어를 참조하십시오.

  • AWS IoT Greengrass 코어 소프트웨어 버전에 대해 올바른 config.json 형식을 사용합니다. 자세한 내용은 AWS IoT Greengrass 코어 구성 파일 섹션을 참조하세요.

    참고

    코어 디바이스에 설치된 AWS IoT Greengrass 코어 소프트웨어 버전이 무엇인지 알아보려면 디바이스 터미널에서 다음 명령을 실행합니다.

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

 

오류: /<greengrass-root> /config/config.json을 구문 분석하지 못했습니다.

솔루션: 이 오류는 다음과 같은 경우에 발생할 수 있습니다.AWS IoT Greengrass코어 소프트웨어가 시작하지 않습니다. Greengrass 구성 파일이 올바른 JSON 형식을 사용 중인지 확인합니다.

config.json(/greengrass-root/config에 위치)을 열고 JSON 형식을 검증합니다. 예를 들어, 쉼표가 올바르게 사용되었는지 확인합니다.

 

오류: TLS 구성을 생성하는 동안 오류가 발생했습니다. ErrUnknownURIScheme

솔루션: 이 오류는 다음과 같은 경우에 발생할 수 있습니다.AWS IoT Greengrass코어 소프트웨어가 시작하지 않습니다. Greengrass 구성 파일의 crypto 섹션에 있는 속성이 유효한지 확인합니다. 오류 메시지는 더 많은 정보를 제공합니다.

config.json(/greengrass-root/config에 위치)을 열고 crypto 섹션을 확인합니다. 예를 들어 인증서와 키 경로는 올바른 URI 형식을 사용하여 올바른 위치를 가리켜야 합니다.

 

오류: 런타임을 시작하지 못했습니다. 작업자를 시작할 수 없습니다. 컨테이너 테스트 시간이 초과되었습니다.

솔루션: 이 오류는 다음과 같은 경우에 발생할 수 있습니다.AWS IoT Greengrass코어 소프트웨어가 시작하지 않습니다. 다음을 설정합니다.postStartHealthCheckTimeout속성에서Greengrass 구성 파일. 이 선택적 속성은 Greengrass 데몬이 상태 확인이 시작 후 완료될 때까지 대기하는 시간(밀리초)을 구성합니다. 기본값은 30초(30000 밀리초)입니다.

config.json(/greengrass-root/config에 위치)을 엽니다. runtime 객체에서 postStartHealthCheckTimeout 속성을 추가하고 해당 값을 30000을 초과하는 값으로 설정합니다. 유효한 JSON 문서를 생성하는 데 필요한 경우 쉼표를 추가합니다. 예:

... "runtime" : { "cgroup" : { "useSystemd" : "yes" }, "postStartHealthCheckTimeout" : 40000 }, ...

 

오류: 로컬 클라우드워치에서 PutLogEvents 를 호출하지 못했습니다. logGroup: /그린그래스 시스템/연결_관리자, 오류: RequestError: 다음 원인으로 인해 요청을 보내지 못했습니다. HTTP 게시: //<path>/클라우드 워치/로그/: TCP 다이얼 <address>: getsockopt: 연결이 거부되었습니다. 응답: {}.

솔루션: 이 오류는 다음과 같은 경우에 발생할 수 있습니다.AWS IoT Greengrass코어 소프트웨어가 시작하지 않습니다. 이는 Raspberry Pi에서 AWS IoT Greengrass를 실행하고 필요한 메모리 설정이 완료되지 않은 경우 발생할 수 있습니다. 자세한 정보는 이 단계를 참조하십시오.

 

오류: 다음 이유로 인해 서버를 작성할 수 없습니다. 그룹을 로드하지 못했습니다. chmod/<greengrass-root> /ggc/배포/lambda/arn:aws:lambda: <region> ::함수 <account-id>: <function-name> <version>/ <file-name>: 그러한 파일이나 디렉토리가 없습니다.

솔루션: 이 오류는 다음과 같은 경우에 발생할 수 있습니다.AWS IoT Greengrass코어 소프트웨어가 시작하지 않습니다. 배포한 경우Lambda 실행를 코어에 추가하고 함수의Handler속성에서group.json파일 (/Greengrass 루트 루트 루트/ggc/배포/그룹). 핸들러가 컴파일된 실행 파일의 정확한 이름이 아닌 경우에는 group.json 파일의 내용을 빈 JSON 객체({})로 바꾸고, 다음 명령을 실행해 AWS IoT Greengrass를 시작합니다.

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

그런 다음,AWS Lambda API를 사용하여 구성의 handler 파라미터를 업데이트하고 새 함수 버전을 게시하고 별칭을 업데이트합니다. 자세한 내용은 AWS Lambda 함수 버전 및 별칭을 참조하십시오.

별칭을 기준으로 Greengrass 그룹에 함수를 추가했다고 가정한다면(권장 사항) 이제 그룹을 다시 배포할 수 있습니다 (그렇지 않은 경우에는 그룹을 배포하기 전에 그룹 정의 및 구독에서 새 함수 버전이나 별칭을 가리켜야 함).

 

컨테이너화 없이 실행하는 방식에서 Greengrass 컨테이너에서 실행하는 방식으로 변경한 후 AWS IoT Greengrass 코어 소프트웨어가 시작되지 않습니다.

솔루션: 컨테이너 종속성이 누락되지 않았는지 확인합니다.

 

오류: 스풀 크기는 262144 바이트 이상이어야 합니다.

솔루션: 이 오류는 다음과 같은 경우에 발생할 수 있습니다.AWS IoT Greengrass코어 소프트웨어가 시작되지 않습니다. group.json 파일(/greengrass-root/ggc/deployment/group에 위치)을 열고, 파일 내용을 빈 JSON 객체(){}로 바꾸고, 다음 명령을 실행해 AWS IoT Greengrass를 시작합니다.

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

그런 다음 로컬 스토리지의 캐시에 메시지를 저장하는 방법 절차에서 해당 단계를 따릅니다. GGCloudSpooler 함수의 경우 262144보다 크거나 같은 GG_CONFIG_MAX_SIZE_BYTES 값을 지정해야 합니다.

 

오류: [오류] -클라우드 메시징 오류: 메시지를 게시하는 동안 오류가 발생했습니다. {"오류 문자열”: “작업 시간이 초과되었습니다"}

솔루션: 에서 이 오류가 표시될 수 있습니다.GGCloudSpooler.logGreengrass 코어가 MQTT 메시지를 에 보낼 수 없을 경우AWS IoT Core. 이 문제는 코어 환경의 대역폭이 제한되고 지연 시간이 긴 경우에 발생할 수 있습니다. 당신이 달리고있는 경우AWS IoT Greengrassv1.10.2 이상에서mqttOperationTimeout값입니다.config.json파일로 이동합니다. 속성이 없으면 coreThing 객체에 추가합니다. 예:

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

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

 

오류: container_linux.go:344: start container process container_linux.go:424: container init container_linux.go:64: mountfs_linux.go:64: mount\\”/녹색 잔디/ggc/소켓/그린그래스_ipc.sock\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\”version>/rootfs/병합\\”에/Greengrass_ipc.sock\\\”stat/녹색 잔디/ggc/소켓/greengrass_ipc.sock: 권한이 거부되었습니다.

솔루션: 에서 이 오류가 표시될 수 있습니다.runtime.log을 (를)AWS IoT Greengrass코어 소프트웨어가 시작하지 않습니다. 이 오류는 umask0022보다 큰 경우에 발생합니다. 이 문제를 해결하려면 umask0022 이하로 설정해야 합니다. 0022 값을 설정하면 모든 사람에게 새 파일에 대한 읽기 권한이 기본적으로 부여됩니다.

 

오류: PID로 실행 중인 Greengrass daemon: <process-id>. Some system components failed to start. Check 'runtime.log' for errors.

솔루션: 이 오류는 다음과 같은 경우에 발생할 수 있습니다.AWS IoT Greengrass코어 소프트웨어가 시작하지 않습니다. runtime.logcrash.log에서 특정 오류 정보를 확인합니다. 자세한 내용은 로그 문제 해결 섹션을 참조하세요.

 

디바이스 섀도우가 클라우드와 동기화하지 않습니다.

솔루션: 다음을 확인하십시오.AWS IoT Greengrass에 대한 사용 권한이iot:UpdateThingShadowiot:GetThingShadow의 작업Greengrass 서비스 역할. 서비스 역할이 AWSGreengrassResourceAccessRolePolicy 관리형 정책을 사용하는 경우 이러한 권한은 기본적으로 포함됩니다.

섀도우 동기화 제한 시간 문제 해결 단원을 참조하십시오.

 

오류: unable to accept TCP connection. accept tcp [::]:8000: accept4: too many open files.

솔루션: 에서 이 오류가 표시될 수 있습니다.greengrassd스크립트 출력입니다. 이는 AWS IoT Greengrass 코어 소프트웨어에 대한 파일 서술자 한도가 임계값에 도달했기 때문에 이 한도를 높여야 하는 경우에 발생할 수 있습니다.

다음 명령을 사용하고 AWS IoT Greengrass 소프트웨어를 다시 시작합니다.

ulimit -n 2048
참고

이 예제에서 한도는 2048로 증가합니다. 사용 사례에 적합한 하나의 값을 선택합니다.

 

오류: 런타임 execution error: container_linux.go:259: start lambda container. container_linux.go:345: container init container_linux.go:50: failed to start lambda container. container_linux.go:50: preparing rootfs 갖춰져\\\\\\\\\ "”.

솔루션: 다음 중 하나를 설치하려면AWS IoT Greengrass를 루트 디렉터리에서 바로 아래에 배치하거나 디렉터리에서AWS IoT Greengrass핵심 소프트웨어가 설치되고 상위 디렉토리에는execute권한을 모두 사용할 수 있습니다.

 

경고: [경고] - [5] GK 원격: 공개 키 데이터를 검색하는 동안 오류가 발생했습니다. 오류 수정: MQTT인증서에 대한 개인 키가 설정되지 않았습니다.

해결책: AWS IoT Greengrass는 일반 핸들러를 사용하여 모든 보안 주체의 속성을 검증합니다. 로컬 MQTT 서버에 대한 사용자 지정 프라이빗 키를 지정하지 않은 경우 runtime.log에서 이러한 경고가 발생합니다. 자세한 내용은 AWS IoT Greengrass 코어 보안 주체 섹션을 참조하세요.

 

오류: 역할 arn:aws:iam <account-id> <role-name> :역할/s3 url https: //< 에 액세스하려고 할 때 사용 권한이 거부되었습니다.region>-녹색 잔디 업데이트.s3. <region>.amazonaws.com/core/<architecture<distribution-version>>/그린풀-코어-.tar.gz

솔루션: 무선 (OTA) 업데이트가 실패하면 이 오류가 발생할 수 있습니다. 서명자 역할 정책에서 대상 추가AWS 리전로Resource. 이 서명자 역할은 AWS IoT Greengrass 소프트웨어 업데이트의 S3 URL을 미리 서명하는 데 사용됩니다. 자세한 내용은 S3 URL 서명자 역할을 참조하십시오.

 

이AWS IoT Greengrass코어를 사용하도록 구성되어네트워크 프록시그리고 Lambda 함수가 나가는 연결을 만들 수 없습니다.

솔루션: Lambda 함수에서 연결을 생성하는 데 사용하는 런타임 및 실행 파일에 따라 연결 시간 초과 오류가 표시될 수도 있습니다. Lambda 함수가 적절한 프록시 구성을 사용하여 네트워크 프록시를 통해 연결되는지 확인합니다.AWS IoT Greengrass는 프록시 구성을 통해 사용자 정의 Lambda 함수에 전달합니다.http_proxy,https_proxy, 및no_proxy환경 변수. 이러한 환경 변수는 다음 Python 코드와 같이 액세스할 수 있습니다.

import os print(os.environ['http_proxy'])

환경에 정의된 변수와 동일한 대/소문자를 사용합니다(예: 모두 소문자 http_proxy 또는 모두 대문자 HTTP_PROXY). 이러한 변수의 경우 AWS IoT Greengrass는 둘 다 지원합니다.

참고

boto3 또는 cURL 및 python requests 패키지와 같은 연결을 만드는 데 사용하는 대부분의 공통 라이브러리는 이러한 환경 변수를 기본값으로 사용합니다.

 

코어가 무한 연결-연결 해제 루프에 있습니다. runtime.log 파일에 연속적인 연결 및 연결 해제 항목 시리즈가 포함되어 있습니다.

솔루션: 다른 디바이스가 코어 사물 이름을 AWS IoT에 대한 MQTT 연결에 클라이언트 ID로 사용하도록 하드코딩되는 경우 이 상태가 발생할 수 있습니다. 동일의 동시 연결AWS 리전및AWS 계정은 고유한 클라이언트 ID를 사용해야 합니다. 기본적으로 코어는 코어 사물 이름을 이러한 연결에 클라이언트 ID로 사용합니다.

이 문제를 해결하려면 다른 디바이스에서 연결에 사용하는 클라이언트 ID를 변경(권장)하거나 코어의 기본값을 재정의할 수 있습니다.

코어 디바이스의 기본 클라이언트 ID를 재정의하려면

  1. 다음 명령을 실행해 Greengrass 데몬을 중단합니다.

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

  3. coreThing 객체에서 coreClientId 속성을 추가하고 이 값을 사용자 지정 클라이언트 ID로 설정합니다. 값은 1~128자 이내로 작성해야 합니다. 현재 고유해야 합니다.AWS 리전의 경우AWS 계정.

    "coreClientId": "MyCustomClientId"
  4. 데몬을 시작합니다.

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

 

오류: unable to start lambda container. container_linux.go:259: starting container process caused "process_linux.go:345: container init caused \"rootfs_linux.go:62: mounting \\\"proc\\\" to rootfs \\\"

솔루션: 일부 플랫폼에서는 이 오류가 발생할 수 있습니다.runtime.log시기AWS IoT Greengrass를 마운트하려고 시도하면/proc파일 시스템을 사용하여 Lambda 컨테이너를 만들 수 있습니다. 또는 operation not permittedEPERM과 비슷한 오류가 표시될 수 있습니다. 플랫폼에서 실행되는 테스트가 종속성 확인 스크립트에서 통과되는 경우에도 이러한 오류가 발생할 수 있습니다.

다음과 같은 가능한 해결 방안 중 하나를 수행하십시오.

  • Linux 커널에서 CONFIG_DEVPTS_MULTIPLE_INSTANCES 옵션을 활성화합니다.

  • 호스트에 대한 /proc 탑재 옵션을 rw,relatim 전용으로 설정합니다.

  • Linux 커널을 4.9 이상으로 업그레이드합니다.

참고

이 문제는 로컬 리소스 액세스를 위한 /proc 탑재와는 관련이 없습니다.

 

[ERROR] -런타임 실행 오류: 람다 컨테이너를 시작할 수 없습니다. {"errorString”: “failed to initialize container mounts: failed to initialize container mounts: failed to mask device in overlay upper dir: failed to create mask device in directory <ggc-path>: file exists”}

솔루션: 배포에 실패하면 runtime.log 에서 이 오류가 발생할 수 있습니다. Lambda 함수의 LambdaAWS IoT Greengrass그룹에서/usr디렉토리를 코어 파일 시스템에 저장합니다.

이 문제를 해결 하려면 그룹에 로컬 볼륨 리소스를 추가하고 그룹을 배포합니다. 리소스는 다음을 수행해야 합니다.

  • /usr소스 경로대상 경로로 지정

  • 리소스를 소유한 Linux 그룹의 OS 그룹 권한을 자동으로 추가

  • Lambda 함수와 연결하고 읽기 전용 액세스 허용

 

[오류] -배포에 실패했습니다. {"deploymentId”: "<deployment-id> “, “오류 문자열”: “pid가 있는 컨테이너 테스트 프로세스 <pid> 실패: 컨테이너 프로세스 상태: 종료 상태 1"}

솔루션: 배포에 실패하면 runtime.log 에서 이 오류가 발생할 수 있습니다. Lambda 함수의 LambdaAWS IoT Greengrass그룹에서/usr디렉토리를 코어 파일 시스템에 저장합니다.

확인하여이 경우인지 확인할 수 있습니다GGCanary.log에서 추가 오류를 확인하십시오. Lambda 함수가/usrdirectoryGGCanary.log에는 다음 오류가 포함됩니다.

[ERROR]-standard_init_linux.go:207: exec user process caused "no such file or directory"

이 문제를 해결 하려면 그룹에 로컬 볼륨 리소스를 추가하고 그룹을 배포합니다. 리소스는 다음을 수행해야 합니다.

  • /usr소스 경로대상 경로로 지정

  • 리소스를 소유한 Linux 그룹의 OS 그룹 권한을 자동으로 추가

  • Lambda 함수와 연결하고 읽기 전용 액세스 허용

 

솔루션: 에서 이 오류가 표시될 수 있습니다.runtime.log파일을 사용할 때AWS IoT Greengrass핵심 소프트웨어가 시작되지 않습니다. 이 문제는 Debian 운영 체제에서 더 일반적으로 발생할 수 있습니다.

이 문제를 해결하려면 다음과 같이 실행하십시오.

  1. 업그레이드AWS IoT Greengrass코어 소프트웨어를 v1.9.3 이상. 이 문제는 자동으로 해결됩니다.

  2. 업그레이드한 후에도 이 오류가 계속 발생하면AWS IoT Greengrass핵심 소프트웨어를 사용하려면system.useOverlayWithTmpfs속성을trueconfig.json파일로 이동합니다.

    예 Example

    { "system": { "useOverlayWithTmpfs": true }, "coreThing": { "caPath": "root-ca.pem", "certPath": "cloud.pem.crt", "keyPath": "cloud.pem.key", ... }, ... }
참고

오류 메시지에 AWS IoT Greengrass 코어 소프트웨어 버전이 표시됩니다. Linux 커널 버전을 찾으려면 uname -r을 실행합니다.

 

오류: [DEBUG] -Failed for file routes. Discarding message.

솔루션: 그룹에서 구독을 확인하고 구독이[DEBUG]메시지가 있습니다.

 

오류: [Errno 24] 열린 파일이 너무 많습니다. <lambda-function> [Errno 24] 열린 파일이 너무 많습니다.

솔루션: 함수가 를 인스턴스화되면 Lambda 함수 로그 파일에 이 오류가 표시될 수 있습니다.StreamManagerClient함수 핸들러에서. 처리기 외부에서 클라이언트를 만드는 것이 좋습니다. 자세한 내용은 StreamManagerClient를 사용하여 스트림 작업 섹션을 참조하세요.

 

배포 관련 문제

다음 정보를 사용하면 배포 문제를 해결하는 데 도움이 됩니다.

문제

 

현재 배포가 작동하지 않으며 이전의 작동하는 배포로 되돌려야 합니다.

솔루션: 사용AWS IoT콘솔 또는AWS IoT GreengrassAPI를 사용하여 이전 작업 배포를 재배포합니다. 그러면 코어 디바이스에 해당 그룹 버전이 배포됩니다.

배포를 재배포하려면(콘솔)

  1. 그룹 구성 페이지에서 배포를 선택합니다. 이 페이지에는 각 배포 시도의 날짜 및 시간, 그룹 버전, 상태를 포함하여 그룹의 배포 기록이 표시됩니다.

  2. 다시 배포하려는 배포가 포함된 행을 찾습니다. 에서상태열에서 줄임표 (...를 선택한 다음 를 선택합니다.재배포.

    배포에 대한 재배포 작업을 표시하는 배포 페이지.

배포를 재배포하려면(CLI)

  1. ListDeployments를 사용하여 재배포하려는 배포의 ID를 찾습니다. 예:

    aws greengrass list-deployments --group-id 74d0b623-c2f2-4cad-9acc-ef92f61fcaf7

    이 명령은 그룹의 배포 목록을 반환합니다.

    { "Deployments": [ { "DeploymentId": "8d179428-f617-4a77-8a0c-3d61fb8446a6", "DeploymentType": "NewDeployment", "GroupArn": "arn:aws:greengrass:us-west-2:123456789012:/greengrass/groups/74d0b623-c2f2-4cad-9acc-ef92f61fcaf7/versions/8dd1d899-4ac9-4f5d-afe4-22de086efc62", "CreatedAt": "2019-07-01T20:56:49.641Z" }, { "DeploymentId": "f8e4c455-8ac4-453a-8252-512dc3e9c596", "DeploymentType": "NewDeployment", "GroupArn": "arn:aws:greengrass:us-west-2::123456789012:/greengrass/groups/74d0b623-c2f2-4cad-9acc-ef92f61fcaf7/versions/4ad66e5d-3808-446b-940a-b1a788898382", "CreatedAt": "2019-07-01T20:41:47.048Z" }, { "DeploymentId": "e4aca044-bbd8-41b4-b697-930ca7c40f3e", "DeploymentType": "NewDeployment", "GroupArn": "arn:aws:greengrass:us-west-2::123456789012:/greengrass/groups/74d0b623-c2f2-4cad-9acc-ef92f61fcaf7/versions/1f3870b6-850e-4c97-8018-c872e17b235b", "CreatedAt": "2019-06-18T15:16:02.965Z" } ] }
    참고

    다음 AWS CLI 명령은 그룹 및 배포 ID에 대한 예제 값을 사용합니다. 명령을 실행할 때 이들 예제 값을 올바른 값으로 바꾸십시오.

  2. CreateDeployment를 사용하여 대상 배포를 재배포합니다. 배포 유형을 Redeployment로 설정합니다. 예:

    aws greengrass create-deployment --deployment-type Redeployment \ --group-id 74d0b623-c2f2-4cad-9acc-ef92f61fcaf7 \ --deployment-id f8e4c455-8ac4-453a-8252-512dc3e9c596

    이 명령은 새 배포의 ARN 및 ID를 반환합니다.

    { "DeploymentId": "f9ed02b7-c28e-4df6-83b1-e9553ddd0fc2", "DeploymentArn": "arn:aws:greengrass:us-west-2::123456789012:/greengrass/groups/74d0b623-c2f2-4cad-9acc-ef92f61fcaf7/deployments/f9ed02b7-c28e-4df6-83b1-e9553ddd0fc2" }
  3. GetDeploymentStatus를 사용하여 배포의 상태를 가져옵니다.

 

배포 시 403 Forbidden 오류가 로그에 나타납니다.

솔루션: 의 정책을 확인하십시오.AWS IoT Greengrass클라우드의 코어는 다음을 포함합니다."greengrass:*"를 허용 된 작업으로 설정합니다.

 

처음에 create-deployment 명령을 실행하면 ConcurrentDeployment 오류가 발생합니다.

솔루션: 배포가 진행될 수 있습니다. get-deployment-status를 실행하면 배포가 생성되었는지 확인할 수 있습니다. 그렇지 않으면 배포 생성을 다시 시도하십시오.

 

오류: Greengrass is is the Service Role or error: 실패함: TES 서비스 역할이 이 계정과 연결되어 있지 않습니다.

솔루션: 배포에 실패하면 이 오류가 발생할 수 있습니다. Greengrass 서비스 역할이AWS 계정현재 에서AWS 리전. 자세한 내용은 Greengrass 서비스 역할 관리(CLI) 또는 Greengrass 서비스 역할 관리(콘솔) 섹션을 참조하세요.

 

오류: unable to execute download step in deployment. error while downloading: error while downloading the Group definition file: ... x509: certificate has expired or is not yet valid

솔루션: 에서 이 오류가 표시될 수 있습니다.runtime.log배포에 실패하면 x509: certificate has expired or is not yet valid 메시지가 포함된 Deployment failed 오류가 발생하면 디바이스 클록을 확인합니다. TLS 및 X.509 인증서를 사용하는 경우 안전하게 IoT 시스템을 구축할 수 있지만 서버와 클라이언트의 시간이 정확해야 합니다. IoT 디바이스가 AWS IoT Greengrass 또는 서버 인증서를 사용하는 다른 TLS 서비스에 연결하려면 시간이 정확해야(오차 15분 이내) 합니다. 자세한 내용은 단원을 참조하십시오.디바이스 시간을 사용하여 검증AWS IoT서버 인증서사물 인터넷 에 대한AWS공식 블로그.

 

오류: 서명 확인 도중에 오류가 발생했습니다. The repository is not updated and the previous index files will be used. GPG 오류: https://dnw9lb6lzp2d8.cloudfront.net 안정 릴리스: 다음 서명을 확인할 수 없습니다. 퍼브키 어플러

솔루션: 이 오류는 APT 리포지토리 패키지를 인증하는 데 사용된 신뢰할 수 있는 키가AWS IoT Greengrass이 (가) 누락되었거나 만료되었거나 유효하지 않습니다. 이 문제를 해결하려면 키 링 패키지를 설치합니다.

wget -O aws-iot-greengrass-keyring.deb https://d1onfpft10uf5o.cloudfront.net/greengrass-apt/downloads/aws-iot-greengrass-keyring.deb sudo dpkg -i aws-iot-greengrass-keyring.deb

자세한 내용은 apt를 사용하여AWS IoT Greengrass코어 소프트웨어 섹션을 참조하세요.

 

배포가 완료되지 않습니다.

솔루션: 해결 방법:

  • 사용자의 코어 디바이스에서 AWS IoT Greengrass 데몬이 실행 중인지 확인합니다. 코어 디바이스 터미널에서 다음 명령을 실행하여 데몬이 실행 중인지 확인하고 필요한 경우 시작합니다.

    1. 데몬이 실행 중인지 확인하려면:

      ps aux | grep -E 'greengrass.*daemon'

      출력에 root에 대한 /greengrass/ggc/packages/1.11.3/bin/daemon 입력이 포함되어 있는 경우에는 데몬이 실행 중인 것입니다.

      경로의 버전은 코어 디바이스에 설치된 AWS IoT Greengrass 코어 소프트웨어 버전에 따라 다릅니다.

    2. 데몬을 시작하려면:

      cd /greengrass/ggc/core/ sudo ./greengrassd start
  • 코어 디바이스가 연결되어 있고 코어 연결 엔드포인트가 올바르게 구성되어 있는지 확인합니다.

 

오류: java 또는 java8 실행 파일을 찾을 수 없습니다. <deployment-id>Deplofor group <group-id> failed error: worker is <worker-id> failed to initialize from reason installed Java version type NewDeployment lofor group failed error: worker for Installed Java

솔루션: 스트림 관리자가 활성화되어 있는 경우AWS IoT Greengrass코어를 배포하려면 그룹을 배포하기 전에 코어 디바이스에 Java 8 런타임을 설치해야 합니다. 자세한 내용은 스트림 관리자에 대한 요구 사항을 참조하십시오. 스트림 관리자는 기본적으로 활성화되어 있는기본 그룹 생성워크플로의AWS IoT콘솔을 사용하여 그룹을 생성할 수 있습니다.

또는 스트림 관리자를 비활성화한 다음 그룹을 배포합니다. 자세한 내용은 스트림 관리자 설정 구성(콘솔) 섹션을 참조하세요.

 

배포가 완료되지 않고 runtime.log에 여러 개의 "wait 1s for container to stop" 입력이 포함됩니다.

솔루션: 코어 디바이스 터미널에서 다음 명령을 실행하여 AWS IoT Greengrass 데몬을 다시 시작합니다.

cd /greengrass/ggc/core/ sudo ./greengrassd stop sudo ./greengrassd start

 

배포가 완료되지 않고runtime.log에 “[ERROR] -Greengrass deployment error: failed to report deployment status back to cloud {”deploymentId”: "<deployment-id> “, “errorString”: "“: “PUT을 시작하지 못했습니다. 끝점: https://<deployment-status>, 오류: 넣어 https://<deployment-status>: 프록시 연결 tcp: x509: 알 수 없는 기관에 의해 서명 된 인증서 "}”

솔루션: 에서 이 오류가 표시될 수 있습니다.runtime.logGreengrass 코어가 HTTPS 프록시 연결을 사용하도록 구성되어 있고 프록시 서버 인증서 체인이 시스템에서 신뢰되지 않으면 에 해당합니다. 이 문제를 해결하려면 루트 CA 인증서에 인증서 체인을 추가합니다. Greengrass 코어는 이 파일의 인증서를 AWS IoT Greengrass와의 HTTPS 및 MQTT 연결에서 TLS 인증에 사용되는 인증서 풀에 추가합니다.

다음 예에서는 루트 CA 인증서 파일에 추가된 프록시 서버 CA 인증서를 보여줍니다.

# My proxy CA -----BEGIN CERTIFICATE----- MIIEFTCCAv2gAwIQWgIVAMHSAzWG/5YVRYtRQOxXUTEpHuEmApzGCSqGSIb3DQEK \nCwUAhuL9MQswCQwJVUzEPMAVUzEYMBYGA1UECgwP1hem9uLmNvbSBJbmMuMRww ... content of proxy CA certificate ... +vHIRlt0e5JAm5\noTIZGoFbK82A0/nO7f/t5PSIDAim9V3Gc3pSXxCCAQoFYnui GaPUlGk1gCE84a0X\n7Rp/lND/PuMZ/s8YjlkY2NmYmNjMCAXDTE5MTEyN2cM216 gJMIADggEPADf2/m45hzEXAMPLE= -----END CERTIFICATE----- # Amazon Root CA 1 -----BEGIN CERTIFICATE----- MIIDQTCCAimgF6AwIBAgITBmyfz/5mjAo54vB4ikPmljZKyjANJmApzyMZFo6qBg ADA5MQswCQYDVQQGEwJVUzEPMA0tMVT8QtPHRh8jrdkGA1UEChMGDV3QQDExBBKW ... content of root CA certificate ... o/ufQJQWUCyziar1hem9uMRkwFwYVPSHCb2XV4cdFyQzR1KldZwgJcIQ6XUDgHaa 5MsI+yMRQ+hDaXJiobldXgjUka642M4UwtBV8oK2xJNDd2ZhwLnoQdeXeGADKkpy rqXRfKoQnoZsG4q5WTP46EXAMPLE -----END CERTIFICATE-----

기본적으로 루트 CA 인증서 파일은 /greengrass-root/certs/root.ca.pem에 있습니다. 핵심 장치에서 위치를 찾으려면crypto.caPath속성config.json.

참고

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

 

오류: <deployment-id>New배포 유형의 배포 그룹에 대한 <group-id> 실패 오류: 처리하는 중 오류가 발생했습니다. group config is invalid: 112 or [119 0] 에는 파일에 대한 rw 권한이 없습니다. <path>을 선택합니다.

솔루션: 의 소유자 그룹이 있는지 확인합니다.<path>디렉터리에 대한 읽기 및 쓰기 권한이 있습니다.

 

오류: <list-of-function-arns> 가 root로 실행되도록 구성되어 있지만 Greengrass is configured Lambda function to root permission.

솔루션: 에서 이 오류가 표시될 수 있습니다.runtime.log배포에 실패하면 을 (를) 구성했는지 확인합니다.AWS IoT Greengrass를 사용하여 Lambda 함수가 루트 권한으로 실행되도록 해야 합니다. 의 값을 변경하려면allowFunctionsToRunAsRootingreengrass_root/config/config.jsontoyes를 바꾸거나 Lambda 함수를 변경해 다른 사용자/그룹으로 실행합니다. 자세한 내용은 루트로 Lambda 함수 실행 섹션을 참조하세요.

 

오류: <deployment-id>New배포 유형의 배포 그룹에 대한 <group-id> 실패 오류: Greengrass deployment error: failed to execute download step in deployment. error: failed to run: failed to load group file: failed to UID를 찾을 수 없습니다. UID, UID: ggc_user: user: unknown user ggc_user.

솔루션: 만약기본 액세스 ID의AWS IoT Greengrass그룹에서 표준 시스템 계정을 사용하는 경우ggc_userggc_group그룹이 디바이스에 있어야 합니다. 사용자 및 그룹을 추가하는 방법에 대한 지침은 이 단계를 참조하십시오. 이름을 표시된 대로 정확히 입력해야 합니다.

 

오류: [ERROR] -런타임 실행 오류: 람다 컨테이너를 시작할 수 없습니다. {"errorString”: “failed to initialize container mounts: failed to initialize container mounts: failed to mask device in overlay upper dir: failed to create mask device in directory <ggc-path>: file exists”}

솔루션: 에서 이 오류가 표시될 수 있습니다.runtime.log배포에 실패하면 이 오류는 Greengrass 그룹의 Lambda 함수가/usr디렉토리를 코어 파일 시스템에 저장합니다. 이 문제를 해결 하려면 그룹에 로컬 볼륨 리소스를 추가하고 그룹을 배포합니다. 리소스는 다음 조건을 충족해야 합니다.

  • /usr소스 경로대상 경로로 지정

  • 리소스를 소유한 Linux 그룹의 OS 그룹 권한을 자동으로 추가

  • Lambda 함수와 연결하고 읽기 전용 액세스 허용

 

오류: <deployment-id>Deplofor group <group-id> failed error: process start failed to start failed: container_linux.go:259: start container process container_linux.go:250: execuc setns process init failed to run exec setns process for init container_linux.go:259: start: start child process].

솔루션: 배포에 실패하면 이 오류가 발생할 수 있습니다. 배포를 다시 시도하십시오.

 

오류: [경고] -MQTT [클라이언트] 다이얼 TCP: 조회 <host-prefix> -ats.iot. <region>.amazonaws.com: 그러한 호스트는 없습니다... [ERROR] -Greengrass deployment error: failed to report deployment status back to cloud... net/http: request in connection (Client.Timeout 초과)

솔루션: 를 사용하는 경우 이 오류가 발생할 수 있습니다.systemd-resolved를 사용할 수 있습니다.DNSSEC설정을 기본적으로 사용합니다. 그 결과 많은 퍼블릭 도메인이 인식되지 않습니다. AWS IoT Greengrass 엔드포인트에 도달하려는 시도가 호스트를 찾지 못하고, 따라서 배포가 In Progress 상태를 지속합니다.

다음 명령 및 출력을 사용하여 이 문제를 테스트할 수 있습니다. 를 바꿉니다.region자리 표시자를 사용하여 끝점에서 를 실행하십시오.AWS 리전.

$ ping greengrass-ats.iot.region.amazonaws.com ping: greengrass-ats.iot.region.amazonaws.com: Name or service not known
$ systemd-resolve greengrass-ats.iot.region.amazonaws.com greengrass-ats.iot.region.amazonaws.com: resolve call failed: DNSSEC validation failed: failed-auxiliary

한 가지 가능한 해결책은 DNSSEC를 비활성화하는 것입니다. DNSSECfalse일 경우 DNS 조회가 DNSSEC 검증되지 않습니다. 자세한 내용은 단원을 참조하십시오.알려진 문제systemd.

  1. DNSSEC=false/etc/systemd/resolved.conf에 추가합니다.

  2. systemd-resolved을 다시 시작합니다.

resolved.confDNSSEC에 대한 자세한 내용은 터미널에서 man resolved.conf를 실행하십시오.

 

그룹 생성/함수 생성 관련 문제

다음 정보를 사용하면 문제를 해결하는 데 도움이 됩니다.AWS IoT Greengrass그룹 또는 Greengrass Lambda 함수.

 

오류: 'IsolationMode' configuration for the group is invalid.

솔루션: function-definition-versionDefaultConfig 내의 IsolationMode 값이 지원되지 않는 경우 이 오류가 발생합니다. 지원되는 값은 GreengrassContainerNoContainer입니다.

 

오류: arn이있는 함수의 'IsolationMode 'configuration for configuration for <function-arn> invalid.

솔루션: 이 오류는 다음과 같은 경우에 발생합니다.IsolationMode값에 <function-arn> 있는function-definition-version는 지원되지 않습니다. 지원되는 값은 GreengrassContainerNoContainer입니다.

 

오류: <function-arn>IsolationMode=NoContainer.

솔루션: 이 오류는 를 지정할 때 발생합니다.MemorySize값을 사용하고 컨테이너화 없이 실행하도록 선택할 수 있습니다. 컨테이너화 없이 실행되는 Lambda 함수는 메모리 제한을 설정할 수 없습니다. 제한을 제거하거나 Lambda 함수를 변경하여AWS IoT Greengrass컨테이너입니다.

 

오류: Access Sysfs configuration for function for function for arn <function-arn> is is failed to IsolationMode = NoContainer.

솔루션: 지정할 때 이 오류가 발생 합니다.trueAccessSysfs를 사용하고 컨테이너화 없이 실행하도록 선택할 수 있습니다. 컨테이너화 없이 실행되는 Lambda 함수는 파일 시스템에 곧바로 액세스할 수 있도록 코드를 업데이트해야 하며AccessSysfs. 다음 중 하나의 값을 지정할 수 있습니다falseAccessSysfs또는 Lambda 함수를 변경하여AWS IoT Greengrass컨테이너입니다.

 

오류: ARN 함수의 MemorySize 구성은 GreengrassContainer <function-arn> = GreengrassContainer.

솔루션: 이 오류는 지정 하지 않았을 때 발생 합니다.MemorySize에서 실행 중인 Lambda 함수의 Lambda 제한입니다.AWS IoT Greengrass컨테이너입니다. MemorySize 값을 지정해 오류를 해결하십시오.

 

오류: <function-arn>함수는 <resource-type> IsolationMode = NoContainer.

솔루션: 액세스할 수 없습니다.Local.Device,Local.Volume,ML_Model.SageMaker.Job,ML_Model.S3_Object또는S3_Object.Generic_Archive리소스 유형을 컨테이너화 없이 Lambda 함수를 실행할 때 발생합니다. 해당 리소스 타입이 필요한 경우 AWS IoT Greengrass 컨테이너에서 실행해야 합니다. 또한 Lambda 함수의 코드를 변경함으로써 컨테이너화 없이 실행 시 로컬 디바이스에 곧바로 액세스할 수도 있습니다.

 

오류: 함수에 대한 실행 구성은 <function-arn> 허용되지 않습니다.

솔루션: 이 오류는 시스템 Lambda 함수를 만들 때 발생합니다.GGIPDetector또는GGCloudSpooler를 지정했습니다.IsolationMode또는RunAs구성. 생략해야 합니다.Execution이 시스템 Lambda 함수의 파라미터입니다.

 

검색 문제

다음 정보를 사용하면 AWS IoT Greengrass 검색 서비스의 문제 해결에 도움이 됩니다.

 

오류: 디바이스가 너무 많은 그룹의 멤버입니다. 디바이스는 최대 10개 그룹에 속할 수 있습니다.

솔루션: 이는 알려진 제한사항입니다. 한 Greengrass 디바이스는 최대 10개 그룹의 멤버일 수 있습니다.

 

기계 학습 리소스 문제

다음 정보를 사용하여 기계 학습 리소스의 문제를 해결할 수 있습니다.

 

InvalidMLModelOwner - GroupOwnerSetting은 ML 모델 리소스에서 제공되지만, GroupOwner 또는 GroupPermission은 존재하지 않습니다

솔루션: 기계 학습 리소스에 포함된 경우 이 오류가 발생하여ResourceDownloadOwnerSetting객체를 사용할 수 있지만 필요한GroupOwner또는GroupPermission속성이 정의되어 있지 않습니다. 이 문제를 해결하려면 누락된 속성을 정의합니다.

 

NoContainer 함수는 기계 학습 리소스를 연결할 때 사용 권한을 구성할 수 없습니다. <function-arn>은 리소스 액세스 정책에 권한<ro/rw>이 있는 기계 학습 리소스<resource-id>를 나타냅니다.

솔루션: 컨테이너화되지 않은 Lambda 함수가 기계 학습 리소스에 대한 함수 수준 권한을 지정하는 경우 이 오류가 발생합니다. 컨테이너화되지 않은 함수는 기계 학습 리소스에 정의된 리소스 소유자 권한으로부터 권한을 상속해야 합니다. 이 문제를 해결하려면 단원을 선택합니다.리소스 소유자 권한 상속(콘솔)Lambda 함수의 리소스 액세스 정책에서 사용 권한 제거(API).

 

함수 <function-arn>은 ResourceAccessPolicy 및 리소스 OwnerSetting 모두에서 권한이 누락된 기계 학습 리소스 <resource-id>를 나타냅니다.

솔루션: 기계 학습 리소스에 대한 권한이 연결된 Lambda 함수 또는 리소스에 대해 구성되지 않은 경우 이 오류가 발생합니다. 이 문제를 해결하려면 에서 권한을 구성합니다.ResourceAccessPolicyLambda 함수의 속성 또는OwnerSetting리소스의 속성입니다.

 

함수 <function-arn>은 권한 \"rw\"을 가진 기계 학습 리소스 <resource-id>를 가리키며, 리소스 소유자 설정 GroupPermission은 \"ro\"만 허용합니다.

솔루션: 연결된 Lambda 함수에 대해 정의된 액세스 권한이 기계 학습 리소스에 대해 정의된 리소스 소유자 권한을 초과하는 경우 이 오류가 발생합니다. 이 문제를 해결하려면 Lambda 함수에 대해 더 제한적인 권한을 설정하거나, 리소스 소유자에 대해 덜 제한적인 권한을 설정합니다.

 

NoContainer 함수 <function-arn>는 중첩된 대상 경로의 리소스를 가리킵니다.

솔루션: 컨테이너화되지 않은 Lambda 함수에 연결된 여러 개의 기계 학습 리소스가 동일한 대상 경로 또는 중첩된 대상 경로를 사용하는 경우 이 오류가 발생합니다. 이 문제를 해결하려면 리소스에 대해 별도의 대상 경로를 지정합니다.

 

Lambda <function-arn>은 동일한 그룹 소유자 ID를 공유하여 리소스 <resource-id>에 대한 액세스 권한을 획득합니다.

솔루션: 이 오류는runtime.log같은 OS 그룹이 Lambda 함수의실행 방식자격 증명 및리소스 소유자를 사용할 수 있지만 리소스가 Lambda 함수에 연결되어 있지 않습니다. 이 구성은 리소스에 액세스하는 데 사용할 수 있는 암시적 권한을 Lambda 함수에 부여합니다.AWS IoT Greengrass권한 부여

이 문제를 해결하려면 속성 중 하나에 대해 다른 OS 그룹을 사용하거나 기계 학습 리소스를 Lambda 함수에 연결합니다.

Docker 내 AWS IoT Greengrass 코어 문제

다음 정보를 사용하면 문제를 해결하는 데 도움이 됩니다.AWS IoT Greengrass코어를 도커 컨테이너에서 실행하십시오.

 

오류: 알 수 없는 옵션: no-include-email.

솔루션: 이 오류는 실행할 때 발생할 수 있습니다.aws ecr get-login명령입니다. 최신 버전이 있는지 확인합니다.AWS CLI버전이 설치되어 있는지 확인합니다 (예를 들어, 다음을 실행하십시오. pip install awscli --upgrade --user). Windows를 사용하고 있고 MSI 설치 관리자를 사용하여 CLI를 설치한 경우 설치 프로세스를 반복해야 합니다. 자세한 내용은 단원을 참조하십시오.다음 설치AWS Command Line Interface에서 Microsoft Windows WindowsAWS Command Line Interface사용 설명서.

 

경고: IPv4가 비활성화되어 있습니다. 네트워킹이 작동하지 않습니다.

솔루션: 이 경고 또는 유사한 메시지를 받을 수 있습니다.AWS IoT GreengrassLinux 컴퓨터에서. 이 단계의 설명에 따라 IPv4 네트워크 전달을 활성화합니다. IPv4 전달을 활성화하지 않으면 AWS IoT Greengrass 클라우드 배포 및 MQTT 통신이 작동하지 않습니다. 자세한 내용은 도커 설명서의 런타임에 네임스페이스 커널 파라미터(sysctls) 구성을 참조하십시오.

 

오류: 방화벽이 Windows와 컨테이너 간의 파일 공유를 차단하고 있습니다.

솔루션: 이 오류 또는Firewall DetectedWindows 컴퓨터에서 Docker를 실행하는 동안 메시지가 표시됩니다. 이 오류는 VPN(가상 프라이빗 네트워크)에 로그인되어 있고 네트워크 설정 때문에 공유 드라이브가 탑재되지 않는 경우에도 발생할 수 있습니다. 이러한 경우에는 VPN을 끄고 Docker 컨테이너를 재실행합니다.

 

오류: 오류 (AccessDenieException) 발생 (AccessDenieGetAuthorizationToken ception) 사용자: arn:aws:iam <account-id> :user/is invalid <user-name>: ecr:getautorizationToken on resource: *

이 오류는 실행 중일 때 이 오류가 발생할 수 있습니다.aws ecr get-login-password명령을 사용하여 Amazon ECR 리포지토리에 액세스할 수 있는 권한이 없는 경우 자세한 내용은 단원을 참조하십시오.Amazon ECR 리포지토리 정책 예제하나의 Amazon ECR 리포지토리에 액세스Amazon ECR 사용 설명서.

 

오류: Service Greengrass 컨테이너를 생성할 수 없습니다. 충돌. The container name "/aws-iot-greengrass" is already in use.

솔루션: 이 문제는 이전 컨테이너에서 컨테이너 이름을 사용하는 경우 발생할 수 있습니다. 이 문제를 해결하려면 다음 명령을 실행하여 이전 Docker 컨테이너를 제거하십시오.

docker rm -f $(docker ps -a -q -f "name=aws-iot-greengrass")

 

오류: [FATAL] -Failed the thread mount 네임 스페이스를 재설정하는 오류: “작업이 허용되지 않음”. To maintain consistency, GGC will crash and need to be manually restarted.

솔루션: 이 오류는runtime.log를 배포하려고 할 때 발생할 수 있습니다.GreengrassContainerLambda 함수를AWS IoT GreengrassDocker 컨테이너에서 를 실행하십시오. 현재 만NoContainerLambda 함수는 Greengrass 도커 컨테이너에 배포할 수 있습니다.

이 문제를 해결하려면모든 Lambda 함수가NoContainermode새 배포를 시작하려면 그런 다음 컨테이너를 시작할 때 기존deployment디렉토리에서AWS IoT Greengrass코어 도커 컨테이너. 대신 Docker 컨테이너에 빈 deployment 디렉터리를 만들고 바인드 마운트하십시오. 이를 통해 새로운 Docker 컨테이너는 Lambda 함수로 최신 배포를 수신할 수 있습니다.NoContainer모드로 전환합니다.

자세한 내용은 도커 컨테이너에서의 AWS IoT Greengrass 실행 섹션을 참조하세요.

로그 문제 해결

로그를 CloudWatch Logs 로그에 보낼 것인지, 로그를 로컬 파일 시스템에 저장할 것인지 아니면 둘 다 수행할 것인지 여부 등 Greengrass 그룹에 대한 로깅 설정을 구성할 수 있습니다. 문제를 해결할 때 자세한 정보를 얻으려면 일시적으로 로깅 수준을 DEBUG로 변경할 수 있습니다. 로깅 설정에 대한 변경 사항은 그룹을 배포할 때 적용됩니다. 자세한 내용은 AWS IoT Greengrass의 로깅 구성 섹션을 참조하세요.

로컬 파일 시스템에서 AWS IoT Greengrass는 다음 위치에 로그를 저장합니다. 파일 시스템에서 로그를 읽으려면 루트 권한이 필요합니다.

greengrass-root/ggc/var/log/crash.log

메시지가 생성되면 를 표시합니다.AWS IoT Greengrass코어 충돌이 발생합니다.

greengrass-root/ggc/var/log/system/runtime.log

어떤 구성요소가 실패했는지에 관한 메시지를 표시합니다.

greengrass-root/ggc/var/log/system/

인증서 관리자 및 연결 관리자와 같은 AWS IoT Greengrass 시스템 구성 요소의 모든 로그가 포함됩니다. ggc/var/log/system/ggc/var/log/system/runtime.log의 메시지를 사용하여 AWS IoT Greengrass 시스템 구성 요소에서 어떤 오류가 발생했는지를 확인할 수 있어야 합니다.

greengrass-root/ggc/var/log/system/localwatch/

에 대 한 로그를 포함 합니다.AWS IoT Greengrass구성 요소가 CloudWatch Logs Logs에 Greengrass 로그를 업로드하는 것을 처리합니다. CloudWatch 에서 Greengrass 로그를 볼 수 없는 경우 이러한 로그를 사용하여 문제를 해결할 수 있습니다.

greengrass-root/ggc/var/log/user/

Lambda 함수의 모든 로그가 포함됩니다. 이 폴더를 확인하여 로컬 Lambda 함수의 오류 메시지를 찾습니다.

참고

기본적으로 greengrass-root/greengrass 디렉터리입니다. 쓰기 디렉터리가 구성되어 있는 경우에는 로그가 이 디렉터리 아래 있습니다.

로그가 클라우드상에 저장되도록 구성된 경우 CloudWatch Logs s를 사용하여 로그 메시지를 봅니다.crash.log은 (는) 파일 시스템 로그에서만 발견됩니다.AWS IoT Greengrass코어 디바이스입니다.

다음의 경우,AWS IoT이 (가) CloudWatch 에 로그를 쓰도록 구성된 경우 이러한 로그를 확인하여 시스템 구성 요소가 에 연결을 시도할 때 연결 오류가 발생하는지 확인합니다.AWS IoT.

AWS IoT Greengrass 로깅에 대한 자세한 내용은 AWS IoT Greengrass 로그를 사용하여 모니터링 단원을 참조하십시오.

참고

AWS IoT Greengrass 코어 소프트웨어 v1.0에 대한 로그는 greengrass-root/var/log 디렉터리 아래에 저장됩니다.

스토리지 문제 해결

로컬 파일 스토리지가 가득 차면 다음과 같이 일부 구성 요소를 시작하지 못할 수도 있습니다.

  • 로컬 섀도우 업데이트가 수행되지 않습니다.

  • NewAWS IoT Greengrass코어 MQTT 서버 인증서를 로컬로 다운로드할 수 없습니다.

  • 배포에 실패합니다.

로컬에서 사용 가능한 여유 공간을 항상 파악하고 있어야 합니다. 배포된 Lambda 함수의 크기, 로깅 구성을 기준으로 하여 여유 공간을 계산할 수 있습니다 (로그 문제 해결) 및 로컬에 저장된 섀도우 수를 지정합니다.

메시지 문제 해결

AWS IoT Greengrass에서 로컬로 보내는 모든 메시지는 QoS 0과 함께 전송됩니다. 기본적으로 AWS IoT Greengrass은(는) 인 메모리 대기열에 메시지를 저장합니다. 따라서 Greengrass 코어가 재시작되면(예: 그룹 배포 또는 디바이스 재부팅 이후) 처리되지 않은 메시지가 사라집니다. 그러나 구성 할 수 있습니다.AWS IoT Greengrass(v1.6 이상) 을 사용하면 파일 시스템에 메시지를 캐싱하여 코어 재시작에도 유지가 되도록 파일 시스템에 메시지를 캐싱할 수 있습니다. 또한 대기열 크기를 구성할 수 있습니다. 대기열 크기를 구성하는 경우에는 262144 바이트(256 KB) 이상인지 확인합니다. 이 값보다 작으면 AWS IoT Greengrass이(가) 적절하게 시작될 수 없습니다. 자세한 내용은 클라우드 대상을 위한 MQTT 메시지 대기열 섹션을 참조하세요.

참고

기본 인 메모리 대기열을 사용하는 경우에는 서비스 중단이 최소화될 때 그룹을 배포하거나 디바이스를 재시작하는 것이 좋습니다.

AWS IoT에서 영구 세션을 설정하도록 코어를 구성할 수도 있습니다. 이렇게 하면 코어에서 전송된 메시지를 수신할 수 있습니다.AWS 클라우드코어가 오프라인 상태일 때. 자세한 내용은 AWS IoT Core를 사용하는 MQTT 영구 세션 섹션을 참조하세요.

섀도우 동기화 제한 시간 문제 해결

Greengrass 코어 디바이스와 클라우드 간 통신에 상당한 시간 지연이 발생할 경우, 제한 시간으로 인해 섀도우 동기화에 실패할 수 있습니다. 이런 경우 다음과 유사한 로그 항목이 표시됩니다.

[2017-07-20T10:01:58.006Z][ERROR]-cloud_shadow_client.go:57,Cloud shadow client error: unable to get cloud shadow what_the_thing_is_named for synchronization. Get https://1234567890abcd.iot.us-west-2.amazonaws.com:8443/things/what_the_thing_is_named/shadow: net/http: request canceled (Client.Timeout exceeded while awaiting headers) [2017-07-20T10:01:58.006Z][WARN]-sync_manager.go:263,Failed to get cloud copy: Get https://1234567890abcd.iot.us-west-2.amazonaws.com:8443/things/what_the_thing_is_named/shadow: net/http: request canceled (Client.Timeout exceeded while awaiting headers) [2017-07-20T10:01:58.006Z][ERROR]-sync_manager.go:375,Failed to execute sync operation {what_the_thing_is_named VersionDiscontinued []}"

가능한 해결 방법은 코어 디바이스가 호스트 응답을 기다리는 시간을 구성하는 것입니다. 열기config.json파일greengrass-root/config을 추가하려면system.shadowSyncTimeout필드에 시간 초과 값을 초 단위로 입력합니다. 예:

{ "system": { "shadowSyncTimeout": 10 }, "coreThing": { "caPath": "root-ca.pem", "certPath": "cloud.pem.crt", "keyPath": "cloud.pem.key", ... }, ... }

config.json에 지정된 shadowSyncTimeout 값이 없는 경우 기본값은 5초입니다.

참고

AWS IoT Greengrass 코어 소프트웨어 v1.6 및 이전 버전의 경우 기본 shadowSyncTimeout은 1초입니다.

AWS IoT Greengrass 포럼 확인

이 주제의 문제 해결 정보를 사용해 문제를 해결할 수 없는 경우에는 관련 문제에 대해 AWS IoT Greengrass 포럼을 검색하거나 새 포럼 스레드를 게시할 수 있습니다. AWS IoT Greengrass 팀 구성원은 적극적으로 포럼을 모니터링합니다.