

지원 종료 공지: 2026년 10월 7일에는에 대한 지원을 중단할 AWS 예정입니다 AWS IoT Greengrass Version 1. 2026년 10월 7일 이후에는 더 이상 AWS IoT Greengrass V1 리소스에 액세스할 수 없습니다. 자세한 내용은 [에서 마이그레이션 AWS IoT Greengrass Version 1](https://docs.aws.amazon.com/greengrass/v2/developerguide/migrate-from-v1.html)을 참조하세요.

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

# 문제 해결 AWS IoT Greengrass
<a name="gg-troubleshooting"></a>

이 섹션에서는 문제를 해결하는 데 도움이 되는 문제 해결 정보와 가능한 솔루션을 제공합니다 AWS IoT Greengrass.

<a name="gg-limits-genref"></a>할당 AWS IoT Greengrass 량(한도)에 대한 자세한 내용은의 [Service Quotas](https://docs.aws.amazon.com/general/latest/gr/greengrass.html#limits_greengrass)를 참조하세요*Amazon Web Services 일반 참조*.

## AWS IoT Greengrass 핵심 문제
<a name="gg-troubleshooting-coreissues"></a>

 AWS IoT Greengrass 코어 소프트웨어가 시작되지 않는 경우 다음 일반 문제 해결 단계를 시도하세요.
+ 아키텍처에 적합한 바이너리를 설치했는지 확인합니다. 자세한 내용은 [AWS IoT Greengrass 코어 소프트웨어](what-is-gg.md#gg-core-download-tab)를 참조하십시오.
+ 코어 장치가 로컬 스토리지를 사용할 수 있는지 확인합니다. 자세한 내용은 [스토리지 문제 해결](#troubleshooting-storage) 단원을 참조하십시오.
+ `runtime.log` 및 `crash.log`에서 오류 메시지가 있는지 확인합니다. 자세한 내용은 [로그 문제 해결](#troubleshooting-logs) 단원을 참조하십시오.

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

**Topics**
+ [오류: The configuration file is missing the CaPath, CertPath or KeyPath. The Greengrass daemon process with [pid = <pid>] died.](#troubleshoot-config-file-version)
+ [오류: Failed to parse /<greengrass-root>/config/config.json.](#troubleshoot-config-file-invalid)
+ [오류: Error occurred while generating TLS config: ErrUnknownURIScheme](#troubleshooting-unknown-uri-scheme)
+ [오류: Runtime failed to start: unable to start workers: container test timed out.](#troubleshoot-post-start-health-check)
+ [오류: Failed to invoke PutLogEvents on local Cloudwatch, logGroup: /GreengrassSystem/connection\_manager, error: RequestError: send request failed caused by: Post http://<path>/cloudwatch/logs/: dial tcp <address>: getsockopt: connection refused, response: \{ \}.](#troubleshoot-cloudwatch-logs)
+ [오류: 다음 이유로 인해 서버를 생성할 수 없습니다. 그룹을 로드하지 못했습니다: chmod /<greengrass-root>/ggc/deployment/lambda/arn:aws:lambda:<region>:<account-id>:function:<function-name>:<version>/<file-name>: no such file or directory.](#troubleshoot-lambda-executable-handler)
+ [컨테이너화 없이 실행에서 Greengrass 컨테이너에서 실행으로 변경한 후에는 AWS IoT Greengrass 코어 소프트웨어가 시작되지 않습니다.](#troubleshoot-no-container)
+ [오류: Spool size should be at least 262144 bytes.](#troubleshoot-spool-size)
+ [오류: [ERROR]-Cloud messaging error: Error occurred while trying to publish a message. \{"errorString": "operation timed out"\}](#troubleshoot-mqtt-operation-timed-out)
+ [오류: container\_linux.go:344: starting container process caused "process\_linux.go:424: container init caused \\"rootfs\_linux.go:64: mounting \\\\\\"/greengrass/ggc/socket/greengrass\_ipc.sock\\\\\\" to rootfs \\\\\\"/greengrass/ggc/packages/<version>/rootfs/merged\\\\\\" at \\\\\\"/greengrass\_ipc.sock\\\\\\" caused \\\\\\"stat /greengrass/ggc/socket/greengrass\_ipc.sock: permission denied\\\\\\"\\"".](#troubleshoot-umask-permission)
+ [오류: Greengrass daemon running with PID: <process-id>. Some system components failed to start. Check 'runtime.log' for errors.](#troubleshoot-system-components)
+ [장치 섀도우가 클라우드와 동기화하지 않습니다.](#troubleshoot-shadow-sync)
+ [오류: unable to accept TCP connection. accept tcp [::]:8000: accept4: too many open files.](#troubleshoot-file-descriptor-limit)
+ [오류: Runtime execution error: unable to start lambda container. container\_linux.go:259: starting container process caused "process\_linux.go:345: container init caused \\"rootfs\_linux.go:50: preparing rootfs caused \\\\\\"permission denied\\\\\\"\\"".](#troubleshoot-execute-permissions)
+ [경고: [WARN]-[5]GK Remote: Error retrieving public key data: ErrPrincipalNotConfigured: private key for MqttCertificate is not set.](#troubleshoot-mqttcertificate-warning)
+ [오류: 역할을 사용하려고 할 때 권한이 거부되었습니다.<arn:aws:iam::<account-id>:role/<role-name> to access s3 url https://<region>-greengrass-updates.s3.<region>.amazonaws.com/core/<architecture>/greengrass-core-<distribution-version>.tar.gz.](#troubleshoot-ota-region-access)
+ [AWS IoT Greengrass 코어는 [네트워크 프록시](gg-core.md#alpn-network-proxy)를 사용하도록 구성되며 Lambda 함수는 발신 연결을 수행할 수 없습니다.](#troubleshoot-lambda-proxy-network-connections)
+ [코어가 무한 연결-연결 해제 루프에 있습니다. runtime.log 파일에 연속적인 연결 및 연결 해제 항목 시리즈가 포함되어 있습니다.](#config-client-id)
+ [오류: 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 \\\\\\"](#troubleshoot-mount-proc-lambda-container)
+ [오류: 런타임 실행 오류: Lambda 컨테이너를 시작할 수 없습니다. \{"errorString": "failed to initialize container mounts: failed to mask greengrass root in overlay upper dir: failed to create mask device at directory <ggc-path>: file exists"\}](#troubleshoot-usr-access-root)
+ [[ERROR]-배포 실패. \{"deploymentId": "<deployment-id>", "errorString": "container test process with pid <pid> failed: container process state: exit status 1"\}](#troubleshoot-usr-access-root-canary)
+ [오류: [ERROR]-runtime execution error: unable to start lambda container. \{"errorString": "failed to initialize container mounts: failed to create overlay fs for container: mounting overlay at /greengrass/ggc/packages/<ggc-version>/rootfs/merged failed: failed to mount with args source=\\"no\_source\\" dest=\\"/greengrass/ggc/packages/<ggc-version>/rootfs/merged\\" fstype=\\"overlay\\" flags=\\"0\\" data=\\"lowerdir=/greengrass/ggc/packages/<ggc-version>/dns:/,upperdir=/greengrass/ggc/packages/<ggc-version>/rootfs/upper,workdir=/greengrass/ggc/packages/<ggc-version>/rootfs/work\\": too many levels of symbolic links"\}](#troubleshoot-symbolic-links)
+ [Error: [DEBUG]-Failed to get routes. Discarding message.](#troubleshoot-failed-to-get-routes)
+ [오류: [Errno 24] <lambda-function>이 너무 많이 열려 있습니다.[Errno 24] 열린 파일이 너무 많습니다.](#troubleshoot-too-many-open-files)
+ [Error: ds server failed to start listening to socket: listen unix <ggc-path>/ggc/socket/greengrass\_ipc.sock: bind: invalid argument](#troubleshoot-install-path-too-long)
+ [[정보](복사기) aws.greengrass.StreamManager: stdout. 원인: com.fasterxml.jackson.databind.JsonMappingException: 인스턴트가 최소 또는 최대 인스턴트를 초과함](#troubleshoot-stream-manager-instant-exceeds-maximun-minimum)
+ [GPG error: https://dnw9lb6lzp2d8.cloudfront.net stable InRelease: The following signatures were invalid: EXPKEYSIG 68D644ABD2327D47 AWS Greengrass Master Key](#troubleshoot-apt-repository-invalid-signature)

 

### 오류: The configuration file is missing the CaPath, CertPath or KeyPath. The Greengrass daemon process with [pid = <pid>] died.
<a name="troubleshoot-config-file-version"></a>

**해결 방법:** AWS IoT Greengrass 코어 소프트웨어가 시작되지 않을 `crash.log` 때에이 오류가 표시될 수 있습니다. 이는 v1.6 이전 버전을 실행하는 경우에 발생할 수 있습니다. 다음 중 하나를 수행하세요.
+ v1.7 이상으로 업그레이드. 항상 최신 버전의 AWS IoT Greengrass 코어 소프트웨어를 실행하는 것이 좋습니다. 다운로드 정보는 [AWS IoT Greengrass 코어 소프트웨어](what-is-gg.md#gg-core-download-tab)를 참조하십시오.
+  AWS IoT Greengrass 코어 소프트웨어 버전에 올바른 `config.json` 형식을 사용합니다. 자세한 내용은 [AWS IoT Greengrass 코어 구성 파일](gg-core.md#config-json) 단원을 참조하십시오.
**참고**  
<a name="find-ggc-version-intro"></a> AWS IoT Greengrass 코어 디바이스에 설치된 코어 소프트웨어 버전을 찾으려면 디바이스 터미널에서 다음 명령을 실행합니다.  

  ```
  cd /{{greengrass-root}}/ggc/core/
  sudo ./greengrassd --version
  ```

 

### 오류: Failed to parse /<greengrass-root>/config/config.json.
<a name="troubleshoot-config-file-invalid"></a>

**해결책:** AWS IoT Greengrass 코어 소프트웨어가 시작되지 않을 때 이 오류가 발생할 수 있습니다. [Greengrass 구성 파일](gg-core.md#config-json)이 올바른 JSON 형식을 사용 중인지 확인합니다.

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

 

### 오류: Error occurred while generating TLS config: ErrUnknownURIScheme
<a name="troubleshooting-unknown-uri-scheme"></a>

**해결책:** AWS IoT Greengrass 코어 소프트웨어가 시작되지 않을 때 이 오류가 발생할 수 있습니다. Greengrass 구성 파일의 [crypto](gg-core.md#config-json-crypto) 섹션에 있는 속성이 유효한지 확인합니다. 오류 메시지는 더 많은 정보를 제공합니다.

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

 

### 오류: Runtime failed to start: unable to start workers: container test timed out.
<a name="troubleshoot-post-start-health-check"></a>

**해결책:** AWS IoT Greengrass 코어 소프트웨어가 시작되지 않을 때 이 오류가 발생할 수 있습니다. [Greengrass 구성 파일](gg-core.md#config-json)에서 `postStartHealthCheckTimeout` 속성을 설정합니다. 이 선택적 속성은 Greengrass 데몬이 상태 확인이 시작 후 완료될 때까지 대기하는 시간(밀리초)을 구성합니다. 기본값은 30초(30000 밀리초)입니다.

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

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

 

### 오류: Failed to invoke PutLogEvents on local Cloudwatch, logGroup: /GreengrassSystem/connection\_manager, error: RequestError: send request failed caused by: Post http://<path>/cloudwatch/logs/: dial tcp <address>: getsockopt: connection refused, response: \{ \}.
<a name="troubleshoot-cloudwatch-logs"></a>

**해결책:** AWS IoT Greengrass 코어 소프트웨어가 시작되지 않을 때 이 오류가 발생할 수 있습니다. 이는 Raspberry Pi AWS IoT Greengrass 에서를 실행 중이고 필요한 메모리 설정이 완료되지 않은 경우에 발생할 수 있습니다. 자세한 정보는 [이 단계](setup-filter.rpi.md#stretch-step)를 참조하십시오.

 

### 오류: 다음 이유로 인해 서버를 생성할 수 없습니다. 그룹을 로드하지 못했습니다: chmod /<greengrass-root>/ggc/deployment/lambda/arn:aws:lambda:<region>:<account-id>:function:<function-name>:<version>/<file-name>: no such file or directory.
<a name="troubleshoot-lambda-executable-handler"></a>

**해결책:** AWS IoT Greengrass 코어 소프트웨어가 시작되지 않을 때 이 오류가 발생할 수 있습니다. [실행 가능한 Lambda](lambda-functions.md#lambda-executables)를 코어에 배포했다면 `group.json` 파일 (/{{greengrass-root}}/ggc/deployment/group에 위치)에서 함수의 `Handler` 속성을 확인합니다. 핸들러가 컴파일된 실행 파일의 정확한 이름이 아닌 경우에는 `group.json` 파일의 내용을 빈 JSON 객체(`{}`)로 바꾸고, 다음 명령을 실행해 AWS IoT Greengrass를 시작합니다.

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

그런 다음,[AWS Lambda API](https://docs.aws.amazon.com/cli/latest/reference/lambda/)를 사용하여 구성의 `handler` 파라미터를 업데이트하고 새 함수 버전을 게시하고 별칭을 업데이트합니다. 자세한 내용은 [AWS Lambda 함수 버전 및 별칭](https://docs.aws.amazon.com/lambda/latest/dg/versioning-aliases.html)을 참조하십시오.

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

 

### 컨테이너화 없이 실행에서 Greengrass 컨테이너에서 실행으로 변경한 후에는 AWS IoT Greengrass 코어 소프트웨어가 시작되지 않습니다.
<a name="troubleshoot-no-container"></a>

**해결책:** 누락된 컨테이너 종속성이 없는지 확인합니다.

 

### 오류: Spool size should be at least 262144 bytes.
<a name="troubleshoot-spool-size"></a>

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

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

그런 다음 [로컬 스토리지의 캐시에 메시지를 저장하는 방법](gg-core.md#configure-local-storage-cache) 절차에서 해당 단계를 따릅니다. `GGCloudSpooler` 함수의 경우 262144보다 크거나 같은 `GG_CONFIG_MAX_SIZE_BYTES` 값을 지정해야 합니다.

 

### 오류: [ERROR]-Cloud messaging error: Error occurred while trying to publish a message. \{"errorString": "operation timed out"\}
<a name="troubleshoot-mqtt-operation-timed-out"></a>

**해결책:** Greengrass 코어가 MQTT 메시지를 AWS IoT Core에 보낼 수 없을 경우 `GGCloudSpooler.log`에 이 오류가 표시될 수 있습니다. 이 문제는 코어 환경의 대역폭이 제한되고 지연 시간이 긴 경우에 발생할 수 있습니다. AWS IoT Greengrass v1.10.2 이상을 실행하는 경우 [config.json](gg-core.md#config-json) 파일의 `mqttOperationTimeout` 값을 늘리십시오. 속성이 없으면 `coreThing` 객체에 추가합니다. 예제:

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

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

 

### 오류: container\_linux.go:344: starting container process caused "process\_linux.go:424: container init caused \\"rootfs\_linux.go:64: mounting \\\\\\"/greengrass/ggc/socket/greengrass\_ipc.sock\\\\\\" to rootfs \\\\\\"/greengrass/ggc/packages/<version>/rootfs/merged\\\\\\" at \\\\\\"/greengrass\_ipc.sock\\\\\\" caused \\\\\\"stat /greengrass/ggc/socket/greengrass\_ipc.sock: permission denied\\\\\\"\\"".
<a name="troubleshoot-umask-permission"></a>

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

 

### 오류: Greengrass daemon running with PID: <process-id>. Some system components failed to start. Check 'runtime.log' for errors.
<a name="troubleshoot-system-components"></a>

**해결책:** AWS IoT Greengrass 코어 소프트웨어가 시작되지 않을 때 이 오류가 발생할 수 있습니다. `runtime.log` 및 `crash.log`에서 특정 오류 정보를 확인합니다. 자세한 내용은 [로그 문제 해결](#troubleshooting-logs) 단원을 참조하십시오.

 

### 장치 섀도우가 클라우드와 동기화하지 않습니다.
<a name="troubleshoot-shadow-sync"></a>

**해결 방법:** AWS IoT Greengrass 에 [Greengrass 서비스 역할](service-role.md)의 `iot:UpdateThingShadow` 및 `iot:GetThingShadow` 작업에 대한 권한이 있는지 확인합니다. 서비스 역할이 `AWSGreengrassResourceAccessRolePolicy` 관리형 정책을 사용하는 경우 이러한 권한은 기본적으로 포함됩니다.

[섀도우 동기화 제한 시간 문제 해결](#troubleshooting-shadow-sync)을(를) 참조하세요.

 

### 오류: unable to accept TCP connection. accept tcp [::]:8000: accept4: too many open files.
<a name="troubleshoot-file-descriptor-limit"></a>

**해결책:** `greengrassd` 스크립트 출력에서 이 오류가 표시될 수 있습니다. 코어 AWS IoT Greengrass 소프트웨어의 파일 설명자 한도가 임계값에 도달하여 늘려야 하는 경우이 문제가 발생할 수 있습니다.

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

```
ulimit -n 2048
```

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

 

### 오류: Runtime execution error: unable to start lambda container. container\_linux.go:259: starting container process caused "process\_linux.go:345: container init caused \\"rootfs\_linux.go:50: preparing rootfs caused \\\\\\"permission denied\\\\\\"\\"".
<a name="troubleshoot-execute-permissions"></a>

**해결 방법:** 루트 디렉터리 AWS IoT Greengrass 바로 아래에를 설치하거나 AWS IoT Greengrass 코어 소프트웨어가 설치된 디렉터리와 상위 디렉터리에 모든 사용자에 대한 `execute` 권한이 있는지 확인합니다.

 

### 경고: [WARN]-[5]GK Remote: Error retrieving public key data: ErrPrincipalNotConfigured: private key for MqttCertificate is not set.
<a name="troubleshoot-mqttcertificate-warning"></a>

**Solution:** AWS IoT Greengrass 공통 핸들러를 사용하여 모든 보안 주체의 속성을 검증합니다. 로컬 MQTT 서버에 대한 사용자 지정 프라이빗 키를 지정하지 않은 경우 `runtime.log`에서 이러한 경고가 발생합니다. 자세한 내용은 [AWS IoT Greengrass 코어 보안 주체](gg-sec.md#gg-principals) 단원을 참조하십시오.

 

### 오류: 역할을 사용하려고 할 때 권한이 거부되었습니다.<arn:aws:iam::<account-id>:role/<role-name> to access s3 url https://<region>-greengrass-updates.s3.<region>.amazonaws.com/core/<architecture>/greengrass-core-<distribution-version>.tar.gz.
<a name="troubleshoot-ota-region-access"></a>

**해결책:** 무선(OTA) 업데이트가 실패하면 이 오류가 발생할 수 있습니다. 서명자 역할 정책에서 대상 AWS 리전 을 `Resource`로서 추가합니다. 이 서명자 역할은 AWS IoT Greengrass 소프트웨어 업데이트를 위한 S3 URL에 미리 서명하는 데 사용됩니다. 자세한 내용은 [S3 URL 서명자 역할](core-ota-update.md#s3-url-signer-role)을 참조하십시오.

 

### AWS IoT Greengrass 코어는 [네트워크 프록시](gg-core.md#alpn-network-proxy)를 사용하도록 구성되며 Lambda 함수는 발신 연결을 수행할 수 없습니다.
<a name="troubleshoot-lambda-proxy-network-connections"></a>

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

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

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

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

 

### 코어가 무한 연결-연결 해제 루프에 있습니다. runtime.log 파일에 연속적인 연결 및 연결 해제 항목 시리즈가 포함되어 있습니다.
<a name="config-client-id"></a>

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

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

**코어 장치의 기본 클라이언트 ID를 재정의하려면**

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

   ```
   cd /{{greengrass-root}}/ggc/core/
   sudo ./greengrassd stop
   ```

1. su 사용자로서 편집을 하려면 `{{greengrass-root}}/config/config.json`을 엽니다.

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

   ```
   "coreClientId": "MyCustomClientId"
   ```

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

   ```
   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 \\\\\\"
<a name="troubleshoot-mount-proc-lambda-container"></a>

**해결 방법:** 일부 플랫폼에서는가 Lambda 컨테이너를 생성하기 위해 `/proc` 파일 시스템을 탑재하려고 AWS IoT Greengrass 할 `runtime.log` 때이 오류가 표시될 수 있습니다. 또는 `operation not permitted`나 `EPERM`과 비슷한 오류가 표시될 수 있습니다. 플랫폼에서 실행되는 테스트가 종속성 확인 스크립트에서 통과되는 경우에도 이러한 오류가 발생할 수 있습니다.

다음과 같은 가능한 해결 방안 중 하나를 수행하십시오.
+ Linux 커널에서 `CONFIG_DEVPTS_MULTIPLE_INSTANCES` 옵션을 활성화합니다.
+ 호스트에 대한 `/proc` 탑재 옵션을 `rw,relatim` 전용으로 설정합니다.
+ Linux 커널을 4.9 이상으로 업그레이드합니다.

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

 

### 오류: 런타임 실행 오류: Lambda 컨테이너를 시작할 수 없습니다. \{"errorString": "failed to initialize container mounts: failed to mask greengrass root in overlay upper dir: failed to create mask device at directory <ggc-path>: file exists"\}
<a name="troubleshoot-usr-access-root"></a>

**해결책:** 배포에 실패하면 runtime.log에서 이 오류가 발생할 수 있습니다. 이 오류는 AWS IoT Greengrass 그룹의 Lambda 함수가 코어의 파일 시스템의 `/usr` 디렉터리에 액세스할 수 없는 경우에 발생합니다.

이 문제를 해결 하려면 그룹에 로컬 볼륨 리소스를 추가하고 그룹을 배포합니다. 이 리소스는 다음 조건을 충족해야 합니다.
+ `/usr`을 **소스 경로** 및 **대상 경로**로 지정
+ 리소스를 소유한 Linux 그룹의 OS 그룹 권한을 자동으로 추가
+ Lambda 함수와 연결하고 읽기 전용 액세스 허용

 

### [ERROR]-배포 실패. \{"deploymentId": "<deployment-id>", "errorString": "container test process with pid <pid> failed: container process state: exit status 1"\}
<a name="troubleshoot-usr-access-root-canary"></a>

**해결책:** 배포에 실패하면 runtime.log에서 이 오류가 발생할 수 있습니다. 이 오류는 AWS IoT Greengrass 그룹의 Lambda 함수가 코어의 파일 시스템의 `/usr` 디렉터리에 액세스할 수 없는 경우에 발생합니다.

`GGCanary.log`에 추가 오류가 있는지 확인하여 이러한 사실을 확인할 수 있습니다. Lambda 함수가 `/usr` 디렉터리에 액세스할 수 없는 경우 `GGCanary.log`에는 다음과 같은 오류가 포함되어 있습니다.

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

이 문제를 해결 하려면 그룹에 로컬 볼륨 리소스를 추가하고 그룹을 배포합니다. 이 리소스는 다음 조건을 충족해야 합니다.
+ `/usr`을 **소스 경로** 및 **대상 경로**로 지정
+ 리소스를 소유한 Linux 그룹의 OS 그룹 권한을 자동으로 추가
+ Lambda 함수와 연결하고 읽기 전용 액세스 허용

 

### 오류: [ERROR]-runtime execution error: unable to start lambda container. \{"errorString": "failed to initialize container mounts: failed to create overlay fs for container: mounting overlay at /greengrass/ggc/packages/<ggc-version>/rootfs/merged failed: failed to mount with args source=\\"no\_source\\" dest=\\"/greengrass/ggc/packages/<ggc-version>/rootfs/merged\\" fstype=\\"overlay\\" flags=\\"0\\" data=\\"lowerdir=/greengrass/ggc/packages/<ggc-version>/dns:/,upperdir=/greengrass/ggc/packages/<ggc-version>/rootfs/upper,workdir=/greengrass/ggc/packages/<ggc-version>/rootfs/work\\": too many levels of symbolic links"\}
<a name="troubleshoot-symbolic-links"></a>

**해결 방법:** AWS IoT Greengrass 코어 소프트웨어가 시작되지 않으면 `runtime.log` 파일에이 오류가 표시될 수 있습니다. 이 문제는 Debian 운영 체제에서 더 일반적으로 발생할 수 있습니다.

이 문제를 해결하려면 다음과 같이 실행합니다.

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

1.  AWS IoT Greengrass 코어 소프트웨어를 업그레이드한 후에도이 오류가 계속 발생하면 [config.json](gg-core.md#config-json) 파일`true`에서 `system.useOverlayWithTmpfs` 속성을 로 설정합니다.  
**Example 예제**  

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

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

 

### Error: [DEBUG]-Failed to get routes. Discarding message.
<a name="troubleshoot-failed-to-get-routes"></a>

**해결책:** 그룹에서 구독을 확인하고, `[DEBUG]` 메시지에 나열된 구독이 존재하는지 확인합니다.

 

### 오류: [Errno 24] <lambda-function>이 너무 많이 열려 있습니다.[Errno 24] 열린 파일이 너무 많습니다.
<a name="troubleshoot-too-many-open-files"></a>

**해결책:** 함수가 함수 핸들러에서 를 인스턴스화되면 Lambda 함수 로그 파일에 `StreamManagerClient` 이 오류가 표시될 수 있습니다. 처리기 외부에서 클라이언트를 만드는 것이 좋습니다. 자세한 내용은 [StreamManagerClient를 사용하여 스트림 작업](work-with-streams.md) 단원을 참조하십시오.

 

### Error: ds server failed to start listening to socket: listen unix <ggc-path>/ggc/socket/greengrass\_ipc.sock: bind: invalid argument
<a name="troubleshoot-install-path-too-long"></a>

**해결책:** AWS IoT Greengrass 코어 소프트웨어가 시작되지 않을 때 이 오류가 발생할 수 있습니다. 이 오류는 AWS IoT Greengrass 코어 소프트웨어가 파일 경로가 긴 폴더에 설치될 때 발생합니다. [쓰기 디렉터리](gg-core.md#write-directory)를 사용하지 않는 경우 파일 경로가 79바이트 미만이고 쓰기 디렉터리를 사용하는 경우 83바이트인 폴더에 AWS IoT Greengrass 코어 소프트웨어를 다시 설치합니다.

### [정보](복사기) aws.greengrass.StreamManager: stdout. 원인: com.fasterxml.jackson.databind.JsonMappingException: 인스턴트가 최소 또는 최대 인스턴트를 초과함
<a name="troubleshoot-stream-manager-instant-exceeds-maximun-minimum"></a>

 AWS IoT Greengrass 코어 소프트웨어를 v1.11.3으로 업그레이드하면 스트림 관리자가 시작되지 않는 경우 스트림 관리자 로그에 다음 오류가 표시될 수 있습니다.

```
2021-07-16T00:54:58.568Z [INFO] (Copier) aws.greengrass.StreamManager: stdout. Caused by: com.fasterxml.jackson.databind.JsonMappingException: Instant exceeds minimum or maximum instant (through reference chain: com.amazonaws.iot.greengrass.streammanager.export.PersistedSuccessExportStatesV1["lastExportTime"]). {scriptName=services.aws.greengrass.StreamManager.lifecycle.startup.script, serviceName=aws.greengrass.StreamManager, currentState=STARTING}
2021-07-16T00:54:58.579Z [INFO] (Copier) aws.greengrass.StreamManager: stdout. Caused by: java.time.DateTimeException: Instant exceeds minimum or maximum instant. {scriptName=services.aws.greengrass.StreamManager.lifecycle.startup.script, serviceName=aws.greengrass.StreamManager, currentState=STARTING}
```

v1.11.3 이전 버전의 AWS IoT Greengrass 코어 소프트웨어를 사용하고 있고 이후 버전으로 업그레이드하려는 경우 OTA 업데이트를 사용하여 v1.11.4로 업그레이드합니다.

### GPG error: https://dnw9lb6lzp2d8.cloudfront.net stable InRelease: The following signatures were invalid: EXPKEYSIG 68D644ABD2327D47 AWS Greengrass Master Key
<a name="troubleshoot-apt-repository-invalid-signature"></a>

APT 리포지토리`apt update`에서 코어 소프트웨어를 설치한 디바이스에서를 실행하면 다음 오류가 표시될 수 있습니다. [AWS IoT Greengrass](install-ggc.md#ggc-package-manager) 

```
Err:4 https://dnw9lb6lzp2d8.cloudfront.net stable InRelease
  The following signatures were invalid: EXPKEYSIG 68D644ABD2327D47 AWS Greengrass Master Key
Reading package lists... Done                             
W: GPG error: https://dnw9lb6lzp2d8.cloudfront.net stable InRelease: The following signatures were invalid: EXPKEYSIG 68D644ABD2327D47 AWS Greengrass Master Key
```

이 오류는가 더 AWS IoT Greengrass 이상 APT 리포지토리에서 AWS IoT Greengrass 코어 소프트웨어를 설치하거나 업데이트할 수 있는 옵션을 제공하지 않기 때문에 발생합니다. 를 성공적으로 실행하려면 디바이스의 소스 목록에서 AWS IoT Greengrass 리포지토리를 `apt update`제거합니다.

```
sudo rm /etc/apt/sources.list.d/greengrass.list 
sudo apt update
```

## 배포 관련 문제
<a name="gg-troubleshooting-deploymentissues"></a>

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

**Topics**
+ [현재 배포가 작동하지 않으며 이전의 작동하는 배포로 되돌려야 합니다.](#troubleshoot-revert-deployment)
+ [배포 시 403 Forbidden 오류가 로그에 나타납니다.](#troubleshoot-forbidden-deployment)
+ [처음에 create-deployment 명령을 실행하면 ConcurrentDeployment 오류가 발생합니다.](#troubleshoot-concurrent-deployment)
+ [오류: Greengrass is not authorized to assume the Service Role associated with this account 또는 오류: Failed: TES service role is not associated with this account.](#troubleshoot-assume-service-role)
+ [오류: 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](#troubleshoot-x509-certificate-expired)
+ [배포가 완료되지 않습니다.](#troubleshoot-stuck-deployment)
+ [오류: Unable to find java or java8 executables, or the error: Deployment <deployment-id> of type NewDeployment for group <group-id> failed error: worker with <worker-id> failed to initialize with reason Installed Java version must be greater than or equal to 8](#java-8-runtime-requirement)
+ [배포가 완료되지 않고 runtime.log에 여러 개의 "wait 1s for container to stop" 입력이 포함됩니다.](#troubleshoot-wait-container-stop)
+ [배포가 완료되지 않고 `runtime.log`에 "[ERROR]-Greengrass deployment error: failed to report deployment status back to cloud \{"deploymentId": "<deployment-id>", "errorString": "Failed to initiate PUT, endpoint: https://<deployment-status>, error: Put https://<deployment-status>: proxyconnect tcp: x509: certificate signed by unknown authority"\}"가 포함되어 있습니다.](#troubleshoot-failed-to-report-deployment-status)
+ [오류: Deployment <deployment-id> of type NewDeployment for group <group-id> failed error: Error while processing. group config is invalid: 112 or [119 0] don't have rw permission on the file: <path>.](#troubleshoot-access-permissions-deployment)
+ [오류: <list-of-function-arns>는 루트로 실행되도록 구성되었지만 Greengrass는 루트 권한으로 기능을 실행하도록 구성되지 않았습니다.](#troubleshoot-root-permissions-lambda)
+ [오류: Deployment <deployment-id> of type NewDeployment for group <group-id> failed error: Greengrass deployment error: unable to execute download step in deployment. error while processing: unable to load the group file downloaded: could not find UID based on user name, userName: ggc\_user: user: unknown user ggc\_user.](#troubleshoot-could-not-find-uid)
+ [오류: [ERROR]-runtime execution error: unable to start lambda container. \{"errorString": "failed to initialize container mounts: failed to mask greengrass root in overlay upper dir: failed to create mask device at directory <ggc-path>: file exists"\}](#troubleshoot-failed-to-initialize-container-mounts)
+ [오류: Deployment <deployment-id> of type NewDeployment for group <group-id> failed error: process start failed: container\_linux.go:259: starting container process caused "process\_linux.go:250: running exec setns process for init caused \\"wait: no child processes\\"".](#troubleshoot-wait-child-processes)
+ [오류: [WARN]-MQTT[client] dial tcp: lookup <host-prefix>-ats.iot.<region>.amazonaws.com: no such host ... [오류]-Greengrass 배포 오류: 클라우드에 배포 상태 보고 실패 ... net/http: 연결을 기다리는 동안 요청이 취소됨(헤더를 기다리는 동안 Client.Timeout 초과됨)](#troubleshoot-dnssec-validation-failed)

 

### 현재 배포가 작동하지 않으며 이전의 작동하는 배포로 되돌려야 합니다.
<a name="troubleshoot-revert-deployment"></a>

**해결 방법:** AWS IoT 콘솔 또는 AWS IoT Greengrass API를 사용하여 이전 작업 배포를 재배포합니다. 그러면 코어 장치에 해당 그룹 버전이 배포됩니다.

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

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

1. 다시 배포하려는 배포가 포함된 행을 찾습니다. 재배포하려는 배포를 선택하고 **재배포**를 선택합니다.  
![배포에 대한 재배포 작업을 표시하는 배포 페이지.](http://docs.aws.amazon.com/ko_kr/greengrass/v1/developerguide/images/console-group-redeployment.png)

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

1. [ListDeployments](https://docs.aws.amazon.com/greengrass/v1/apireference/listdeployments-get.html)를 사용하여 재배포하려는 배포의 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의 예제 값을 사용합니다. 명령을 실행할 때 이들 예제 값을 올바른 값으로 바꾸십시오.

1. [CreateDeployment](https://docs.aws.amazon.com/greengrass/v1/apireference/createdeployment-post.html)를 사용하여 대상 배포를 재배포합니다. 배포 유형을 `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"
   }
   ```

1. [GetDeploymentStatus](https://docs.aws.amazon.com/greengrass/v1/apireference/getdeploymentstatus-get.html)를 사용하여 배포의 상태를 가져옵니다.

 

### 배포 시 403 Forbidden 오류가 로그에 나타납니다.
<a name="troubleshoot-forbidden-deployment"></a>

**해결 방법:** 클라우드에 있는 AWS IoT Greengrass 코어의 정책에가 허용된 작업`"greengrass:*"`으로 포함되어 있는지 확인합니다.

 

### 처음에 create-deployment 명령을 실행하면 ConcurrentDeployment 오류가 발생합니다.
<a name="troubleshoot-concurrent-deployment"></a>

**해결책:** 배포가 진행 중일 수 있습니다. [get-deployment-status](https://docs.aws.amazon.com/greengrass/v1/apireference/getdeploymentstatus-get.html)를 실행하면 배포가 생성되었는지 확인할 수 있습니다. 그렇지 않으면 배포 생성을 다시 시도하십시오.

 

### 오류: Greengrass is not authorized to assume the Service Role associated with this account 또는 오류: Failed: TES service role is not associated with this account.
<a name="troubleshoot-assume-service-role"></a>

**해결책:** 배포에 실패하면 이 오류가 발생할 수 있습니다. Greengrass 서비스 역할이 현재 AWS 리전의 AWS 계정 계정과 연결되어 있는지 확인합니다. 자세한 내용은 [Greengrass 서비스 역할 관리(CLI)](service-role.md#manage-service-role-cli) 또는 [Greengrass 서비스 역할 관리(콘솔)](service-role.md#manage-service-role-console)을 참조하세요.

 

### 오류: 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
<a name="troubleshoot-x509-certificate-expired"></a>

**해결책:** 배포에 실패하면 `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 서버 인증서 검증](https://aws.amazon.com/blogs/iot/using-device-time-to-validate-aws-iot-server-certificates/)을 참조하세요. * AWS * 

 

### 배포가 완료되지 않습니다.
<a name="troubleshoot-stuck-deployment"></a>

**해결책:** 다음을 수행합니다.
+  AWS IoT Greengrass 데몬이 코어 디바이스에서 실행 중인지 확인합니다. 코어 장치 터미널에서 다음 명령들을 실행하여 대몬이 실행 중인지 확인하고 필요한 경우 시작하십시오.

  1. 대몬(daemon)이 실행 중인지 확인하려면:

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

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

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

  1. 대몬(daemon)을 시작하려면:

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

 

### 오류: Unable to find java or java8 executables, or the error: Deployment <deployment-id> of type NewDeployment for group <group-id> failed error: worker with <worker-id> failed to initialize with reason Installed Java version must be greater than or equal to 8
<a name="java-8-runtime-requirement"></a>

**해결 방법:** AWS IoT Greengrass 코어에 대해 스트림 관리자가 활성화된 경우 그룹을 배포하기 전에 코어 장치에 Java 8 런타임을 설치해야 합니다. 자세한 내용은 스트림 관리자에 대한 [요구 사항](stream-manager.md#stream-manager-requirements)을 참조하십시오. AWS IoT 콘솔의 **기본 그룹 생성** 워크플로를 사용하여 그룹을 생성하면 스트림 관리자가 기본적으로 활성화됩니다.

또는 스트림 관리자를 비활성화한 다음 그룹을 배포합니다. 자세한 내용은 [스트림 관리자 설정 구성(콘솔)](configure-stream-manager.md#configure-stream-manager-console) 단원을 참조하십시오.

 

### 배포가 완료되지 않고 runtime.log에 여러 개의 "wait 1s for container to stop" 입력이 포함됩니다.
<a name="troubleshoot-wait-container-stop"></a>

**해결 방법:** 코어 디바이스 터미널에서 다음 명령을 실행하여 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": "Failed to initiate PUT, endpoint: https://<deployment-status>, error: Put https://<deployment-status>: proxyconnect tcp: x509: certificate signed by unknown authority"\}"가 포함되어 있습니다.
<a name="troubleshoot-failed-to-report-deployment-status"></a>

**해결 방법:** Greengrass 코어가 HTTPS 프록시 연결을 사용하도록 구성되어 있고 프록시 서버 인증서 체인이 시스템에서 신뢰되지 않으면 `runtime.log`에 이 오류가 표시될 수 있습니다. 이 문제를 해결하려면 루트 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`에 있습니다. 코어 장치에서 위치를 찾으려면 [config.json](gg-core.md#config-json)에서 `crypto.caPath` 속성을 확인하세요.

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

 

### 오류: Deployment <deployment-id> of type NewDeployment for group <group-id> failed error: Error while processing. group config is invalid: 112 or [119 0] don't have rw permission on the file: <path>.
<a name="troubleshoot-access-permissions-deployment"></a>

**해결책:** {{<path>}} 디렉터리의 소유자 그룹이 디렉터리에 대한 읽기 및 쓰기 권한을 보유하고 있는지 확인합니다.

 

### 오류: <list-of-function-arns>는 루트로 실행되도록 구성되었지만 Greengrass는 루트 권한으로 기능을 실행하도록 구성되지 않았습니다.
<a name="troubleshoot-root-permissions-lambda"></a>

**해결책:** 배포에 실패하면 `runtime.log`에서 이 오류가 발생할 수 있습니다. Lambda 함수가 루트 권한으로 실행 AWS IoT Greengrass 되도록를 구성했는지 확인합니다. `greengrass_root/config/config.json`에서 `allowFunctionsToRunAsRoot`의 값을 `yes`로 바꾸거나 Lambda 함수를 변경해 다른 사용자/그룹으로서 실행합니다. 자세한 내용은 [루트로서의 Lambda 함수 실행](lambda-group-config.md#lambda-running-as-root) 단원을 참조하십시오.

 

### 오류: Deployment <deployment-id> of type NewDeployment for group <group-id> failed error: Greengrass deployment error: unable to execute download step in deployment. error while processing: unable to load the group file downloaded: could not find UID based on user name, userName: ggc\_user: user: unknown user ggc\_user.
<a name="troubleshoot-could-not-find-uid"></a>

**해결 방법:** AWS IoT Greengrass 그룹의 [기본 액세스 ID](lambda-group-config.md#lambda-access-identity-groupsettings)가 표준 시스템 계정을 사용하는 경우 `ggc_user` 사용자와 `ggc_group` 그룹이 디바이스에 있어야 합니다. 사용자 및 그룹을 추가하는 방법에 대한 지침은 이 [단계](setup-filter.rpi.md#add-ggc-user-ggc-group)를 참조하십시오. 이름을 표시된 대로 정확히 입력해야 합니다.

 

### 오류: [ERROR]-runtime execution error: unable to start lambda container. \{"errorString": "failed to initialize container mounts: failed to mask greengrass root in overlay upper dir: failed to create mask device at directory <ggc-path>: file exists"\}
<a name="troubleshoot-failed-to-initialize-container-mounts"></a>

**해결책:** 배포에 실패하면 `runtime.log`에서 이 오류가 발생할 수 있습니다. 그룹의 Lambda 함수가 코어의 파일 시스템에 있는 `/usr` 디렉터리에 액세스할 수 없는 경우 이 오류가 발생합니다. 이 문제를 해결 하려면 그룹에 [로컬 볼륨 리소스](access-local-resources.md)를 추가하고 그룹을 배포합니다. 이 리소스는 다음 조건을 충족해야 합니다.
+ `/usr`을 **소스 경로** 및 **대상 경로**로 지정
+ 리소스를 소유한 Linux 그룹의 OS 그룹 권한을 자동으로 추가
+ Lambda 함수와 연결하고 읽기 전용 액세스 허용

 

### 오류: Deployment <deployment-id> of type NewDeployment for group <group-id> failed error: process start failed: container\_linux.go:259: starting container process caused "process\_linux.go:250: running exec setns process for init caused \\"wait: no child processes\\"".
<a name="troubleshoot-wait-child-processes"></a>

**해결책:** 배포에 실패하면 이 오류가 발생할 수 있습니다. 배포를 다시 시도하십시오.

 

### 오류: [WARN]-MQTT[client] dial tcp: lookup <host-prefix>-ats.iot.<region>.amazonaws.com: no such host ... [오류]-Greengrass 배포 오류: 클라우드에 배포 상태 보고 실패 ... net/http: 연결을 기다리는 동안 요청이 취소됨(헤더를 기다리는 동안 Client.Timeout 초과됨)
<a name="troubleshoot-dnssec-validation-failed"></a>

**해결책:** `systemd-resolved`를 사용하는 경우 이 오류가 발생할 수 있습니다. 이 파라미터는 기본적으로 `DNSSEC` 설정을 활성화합니다. 그 결과 많은 퍼블릭 도메인이 인식되지 않습니다. AWS IoT Greengrass 엔드포인트에 도달하려는 시도가 호스트를 찾지 못하므로 배포가 `In Progress` 상태로 유지됩니다.

다음 명령 및 출력을 사용하여 이 문제를 테스트할 수 있습니다. 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`를 비활성화하는 것입니다. `DNSSEC`가 `false`일 경우 DNS 조회가 `DNSSEC` 검증되지 않습니다. 자세한 내용은 `systemd`에 대한 [알려진 문제](https://github.com/systemd/systemd/issues/9867)를 참조하십시오.

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

1. `systemd-resolved`를 다시 시작합니다.

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

 

## 그룹 생성/함수 생성 관련 문제
<a name="gg-troubleshooting-groupcreateissues"></a>

다음 정보를 사용하여 AWS IoT Greengrass 그룹 또는 Greengrass Lambda 함수 생성 관련 문제를 해결할 수 있습니다.

**Topics**
+ [오류: Your 'IsolationMode' configuration for the group is invalid.](#troubleshoot-invalid-isolation-mode-group)
+ [오류: Your 'IsolationMode' configuration for function with arn <function-arn> is invalid.](#troubleshoot-isolation-mode-lambda)
+ [오류: MemorySize configuration for function with arn <function-arn> is not allowed in IsolationMode=NoContainer.](#troubleshoot-lambda-memorysize-not-supported)
+ [오류: Access Sysfs configuration for function with arn <function-arn> is not allowed in IsolationMode=NoContainer.](#troubleshoot-sysfs-access-not-supported)
+ [오류: MemorySize configuration for function with arn <function-arn> is required in IsolationMode=GreengrassContainer.](#troubleshoot-lambda-memorysize-required)
+ [오류: Function <function-arn> refers to resource of type <resource-type> that is not allowed in IsolationMode=NoContainer.](#troubleshoot-resource-access-not-supported)
+ [오류: Execution configuration for function with arn <function-arn> is not allowed.](#troubleshoot-execution-parameters-not-supported)

 

### 오류: Your 'IsolationMode' configuration for the group is invalid.
<a name="troubleshoot-invalid-isolation-mode-group"></a>

**해결책:** `function-definition-version`의 `DefaultConfig` 내의 `IsolationMode` 값이 지원되지 않는 경우 이 오류가 발생합니다. 지원되는 값은 `GreengrassContainer` 및 `NoContainer`입니다.

 

### 오류: Your 'IsolationMode' configuration for function with arn <function-arn> is invalid.
<a name="troubleshoot-isolation-mode-lambda"></a>

**해결책:** `function-definition-version`의 <function-arn> 내의 `IsolationMode` 값이 지원되지 않는 경우 이 오류가 발생합니다. 지원되는 값은 `GreengrassContainer` 및 `NoContainer`입니다.

 

### 오류: MemorySize configuration for function with arn <function-arn> is not allowed in IsolationMode=NoContainer.
<a name="troubleshoot-lambda-memorysize-not-supported"></a>

**해결 방법**: `MemorySize` 값을 지정하고 컨테이너화 없이 실행하도록 선택하면 이 오류가 발생합니다. 컨테이너화 없이 실행되는 Lambda 함수에는 메모리 제한이 있을 수 없습니다. 제한을 제거하거나 Lambda 함수가 AWS IoT Greengrass 컨테이너에서 실행되도록 변경할 수 있습니다.

 

### 오류: Access Sysfs configuration for function with arn <function-arn> is not allowed in IsolationMode=NoContainer.
<a name="troubleshoot-sysfs-access-not-supported"></a>

**해결 방법**: `AccessSysfs`에 `true`을(를) 지정하고 컨테이너화 없이 실행하도록 선택하면 이 오류가 발생합니다. 컨테이너화 없이 실행되는 Lambda 함수는 파일 시스템에 직접 액세스하도록 코드를 업데이트해야 하며 `AccessSysfs`을(를) 사용할 수 없습니다. `false`의 값을 지정`AccessSysfs`하거나 AWS IoT Greengrass 컨테이너에서 실행되도록 Lambda 함수를 변경할 수 있습니다.

 

### 오류: MemorySize configuration for function with arn <function-arn> is required in IsolationMode=GreengrassContainer.
<a name="troubleshoot-lambda-memorysize-required"></a>

**해결 방법:**이 오류는 AWS IoT Greengrass 컨테이너에서 실행 중인 Lambda 함수에 대한 `MemorySize` 제한을 지정하지 않았기 때문에 발생합니다. `MemorySize` 값을 지정해 오류를 해결하십시오.

 

### 오류: Function <function-arn> refers to resource of type <resource-type> that is not allowed in IsolationMode=NoContainer.
<a name="troubleshoot-resource-access-not-supported"></a>

**해결책:** 컨테이너화하지 않고 Lambda 함수를 실행하는 경우 `Local.Device`, `Local.Volume`, `ML_Model.SageMaker.Job`, `ML_Model.S3_Object`, `S3_Object.Generic_Archive` 리소스 유형에 액세스할 수 없습니다. 이러한 리소스 유형이 필요한 경우 AWS IoT Greengrass 컨테이너에서를 실행해야 합니다. 또한 Lambda 함수의 코드를 변경함으로써 컨테이너화 없이 실행 시 로컬 장치에 곧바로 액세스할 수도 있습니다.

 

### 오류: Execution configuration for function with arn <function-arn> is not allowed.
<a name="troubleshoot-execution-parameters-not-supported"></a>

**해결책:** 이 오류는 `GGIPDetector` 또는 `GGCloudSpooler`를 사용하여 시스템 Lambda 함수을 작성하거나 `IsolationMode` 또는 `RunAs` 구성을 지정했을 때 발생합니다. 이 시스템 Lambda 함수의 `Execution` 파라미터를 생략해야 합니다.

 

## 검색 문제
<a name="gg-troubleshooting-discovery-issues"></a>

다음 정보를 사용하여 AWS IoT Greengrass Discovery 서비스의 문제를 해결할 수 있습니다.

**Topics**
+ [오류: 장치가 너무 많은 그룹의 멤버입니다. 장치는 최대 10개 그룹에 속할 수 있습니다.](#troubleshoot-device-in-too-many-groups)

 

### 오류: 장치가 너무 많은 그룹의 멤버입니다. 장치는 최대 10개 그룹에 속할 수 있습니다.
<a name="troubleshoot-device-in-too-many-groups"></a>

**해결책:** 이것은 알려진 문제입니다. 한 [클라이언트 장치](what-is-gg.md#greengrass-devices)는 최대 10개 그룹의 멤버일 수 있습니다.

 

## 기계 학습 리소스 문제
<a name="ml-resources-troubleshooting"></a>

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

**Topics**
+ [InvalidMLModelOwner - GroupOwnerSetting은 ML 모델 리소스에서 제공되지만, GroupOwner 또는 GroupPermission은 존재하지 않습니다](#nocontainer-lambda-invalid-ml-model-owner)
+ [NoContainer 함수는 기계 학습 리소스를 연결할 때 사용 권한을 구성할 수 없습니다. <function-arn>은 리소스 액세스 정책에 권한<ro/rw>이 있는 기계 학습 리소스<resource-id>를 나타냅니다.](#nocontainer-lambda-invalid-resource-access-policy)
+ [함수 <function-arn>은 ResourceAccessPolicy 및 리소스 OwnerSetting 모두에서 권한이 누락된 기계 학습 리소스 <resource-id>를 나타냅니다.](#nocontainer-lambda-missing-access-permission)
+ [함수 <function-arn>은 권한 \\"rw\\"을 가진 기계 학습 리소스 <resource-id>를 가리키며, 리소스 소유자 설정 GroupPermission은 \\"ro\\"만 허용합니다.](#container-lambda-invalid-rw-permissions)
+ [NoContainer 함수 <function-arn>는 중첩된 대상 경로의 리소스를 가리킵니다.](#nocontainer-lambda-nested-destination-path)
+ [Lambda <function-arn>은 동일한 그룹 소유자 ID를 공유하여 리소스 <resource-id>에 대한 액세스 권한을 획득합니다.](#lambda-runas-and-resource-owner)

 

### InvalidMLModelOwner - GroupOwnerSetting은 ML 모델 리소스에서 제공되지만, GroupOwner 또는 GroupPermission은 존재하지 않습니다
<a name="nocontainer-lambda-invalid-ml-model-owner"></a>

**해결 방법:** 기계 학습 리소스에 [ResourceDownloadOwnerSetting](https://docs.aws.amazon.com/greengrass/v1/apireference/definitions-resourcedownloadownersetting.html) 객체가 포함되어 있지만, 필수 `GroupOwner` 또는 `GroupPermission` 속성이 정의되어 있지 않은 경우 이 오류가 발생합니다. 이 문제를 해결하려면 누락된 속성을 정의합니다.

 

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

**해결 방법:** 컨테이너화되지 않은 Lambda 함수가 기계 학습 리소스에 대한 함수 수준 권한을 지정하는 경우 이 오류가 발생합니다. 컨테이너화되지 않은 함수는 기계 학습 리소스에 정의된 리소스 소유자 권한으로부터 권한을 상속해야 합니다. 이 문제를 해결하려면 [리소스 소유자 권한(콘솔)을 상속하거나](access-ml-resources.md#non-container-config-console), [Lambda 함수의 리소스 액세스 정책(API)에서 권한을 제거하도록](access-ml-resources.md#non-container-config-api) 선택하십시오.

 

### 함수 <function-arn>은 ResourceAccessPolicy 및 리소스 OwnerSetting 모두에서 권한이 누락된 기계 학습 리소스 <resource-id>를 나타냅니다.
<a name="nocontainer-lambda-missing-access-permission"></a>

**해결 방법:** 기계 학습 리소스에 대한 권한이 연결된 Lambda 함수 또는 리소스에 대해 구성되지 않은 경우 이 오류가 발생합니다. 이 문제를 해결하려면 Lambda 함수의 [ResourceAccessPolicy](https://docs.aws.amazon.com/greengrass/v1/apireference/definitions-resourceaccesspolicy.html) 속성 또는 리소스의 [OwnerSetting](https://docs.aws.amazon.com/greengrass/v1/apireference/definitions-ownersetting.html) 속성에서 권한을 구성하십시오.

 

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

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

 

### NoContainer 함수 <function-arn>는 중첩된 대상 경로의 리소스를 가리킵니다.
<a name="nocontainer-lambda-nested-destination-path"></a>

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

 

### Lambda <function-arn>은 동일한 그룹 소유자 ID를 공유하여 리소스 <resource-id>에 대한 액세스 권한을 획득합니다.
<a name="lambda-runas-and-resource-owner"></a>

**해결 방법**: 동일한 OS 그룹이 Lambda 함수의 [다음으로 실행](lambda-group-config.md#lambda-access-identity) ID와 기계 학습 리소스의 [리소스 소유자](access-ml-resources.md#ml-resource-owner)로 지정되었지만 리소스가 Lambda 함수에 연결되지 않은 경우 `runtime.log`에 이 오류가 발생합니다. 이 구성은 Lambda 함수에 AWS IoT Greengrass 권한 부여 없이 리소스에 액세스하는 데 사용할 수 있는 암시적 권한을 부여합니다.

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

## AWS IoT Greengrass Docker 문제의 코어
<a name="gg-troubleshooting-dockerissues"></a>

다음 정보를 사용하여 Docker 컨테이너에서 AWS IoT Greengrass 코어를 실행할 때 발생하는 문제를 해결할 수 있습니다.

**Topics**
+ [오류: 알 수 없는 옵션: -no-include-email.](#docker-troubleshooting-cli-version)
+ [경고: IPv4가 비활성화되어 있습니다. 네트워킹이 작동하지 않습니다.](#docker-troubleshooting-ipv4-disabled)
+ [오류: 방화벽이 Windows와 컨테이너 간의 파일 공유를 차단하고 있습니다.](#docker-troubleshooting-firewall)
+ [<account-id><user-name>오류: GetAuthorizationToken 작업을 호출하는 동안 오류가 발생했습니다(AccessDenieException): 사용자: arn:aws:iam::<account-id>:user/<user-name>에게 수행할 권한이 없습니다: ecr:GetAuthorizationToken on resource: \*](#docker-troubleshooting-ecr-perms)
+ [오류: Cannot create container for the service greengrass: Conflict. The container name "/aws-iot-greengrass" is already in use.](#troubleshoot-docker-name-conflict)
+ [오류: [FATAL]-Failed to reset thread's mount namespace due to an unexpected error: "operation not permitted". To maintain consistency, GGC will crash and need to be manually restarted.](#troubleshoot-docker-container-lambda)

 

### 오류: 알 수 없는 옵션: -no-include-email.
<a name="docker-troubleshooting-cli-version"></a>

**해결책:** `aws ecr get-login` 명령을 실행할 때 이 오류가 발생할 수 있습니다. 최신 AWS CLI 버전이 설치되어 있는지 확인합니다(예: 실행: `pip install awscli --upgrade --user`). Windows를 사용하고 있고 MSI 설치 관리자를 사용하여 CLI를 설치한 경우 설치 프로세스를 반복해야 합니다. 자세한 내용은 *AWS Command Line Interface 사용 설명서*의 [Microsoft Windows에 AWS Command Line Interface 설치](https://docs.aws.amazon.com/cli/latest/userguide/awscli-install-windows.html)를 참조하십시오.

 

### 경고: IPv4가 비활성화되어 있습니다. 네트워킹이 작동하지 않습니다.
<a name="docker-troubleshooting-ipv4-disabled"></a>

**해결 방법:** Linux 컴퓨터에서 실행할 때이 경고 또는 유사한 메시지가 표시될 수 AWS IoT Greengrass 있습니다. 이 [step](run-gg-in-docker-container.md#docker-linux-enable-ipv4). AWS IoT Greengrass cloud 배포에 설명된 대로 IPv4 네트워크 전달을 활성화하면 IPv4 전달이 활성화되지 않은 경우 MQTT 통신이 작동하지 않습니다. 자세한 내용은 Docker 설명서의 [런타임에 네임스페이스 커널 파라미터(sysctls) 구성](https://docs.docker.com/engine/reference/commandline/run/#configure-namespaced-kernel-parameters-sysctls-at-runtime)을 참조하십시오.

 

### 오류: 방화벽이 Windows와 컨테이너 간의 파일 공유를 차단하고 있습니다.
<a name="docker-troubleshooting-firewall"></a>

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

 

### <account-id><user-name>오류: GetAuthorizationToken 작업을 호출하는 동안 오류가 발생했습니다(AccessDenieException): 사용자: arn:aws:iam::<account-id>:user/<user-name>에게 수행할 권한이 없습니다: ecr:GetAuthorizationToken on resource: \*
<a name="docker-troubleshooting-ecr-perms"></a>

Amazon ECR 리포지토리에 액세스할 충분한 권한이 없는데 `aws ecr get-login-password` 명령을 실행할 경우 이 오류가 발생할 수 있습니다. 자세한 내용은 *Amazon ECR 사용 설명서*의 [Amazon ECR 리포지토리 정책 예제](https://docs.aws.amazon.com/AmazonECR/latest/userguide/repository-policy-examples.html) 및 [하나의 Amazon ECR 리포지토리에 액세스](https://docs.aws.amazon.com/AmazonECR/latest/userguide/security_iam_id-based-policy-examples.html)를 참조하십시오.

 

### 오류: Cannot create container for the service greengrass: Conflict. The container name "/aws-iot-greengrass" is already in use.
<a name="troubleshoot-docker-name-conflict"></a>

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

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

 

### 오류: [FATAL]-Failed to reset thread's mount namespace due to an unexpected error: "operation not permitted". To maintain consistency, GGC will crash and need to be manually restarted.
<a name="troubleshoot-docker-container-lambda"></a>

**해결 방법:**의이 오류는 Docker 컨테이너에서 실행 중인 AWS IoT Greengrass 코어에 `GreengrassContainer` Lambda 함수를 배포하려고 할 때 발생할 `runtime.log` 수 있습니다. 현재, Greengrass Docker 컨테이너에는 `NoContainer` Lambda함수만 배포할 수 있습니다.

[이 문제를 해결하려면 모든 Lambda 함수 `NoContainer` 모드에](lambda-group-config.md#change-containerization-lambda) 있는지 확인하고 새 배포를 시작하십시오. 그런 다음 컨테이너를 시작할 때 기존 `deployment` 디렉터리를 AWS IoT Greengrass 코어 Docker 컨테이너에 바인드 마운트하지 마십시오. 대신 Docker 컨테이너에 빈 `deployment` 디렉터리를 만들고 바인드 마운트하십시오. 이를 통해 새로운 Docker 컨테이너는 `NoContainer` 모드로 실행되는 Lambda 함수로 최신 배포를 수신할 수 있습니다.

자세한 내용은 [Docker 컨테이너 AWS IoT Greengrass 에서 실행](run-gg-in-docker-container.md) 단원을 참조하십시오.

## 로그 문제 해결
<a name="troubleshooting-logs"></a>

Greengrass 그룹에 대한 로깅 설정(예: 로그를 CloudWatch Logs로 보낼 것인지, 로그를 로컬 파일 시스템에 저장할 것인지 아니면 둘 다 수행할 것인지 여부)을 구성할 수 있습니다. 문제를 해결할 때 자세한 정보를 얻으려면 일시적으로 로깅 수준을 `DEBUG`로 변경할 수 있습니다. 로깅 설정에 대한 변경 사항은 그룹을 배포할 때 적용됩니다. 자세한 내용은 [에 대한 로깅 구성 AWS IoT Greengrass](greengrass-logs-overview.md#config-logs) 단원을 참조하십시오.

로컬 파일 시스템에서는 로그를 다음 위치에 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/` 및의 메시지를 사용하면 AWS IoT Greengrass 시스템 구성 요소에서 발생한 오류를 확인할 `ggc/var/log/system/runtime.log`수 있습니다.

`{{greengrass-root}}/ggc/var/log/system/localwatch/`  
CloudWatch Logs에 Greengrass 로그 업로드를 처리하는 AWS IoT Greengrass 구성 요소에 대한 로그를 포함합니다. CloudWatch에서 Greengrass 로그를 볼 수 없는 경우 이 로그를 사용하여 문제를 해결할 수 있습니다.

`{{greengrass-root}}/ggc/var/log/user/`  
사용자 정의 Lambda 함수의 모든 로그가 포함됩니다. 이 폴더를 확인하여 로컬 Lambda 함수의 오류 메시지를 찾습니다.

**참고**  
기본적으로 {{greengrass-root}}는 `/greengrass` 디렉터리입니다. [쓰기 디렉터리](gg-core.md#write-directory)가 구성되어 있는 경우에는 로그가 이 디렉터리 아래 있습니다.

로그가 클라우드에 저장되도록 구성된 경우 CloudWatch Logs를 사용하여 로그 메시지를 봅니다. `crash.log`는 AWS IoT Greengrass 코어 디바이스의 파일 시스템 로그에서만 찾을 수 있습니다.

 AWS IoT 가 CloudWatch에 로그를 쓰도록 구성된 경우 시스템 구성 요소가 연결을 시도할 때 연결 오류가 발생하는지 해당 로그를 확인합니다 AWS IoT.

 AWS IoT Greengrass 로깅에 대한 자세한 내용은 섹션을 참조하세요[AWS IoT Greengrass 로그를 사용한 모니터링](greengrass-logs-overview.md).

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

## 스토리지 문제 해결
<a name="troubleshooting-storage"></a>

로컬 파일 스토리지가 가득 차면 다음과 같이 일부 구성 요소를 시작하지 못할 수도 있습니다.
+ 로컬 섀도우 업데이트가 수행되지 않습니다.
+ 새 AWS IoT Greengrass 코어 MQTT 서버 인증서는 로컬에서 다운로드할 수 없습니다.
+ 배포에 실패합니다.

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

## 메시지 문제 해결
<a name="troubleshooting-messages"></a>

에서 로컬로 전송되는 모든 메시지는 QoS 0으로 AWS IoT Greengrass 전송됩니다. 기본적으로는 인 메모리 대기열에 메시지를 AWS IoT Greengrass 저장합니다. 따라서 Greengrass 코어가 재시작되면(예: 그룹 배포 또는 장치 재부팅 이후) 처리되지 않은 메시지가 사라집니다. 그러나 메시지를 파일 시스템에 캐시하도록 AWS IoT Greengrass (v1.6 이상)를 구성하여 코어 재시작 시 메시지를 유지할 수 있습니다. 또한 대기열 크기를 구성할 수 있습니다. 대기열 크기를 구성하는 경우에는 262144 바이트(256 KB) 이상인지 확인합니다. 그렇지 않으면 제대로 시작되지 않을 수 AWS IoT Greengrass 있습니다. 자세한 내용은 [클라우드 대상을 위한 MQTT 메시지 대기열](gg-core.md#mqtt-message-queue) 단원을 참조하십시오.

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

 AWS IoT에서 영구 세션을 설정하도록 코어를 구성할 수도 있습니다. 이렇게 하면 코어가 오프라인 상태일 AWS 클라우드 때 코어가에서 보낸 메시지를 수신할 수 있습니다. 자세한 내용은 [를 사용한 MQTT 영구 세션 AWS IoT Core](gg-core.md#mqtt-persistent-sessions) 단원을 참조하십시오.

## 섀도우 동기화 제한 시간 문제 해결
<a name="troubleshooting-shadow-sync"></a>

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 []}"
```

가능한 해결 방법은 코어 장치가 호스트 응답을 기다리는 시간을 구성하는 것입니다. `{{greengrass-root}}/config`에서 [config.json](gg-core.md#config-json) 파일을 열고 제한 시간 값이 초 단위인 `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 이하의 경우 기본값은 1초`shadowSyncTimeout`입니다.

## AWS re:Post 확인
<a name="troubleshooting-repost"></a>

이 주제의 문제 해결 정보를 사용하여 문제를 해결할 수 없는 경우 re:Post에서 관련 문제를 검색[문제 해결 AWS IoT Greengrass](#gg-troubleshooting)하거나 태그를 확인하거나 새 질문을 게시할 수 있습니다. [AWS IoT GreengrassAWS](https://repost.aws/tags/TA4ckIed1sR4enZBey29rKTg/aws-io-t-greengrass) AWS IoT Greengrass 팀원은 AWS re:Post를 적극적으로 모니터링합니다.