기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.
이 섹션의 문제 해결 정보 및 솔루션을 사용하여 문제를 해결할 수 있습니다 AWS IoT Greengrass Version 2.
주제
AWS IoT Greengrass 코어 소프트웨어 및 구성 요소 로그 보기
AWS IoT Greengrass 코어 소프트웨어는 코어 디바이스에 대한 실시간 정보를 보는 데 사용할 수 있는 로그를 로컬 파일 시스템에 기록합니다. 또한 코어 디바이스가 CloudWatch Logs에 로그를 쓰도록 구성하여 원격으로 코어 디바이스의 문제를 해결할 수도 있습니다. 이러한 로그는 구성 요소, 배포, 코어 디바이스 관련 문제를 식별하는 데 도움이 될 수 있습니다. 자세한 내용은 AWS IoT Greengrass 로그 모니터링 단원을 참조하십시오.
AWS IoT Greengrass 코어 소프트웨어 문제
AWS IoT Greengrass 코어 소프트웨어 문제를 해결합니다.
주제
- ListDeployments API의 ThrottlingException
- 코어 디바이스를 설정할 수 없음
- AWS IoT Greengrass 코어 소프트웨어를 시스템 서비스로 시작할 수 없음
- nucleus를 시스템 서비스로 설정할 수 없음
- AWS IoT Core에 연결할 수 없음
- 메모리 부족 오류
- Greengrass CLI를 설치할 수 없음
- User root is not allowed to execute
- com.aws.greengrass.lifecyclemanager.GenericExternalService: Could not determine user/group to run with
- Failed to map segment from shared object: operation not permitted
- Windows 서비스를 설정하지 못함
- com.aws.greengrass.util.exceptions.TLSAuthException: Failed to get trust manager
- com.aws.greengrass.deployment.IotJobsHelper: No connection available during subscribing to Iot Jobs descriptions topic. Will retry in sometime
- software.amazon.awssdk.services.iam.model.IamException: The security token included in the request is invalid
- software.amazon.awssdk.services.iot.model.IotException: User: <user> is not authorized to perform: iot:GetPolicy
- Error: com.aws.greengrass.shadowmanager.sync.model.FullShadowSyncRequest: Could not execute cloud shadow get request
- Operation aws.greengrass#<operation> is not supported by Greengrass
- java.io.FileNotFoundException: <stream-manager-store-root-dir>/stream_manager_metadata_store (Permission denied)
- com.aws.greengrass.security.provider.pkcs11.PKCS11CryptoKeyService: Private key or certificate with label <label> does not exist
- software.amazon.awssdk.services.secretsmanager.model.SecretsManagerException: User: <user> is not authorized to perform: secretsmanager:GetSecretValue on resource: <arn>
- software.amazon.awssdk.services.secretsmanager.model.SecretsManagerException: Access to KMS is not allowed
- java.lang.NoClassDefFoundError: com/aws/greengrass/security/CryptoKeySpi
- com.aws.greengrass.security.provider.pkcs11.PKCS11CryptoKeyService: CKR_OPERATION_NOT_INITIALIZED
- Greengrass core device stuck on nucleus v2.12.3
- Greengrass nucleus v2.14.0 systemd template issue
ListDeployments API의 ThrottlingException
ThrottlingException
ListDeployments
API에서: 계정에 배포가 많은 경우이 메시지가 표시될 수 있습니다.
이 문제를 해결하려면 다음 중 하나를 수행합니다.
SDK를 사용하는 경우 MaxResult 파라미터를 지정하십시오. 예를 들어 값이 작은 JavaSDK
의 경우(예: 5). AWS Service Quotas를 사용하여 API의 속도 한도 증가를 요청할 수 있습니다
DescribeJob
. 서비스 할당량 콘솔로 이동하여의 할당량을 선택할 수 AWS IoT 있으며 제한 이름은 DescribeJob 스로틀 제한입니다. 10에서 50으로 늘릴 수 있습니다.
코어 디바이스를 설정할 수 없음
AWS IoT Greengrass 코어 소프트웨어 설치 프로그램이 실패하고 코어 디바이스를 설정할 수 없는 경우 소프트웨어를 제거하고 다시 시도해야 할 수 있습니다. 자세한 내용은 AWS IoT Greengrass 코어 소프트웨어 제거 단원을 참조하십시오.
AWS IoT Greengrass 코어 소프트웨어를 시스템 서비스로 시작할 수 없음
AWS IoT Greengrass 코어 소프트웨어가 시작되지 않으면 시스템 서비스 로그를 확인하여 문제를 식별합니다. 일반적인 문제 중 하나는 PATH 환경 변수(Linux) 또는 PATH 시스템 변수(Windows)에서 Java를 사용할 수 없는 경우입니다.
nucleus를 시스템 서비스로 설정할 수 없음
AWS IoT Greengrass 코어 소프트웨어 설치 관리자가 시스템 서비스로 설정되지 않으면이 오류가 발생할 AWS IoT Greengrass 수 있습니다. Linux 디바이스에서 이 오류는 일반적으로 코어 디바이스에 systemd
다음 중 하나를 수행합니다.
-
AWS IoT Greengrass 코어 소프트웨어를 시스템 서비스로 구성하고 실행합니다. AWS IoT Greengrass의 모든 기능을 사용하려면 소프트웨어를 시스템 서비스로 구성해야 합니다. systemd
를 설치하거나 다른 init 시스템을 사용할 수 있습니다. 자세한 내용은 Greengrass nucleus를 시스템 서비스로 구성 단원을 참조하십시오. -
시스템 서비스 없이 AWS IoT Greengrass 코어 소프트웨어를 실행합니다. 설치 관리자가 Greengrass 루트 폴더에 설정한 로더 스크립트를 사용하여 소프트웨어를 실행할 수 있습니다. 자세한 내용은 시스템 서비스 없이 AWS IoT Greengrass 코어 소프트웨어 실행 단원을 참조하십시오.
AWS IoT Core에 연결할 수 없음
예를 들어 AWS IoT Greengrass 코어 소프트웨어가에 연결하여 배포 작업을 AWS IoT Core 검색할 수 없는 경우이 오류가 발생할 수 있습니다. 다음을 수행합니다.
-
코어 디바이스가 인터넷 및에 연결할 수 있는지 확인합니다 AWS IoT Core. 디바이스가 연결되는 AWS IoT Core 엔드포인트에 대한 자세한 내용은 섹션을 참조하세요AWS IoT Greengrass 코어 소프트웨어 구성.
-
코어 디바이스의 AWS IoT 사물이
iot:Connect
,iot:Publish
iot:Receive
, 및iot:Subscribe
권한을 허용하는 인증서를 사용하는지 확인합니다. -
코어 디바이스가 네트워크 프록시를 사용하는 경우 코어 디바이스에 디바이스 역할이 있고 해당 역할이
iot:Connect
,iot:Publish
,iot:Receive
,iot:Subscribe
권한을 허용하는지 확인하세요.
메모리 부족 오류
이 오류는 일반적으로 디바이스에 Java 힙에 객체를 할당할 메모리가 충분하지 않은 경우에 발생합니다. 메모리가 제한된 디바이스에서는 메모리 할당을 제어하기 위해 최대 힙 크기를 지정해야 할 수도 있습니다. 자세한 내용은 JVM 옵션으로 메모리 할당 제어 단원을 참조하십시오.
Greengrass CLI를 설치할 수 없음
AWS IoT Greengrass Core용 설치 명령에서 --deploy-dev-tools
인수를 사용하면 다음 콘솔 메시지가 표시될 수 있습니다.
Thing group exists, it could have existing deployment and devices, hence NOT creating deployment for Greengrass first party dev tools, please manually create a deployment if you wish to
이는 코어 디바이스가 기존 배포가 있는 사물 그룹의 멤버이기 때문에 Greengrass CLI 구성 요소가 설치되지 않은 경우에 발생합니다. 이 메시지가 표시되면 Greengrass CLI 구성 요소(aws.greengrass.Cli
)를 디바이스에 수동으로 배포하여 Greengrass CLI를 설치할 수 있습니다. 자세한 내용은 Greengrass 설치 CLI 단원을 참조하십시오.
User root is not allowed to execute
AWS IoT Greengrass 코어 소프트웨어를 실행하는 사용자(일반적으로 root
)에게 sudo
사용자 및 그룹에서 실행할 권한이 없는 경우이 오류가 표시될 수 있습니다. 기본 ggc_user
시스템 사용자의 경우 이 오류는 다음과 같이 표시됩니다.
Sorry, user root is not allowed to execute <command> as ggc_user:ggc_group.
/etc/sudoers
파일이 사용자에게 sudo
를 다른 그룹으로 실행할 수 있는 권한을 부여하는지 확인합니다. /etc/sudoers
의 사용자에 대한 권한은 다음 예제와 유사해야 합니다.
root ALL=(ALL:ALL) ALL
com.aws.greengrass.lifecyclemanager.GenericExternalService: Could not determine user/group to run with
코어 디바이스가 구성 요소를 실행하려고 하는데 Greengrass nucleus가 구성 요소를 실행하는 데 사용할 기본 시스템 사용자를 지정하지 않으면 이 오류가 발생할 수 있습니다.
이 문제를 해결하려면 구성 요소를 실행하는 기본 시스템 사용자를 지정하도록 Greengrass nucleus를 구성하세요. 자세한 내용은 구성 요소를 실행하는 사용자 구성 및 기본 구성 요소 사용자 구성 단원을 참조하세요.
Failed to map segment from shared object: operation not permitted
/tmp
폴더가 noexec
권한으로 마운트되어 코어 AWS IoT Greengrass 소프트웨어가 시작되지 않으면이 오류가 발생할 수 있습니다. AWS 공통 런타임(CRT) 라이브러리/tmp
폴더를 사용합니다.
다음 중 하나를 수행합니다.
-
다음 명령을 실행하여
exec
권한이 있는/tmp
폴더를 다시 탑재하고 다시 시도하세요.sudo mount -o remount,exec /tmp
-
Greengrass nucleus v2.5.0 이상을 실행하는 경우 JVM 옵션을 설정하여 AWS CRT 라이브러리가 사용하는 폴더를 변경할 수 있습니다. 배포의 Greengrass nucleus 구성 요소 구성에서 또는 AWS IoT Greengrass 코어 소프트웨어를 설치할 때
jvmOptions
파라미터를 지정할 수 있습니다./path/to/use
를 AWS CRT 라이브러리가 사용할 수 있는 폴더의 경로로 바꿉니다.{ "jvmOptions": "-Daws.crt.lib.dir=\"
/path/to/use
\"" }
Windows 서비스를 설정하지 못함
Microsoft Windows 2016 디바이스에 AWS IoT Greengrass 코어 소프트웨어를 설치하면이 오류가 발생할 수 있습니다. AWS IoT Greengrass 코어 소프트웨어는 Windows 2016에서 지원되지 않습니다. 지원되는 운영 체제 목록은 섹션을 참조하세요지원하는 플랫폼.
Windows 2016을 사용하려면 먼저 다음과 같이 해야 합니다.
-
다운로드한 AWS IoT Greengrass 코어 설치 아카이브의 압축을 풉니다.
-
Greengrass
디렉터리에서bin/greengrass.xml.template
파일을 엽니다. -
<autoRefresh>
태그 바로 앞 파일의 끝에</service>
태그를 추가합니다.</log> <autoRefresh>false</autoRefresh> </service>
com.aws.greengrass.util.exceptions.TLSAuthException: Failed to get trust manager
루트 인증 기관(CA) 파일 없이 AWS IoT Greengrass 코어 소프트웨어를 설치할 때이 오류가 발생할 수 있습니다.
2022-06-05T10:00:39.556Z [INFO] (main) com.aws.greengrass.lifecyclemanager.Kernel: service-loaded. {serviceName=DeploymentService} 2022-06-05T10:00:39.943Z [WARN] (main) com.aws.greengrass.componentmanager.ClientConfigurationUtils: configure-greengrass-mutual-auth. Error during configure greengrass client mutual auth. {} com.aws.greengrass.util.exceptions.TLSAuthException: Failed to get trust manager
설치 관리자가 제공하는 구성 파일에 rootCaPath
파라미터를 사용하여 유효한 루트 CA 파일을 지정했는지 확인하세요. 자세한 내용은 AWS IoT Greengrass 코어 소프트웨어 설치 단원을 참조하십시오.
com.aws.greengrass.deployment.IotJobsHelper: No connection available during subscribing to Iot Jobs descriptions topic. Will retry in sometime
코어 디바이스가 배포 작업 알림을 구독 AWS IoT Core 하기 위해에 연결할 수 없는 경우이 경고 메시지가 표시될 수 있습니다. 다음을 수행합니다.
-
코어 디바이스가 인터넷에 연결되어 있고 구성한 AWS IoT 데이터 엔드포인트에 도달할 수 있는지 확인합니다. 코어 디바이스가 사용하는 엔드포인트에 대한 자세한 내용은 프록시 또는 방화벽을 통해 디바이스 트래픽 허용 섹션을 참조하세요.
-
Greengrass 로그에서 기타 근본 원인을 알려주는 다른 오류가 있는지 확인하세요.
software.amazon.awssdk.services.iam.model.IamException: The security token included in the request is invalid
자동 프로비저닝으로 AWS IoT Greengrass 코어 소프트웨어를 설치하고 설치 관리자가 유효하지 않은 AWS 세션 토큰을 사용하는 경우이 오류가 발생할 수 있습니다. 다음을 수행합니다.
-
임시 보안 인증을 사용하는 경우 세션 토큰이 올바르고 전체 세션 토큰을 복사하고 붙여넣고 있는지 확인하세요.
-
장기 보안 자격 증명을 사용하는 경우 이전에 임시 자격 증명을 사용한 시점의 세션 토큰이 디바이스에 없는지 확인하세요. 다음을 수행합니다.
-
세션 토큰 환경 변수의 설정을 해제하려면 다음 명령을 실행하세요.
unset AWS_SESSION_TOKEN
-
AWS 자격 증명 파일에 세션 토큰가
~/.aws/credentials
포함되어 있는지 확인합니다aws_session_token
. 그렇다면 파일에서 해당 줄을 제거합니다.aws_session_token =
AQoEXAMPLEH4aoAH0gNCAPyJxz4BlCFFxWNE1OPTgk5TthT+FvwqnKwRcOIfrRh3c/LTo6UDdyJwOOvEVPvLXCrrrUtdnniCEXAMPLE/IvU1dYUg2RVAJBanLiHb4IgRmpRV3zrkuWJOgQs8IZZaIv2BXIa2R4Olgk
-
자격 AWS 증명을 제공하지 않고도 AWS IoT Greengrass 코어 소프트웨어를 설치할 수도 있습니다. 자세한 내용은 수동 리소스 프로비저닝을 사용하여 AWS IoT Greengrass Core 소프트웨어 설치 또는 AWS IoT 플릿 프로비저닝을 사용하여 AWS IoT Greengrass Core 소프트웨어 설치을 참조하세요.
software.amazon.awssdk.services.iot.model.IotException: User: <user> is not authorized to perform: iot:GetPolicy
자동 프로비저닝을 사용하여 AWS IoT Greengrass 코어 소프트웨어를 설치하고 설치 관리자가 필요한 권한이 없는 AWS 자격 증명을 사용하는 경우이 오류가 발생할 수 있습니다. 필요한 권한에 대한 자세한 내용은 설치 관리자가 리소스를 프로비저닝하기 위한 최소 IAM 정책 섹션을 참조하세요.
자격 증명의 IAM ID에 대한 권한을 확인하고 필요한 권한이 누락된 경우 해당 IAM ID에 부여합니다.
Error: com.aws.greengrass.shadowmanager.sync.model.FullShadowSyncRequest: Could not execute cloud shadow get request
섀도 관리자 구성 요소를 사용하여 디바이스 섀도우를 동기화하면이 오류가 표시될 수 있습니다 AWS IoT Core. HTTP 403 상태 코드는 코어 디바이스의 AWS IoT 정책이를 호출할 수 있는 권한을 부여하지 않기 때문에이 오류가 발생했음을 나타냅니다GetThingShadow
.
com.aws.greengrass.shadowmanager.sync.model.FullShadowSyncRequest: Could not execute cloud shadow get request. {thing name=MyGreengrassCore, shadow name=MyShadow} 2021-07-14T21:09:02.456Z [ERROR] (pool-2-thread-109) com.aws.greengrass.shadowmanager.sync.SyncHandler: sync. Skipping sync request. {thing name=MyGreengrassCore, shadow name=MyShadow} com.aws.greengrass.shadowmanager.exception.SkipSyncRequestException: software.amazon.awssdk.services.iotdataplane.model.IotDataPlaneException: null (Service: IotDataPlane, Status Code: 403, Request ID: f6e713ba-1b01-414c-7b78-5beb3f3ad8f6, Extended Request ID: null)
로컬 섀도 AWS IoT Core우를와 동기화하려면 코어 디바이스의 AWS IoT 정책에서 다음 권한을 부여해야 합니다.
-
iot:GetThingShadow
-
iot:UpdateThingShadow
-
iot:DeleteThingShadow
코어 디바이스의 AWS IoT 정책을 확인하고 누락된 필수 권한을 추가합니다. 자세한 내용은 다음 자료를 참조하세요.
-
AWS IoT 개발자 안내서의 AWS IoT Core 정책 작업
Operation aws.greengrass#<operation> is not supported by Greengrass
사용자 지정 Greengrass 구성 요소에서 프로세스 간 통신(IPC) 작업을 사용하고 필수 AWS제공 구성 요소가 코어 디바이스에 설치되지 않은 경우이 오류가 발생할 수 있습니다.
이 문제를 해결하려면 구성 요소 레시피에 필수 구성 요소를 종속성으로 추가하여 구성 요소를 배포할 때 AWS IoT Greengrass 코어 소프트웨어가 필수 구성 요소를 설치하도록 합니다.
-
암호 값 검색 –
aws.greengrass.SecretManager
-
로컬 섀도와 상호 작용 –
aws.greengrass.ShadowManager
-
로컬 배포 및 구성 요소 관리 –
aws.greengrass.Cli
v2.6.0 이상 -
클라이언트 디바이스 인증 및 권한 부여 –
aws.greengrass.clientdevices.Auth
v2.2.0 이상
java.io.FileNotFoundException: <stream-manager-store-root-dir>/stream_manager_metadata_store (Permission denied)
존재하지 않거나 올바른 권한이 없는 루트 폴더를 사용하도록 스트림 관리자를 구성하는 경우 스트림 관리자 로그 파일(aws.greengrass.StreamManager.log
)에 이 오류가 발생할 수 있습니다. 이 폴더를 구성하는 방법에 대한 자세한 내용은 스트림 관리자 구성을 참조하세요.
com.aws.greengrass.security.provider.pkcs11.PKCS11CryptoKeyService: Private key or certificate with label <label> does not exist
이 오류는 PKCS#11 공급자 구성 요소가 하드웨어 보안 모듈(HSM)을 사용하도록 AWS IoT Greengrass 코어 소프트웨어를 구성할 때 지정한 프라이빗 키 또는 인증서를 찾거나 로드할 수 없을 때 발생합니다. 다음을 수행합니다.
-
사용할 AWS IoT Greengrass 코어 소프트웨어를 구성하는 슬롯, 사용자 PIN 및 객체 레이블을 사용하여 프라이빗 키와 인증서가 HSM에 저장되어 있는지 확인합니다.
-
프라이빗 키와 인증서가 HSM에서 동일한 객체 레이블을 사용하는지 확인하세요.
-
HSM에서 객체 ID를 지원하는 경우 프라이빗 키와 인증서가 HSM에서 동일한 객체 ID를 사용하는지 확인하세요.
HSM의 보안 토큰에 대한 세부 정보를 쿼리하는 방법을 알아보려면 해당 HSM의 설명서를 확인하세요. 보안 토큰의 슬롯, 객체 레이블 또는 객체 ID를 변경해야 하는 경우 HSM의 설명서를 확인하여 변경 방법을 알아보세요.
software.amazon.awssdk.services.secretsmanager.model.SecretsManagerException: User: <user> is not authorized to perform: secretsmanager:GetSecretValue on resource: <arn>
이 오류는 보안 암호 관리자 구성 요소를 사용하여 AWS Secrets Manager 보안 암호를 배포할 때 발생할 수 있습니다. 코어 디바이스의 토큰 교환 IAM 역할이 암호를 가져올 수 있는 권한을 부여하지 않으면 배포가 실패하고 Greengrass 로그에 이 오류가 포함됩니다.
코어 디바이스가 암호를 다운로드하도록 승인하려면
-
코어 디바이스의 토큰 교환 역할에
secretsmanager:GetSecretValue
권한을 추가합니다. 다음 예제 정책 설명문에서는 암호의 값을 가져올 수 있는 권한을 부여합니다.{ "Effect": "Allow", "Action": [ "secretsmanager:GetSecretValue" ], "Resource": [ "arn:aws:secretsmanager:us-west-2:123456789012:secret:MyGreengrassSecret-abcdef" ] }
자세한 내용은 코어 디바이스에 AWS 서비스와 상호 작용 권한 부여 단원을 참조하십시오.
-
코어 디바이스에 배포를 다시 적용합니다. 다음 중 하나를 수행합니다.
-
변경 없이 배포를 수정합니다. 코어 디바이스는 수정된 배포를 수신하는 경우 암호를 다시 다운로드하려고 합니다. 자세한 내용은 배포 수정 단원을 참조하십시오.
-
AWS IoT Greengrass 코어 소프트웨어를 다시 시작하여 배포를 다시 시도합니다. 자세한 내용은 AWS IoT Greengrass 코어 소프트웨어 실행 단원을 참조하세요.
보안 암호 관리자가 보안 암호를 성공적으로 다운로드하면 배포가 성공합니다.
-
software.amazon.awssdk.services.secretsmanager.model.SecretsManagerException: Access to KMS is not allowed
이 오류는 보안 암호 관리자 구성 요소를 사용하여 키로 암호화된 AWS Secrets Manager 보안 암호를 배포할 때 발생할 수 있습니다 AWS Key Management Service . 코어 디바이스의 토큰 교환 IAM 역할이 암호를 해독할 수 있는 권한을 부여하지 않으면 배포가 실패하고 Greengrass 로그에 이 오류가 포함됩니다.
이 문제를 해결하려면 코어 디바이스의 토큰 교환 역할에 kms:Decrypt
권한을 추가합니다. 자세한 내용은 다음 자료를 참조하세요.
-
AWS Secrets Manager 사용 설명서의 암호 암호화 및 해독
java.lang.NoClassDefFoundError: com/aws/greengrass/security/CryptoKeySpi
하드웨어 보안으로 AWS IoT Greengrass 코어 소프트웨어를 설치하려고 하고 하드웨어 보안 통합을 지원하지 않는 이전 Greengrass nucleus 버전을 사용하는 경우이 오류가 발생할 수 있습니다. 하드웨어 보안 통합을 사용하려면 Greengrass nucleus v2.5.3 이상을 사용해야 합니다.
com.aws.greengrass.security.provider.pkcs11.PKCS11CryptoKeyService: CKR_OPERATION_NOT_INITIALIZED
AWS IoT Greengrass Core를 시스템 서비스로 실행할 때 TPM2 라이브러리를 사용하면이 오류가 발생할 수 있습니다.
이 오류는 AWS IoT Greengrass 코어 시스템 서비스 파일에 PKCS#11 스토어의 위치를 제공하는 환경 변수를 추가해야 함을 나타냅니다.
자세한 내용은 PKCS#11 공급자 구성 요소 설명서의 요구 사항 섹션을 참조하세요.
Greengrass core device stuck on nucleus v2.12.3
Greengrass 코어 디바이스가 nucleus 버전 2.12.3에서 배포를 수정하지 않는 경우 다운로드하여 Greengrass.jar
파일을 Greengrass nucleus 버전 2.12.2로 바꾸어야 할 수 있습니다. 다음을 수행합니다.
-
Greengrass 코어 디바이스에서 다음 명령을 실행하여 Greengrass 코어 소프트웨어를 중지합니다.
sudo systemctl stop greengrass
-
코어 디바이스에서 AWS IoT Greengrass 소프트웨어를 라는 파일에 다운로드합니다
greengrass-2.12.2.zip
.curl -s https://d2s8p88vqu9w66.cloudfront.net/releases/greengrass-2.12.2.zip > greengrass-2.12.2.zip
-
AWS IoT Greengrass 코어 소프트웨어의 압축을 디바이스의 폴더에 풉니다.
GreengrassInstaller
를 사용하려는 폴더로 바꿉니다.unzip greengrass-2.12.2.zip -d GreengrassInstaller && rm greengrass-2.12.2.zip
-
다음 명령을 실행하여 nucleus 버전 2.12.3 Greengrass JAR 파일을 nucleus 버전 2.12.2 Greengrass JAR 파일로 재정의합니다.
sudo cp ./GreengrassInstaller/lib/Greengrass.jar /greengrass/v2/packages/artifacts-unarchived/aws.greengrass.Nucleus/2.12.3/aws.greengrass.nucleus/lib
-
다음 명령을 실행하여 Greengrass 코어 소프트웨어를 시작합니다.
sudo systemctl start greengrass
Greengrass nucleus v2.14.0 systemd template issue
기본 시스템 서비스 템플릿이 있는 Linux 디바이스에 Greengrass nucleus v2.14.0을 설치한 경우이 문제가 발생할 수 있습니다. 다음을 수행합니다.
-
Greengrass 코어 디바이스에서 다음 명령을 실행하여 시스템화된 서비스 파일을 nucleus v2.13.0 이하에 있는 방식으로 되돌립니다.
sudo sed -i 's|ExecStart=/bin/sh -c "\(.*\) >> .*/logs/loader.log 2>&1"|ExecStart=/bin/sh \1|' /etc/systemd/system/greengrass.service
-
변경 사항을 적용합니다.
sudo systemctl daemon-reload sudo systemctl restart greengrass
AWS IoT Greengrass 클라우드 문제
다음 정보를 사용하여 AWS IoT Greengrass 콘솔 및 API 관련 문제를 해결합니다. 각 항목은 작업을 수행할 때 표시될 수 있는 오류 메시지에 해당합니다.
An error occurred (AccessDeniedException) when calling the CreateComponentVersion operation: User: arn:aws:iam::123456789012:user/<username> is not authorized to perform: null
AWS IoT Greengrass 콘솔에서 또는 CreateComponentVersion 작업을 사용하여 구성 요소 버전을 생성할 때이 오류가 발생할 수 있습니다.
이 오류는 레시피가 유효한 JSON 또는 YAML이 아님을 나타냅니다. 레시피의 구문을 확인하고 구문 문제를 해결한 다음 다시 시도하세요. 온라인 JSON 또는 YAML 구문 검사기를 사용하여 레시피에서 구문 문제를 식별할 수 있습니다.
Invalid Input: Encountered following errors in Artifacts: {<s3ArtifactUri> = Specified artifact resource cannot be accessed}
AWS IoT Greengrass 콘솔에서 또는 CreateComponentVersion 작업을 사용하여 구성 요소 버전을 생성할 때이 오류가 발생할 수 있습니다. 이 오류는 구성 요소 레시피의 S3 아티팩트가 유효하지 않음을 나타냅니다.
다음을 수행합니다.
-
S3 버킷이 구성 요소를 생성하는 AWS 리전 곳과 동일한에 있는지 확인합니다. AWS IoT Greengrass 는 구성 요소 아티팩트에 대한 리전 간 요청을 지원하지 않습니다.
-
아티팩트 URI가 유효한 S3 객체 URL인지 확인하고 해당 S3 객체 URL에 아티팩트가 있는지 확인하세요.
-
AWS 계정 에 S3 객체 URL에서 아티팩트에 액세스할 수 있는 권한이 있는지 확인합니다.
INACTIVE deployment status
필요한 종속 AWS IoT 정책 없이 ListDeployments API를 호출하면 INACTIVE
배포 상태가 될 수 있습니다. 정확한 배포 상태를 가져오려면 필요한 권한이 있어야 합니다. AWS IoT Greengrass V2에서 정의한 작업을 살펴보고 ListDeployments
에 필요한 권한을 따르면 종속 작업을 찾을 수 있습니다. 필수 종속 AWS IoT 권한이 없으면 배포 상태는 계속 표시되지만의 부정확한 배포 상태가 표시될 수 있습니다INACTIVE
.
코어 디바이스 배포 문제
Greengrass 코어 디바이스의 배포 문제를 해결하세요. 각 항목은 코어 디바이스에 표시될 수 있는 로그 메시지에 해당합니다.
주제
- Error: com.aws.greengrass.componentmanager.exceptions.PackageDownloadException: Failed to download artifact
- Error: com.aws.greengrass.componentmanager.exceptions.ArtifactChecksumMismatchException: Integrity check for downloaded artifact failed. Probably due to file corruption.
- Error: com.aws.greengrass.componentmanager.exceptions.NoAvailableComponentVersionException: Failed to negotiate component <name> version with cloud and no local applicable version satisfying requirement <requirements>
- software.amazon.awssdk.services.greengrassv2data.model.ResourceNotFoundException: The latest version of Component <componentName> doesn't claim platform <coreDevicePlatform> compatibility
- com.aws.greengrass.componentmanager.exceptions.PackagingException: The deployment attempts to update the nucleus from aws.greengrass.Nucleus-<version> to aws.greengrass.Nucleus-<version> but no component of type nucleus was included as target component
- Error: com.aws.greengrass.deployment.exceptions.DeploymentException: Unable to process deployment. Greengrass launch directory is not set up or Greengrass is not set up as a system service
- Info: com.aws.greengrass.deployment.exceptions.RetryableDeploymentDocumentDownloadException: Greengrass Cloud Service returned an error when getting full deployment configuration
- Warn: com.aws.greengrass.deployment.DeploymentService: Failed to get thing group hierarchy
- Info: com.aws.greengrass.deployment.DeploymentDocumentDownloader: Calling Greengrass cloud to get full deployment configuration
- Caused by: software.amazon.awssdk.services.greengrassv2data.model.GreengrassV2DataException: null (Service: GreengrassV2Data, Status Code: 403, Request ID: <some_request_id>, Extended Request ID: null)
Error: com.aws.greengrass.componentmanager.exceptions.PackageDownloadException: Failed to download artifact
AWS IoT Greengrass 코어 소프트웨어가 코어 디바이스가 배포를 적용할 때 구성 요소 아티팩트를 다운로드하지 못하면이 오류가 발생할 수 있습니다. 이 오류로 인해 배포가 실패합니다.
이러한 오류가 발생하는 경우 로그에 특정 문제를 식별하는 데 사용할 수 있는 스택 추적도 포함됩니다. 다음 각 항목은 Failed to download artifact
오류 메시지의 스택 추적에 표시될 수 있는 메시지에 해당합니다.
주제
software.amazon.awssdk.services.s3.model.S3Exception: null (Service: S3, Status Code: 403, Request ID: null, ...)
다음 경우에는 PackageDownloadException 오류에 이 스택 추적이 포함될 수 있습니다.
-
구성 요소의 레시피에 지정한 S3 객체 URL에서 구성 요소 아티팩트를 사용할 수 없습니다. 아티팩트를 S3 버킷에 업로드했고 아티팩트 URI가 버킷에 있는 아티팩트의 S3 객체 URL과 일치하는지 확인하세요.
-
코어 디바이스의 토큰 교환 역할은 AWS IoT Greengrass 코어 소프트웨어가 구성 요소의 레시피에 지정한 S3 객체 URL에서 구성 요소 아티팩트를 다운로드하도록 허용하지 않습니다. 토큰 교환 역할이 아티팩트를 사용할 수 있는 S3 객체 URL에 대해
s3:GetObject
를 허용하는지 확인하세요.
software.amazon.awssdk.services.s3.model.S3Exception: Access Denied (Service: S3, Status Code: 403, Request ID: <requestID>
코어 디바이스에 s3:GetBucketLocation
을 직접적으로 호출할 권한이 없는 경우 PackageDownloadException 오류에 이 스택 추적이 포함될 수 있습니다. 오류 메시지에는 다음 메시지도 포함되어 있습니다.
reason: Failed to determine S3 bucket location
코어 디바이스의 토큰 교환 역할이 아티팩트를 사용할 수 있는 S3 버킷에 대해 s3:GetBucketLocation
을 허용하는지 확인하세요.
Error: com.aws.greengrass.componentmanager.exceptions.ArtifactChecksumMismatchException: Integrity check for downloaded artifact failed. Probably due to file corruption.
AWS IoT Greengrass 코어 소프트웨어가 코어 디바이스가 배포를 적용할 때 구성 요소 아티팩트를 다운로드하지 못하면이 오류가 발생할 수 있습니다. 다운로드한 아티팩트 파일의 체크섬이 구성 요소를 생성할 때 AWS IoT Greengrass 계산된 체크섬과 일치하지 않으므로 배포가 실패합니다.
다음을 수행합니다.
-
아티팩트 파일을 호스팅하는 S3 버킷에서 아티팩트 파일이 변경되었는지 확인하세요. 구성 요소를 생성한 후 파일이 변경된 경우 코어 디바이스에서 예상하는 이전 버전으로 복원하세요. 파일을 이전 버전으로 복원할 수 없거나 파일의 새 버전을 사용하려면 아티팩트 파일로 구성 요소의 새 버전을 생성합니다.
-
코어 디바이스의 인터넷 연결을 확인하세요. 아티팩트 파일이 다운로드하는 동안 손상된 경우 이 오류가 발생할 수 있습니다. 새 배포를 생성하고 다시 시도하세요.
Error: com.aws.greengrass.componentmanager.exceptions.NoAvailableComponentVersionException: Failed to negotiate component <name> version with cloud and no local applicable version satisfying requirement <requirements>
코어 디바이스에서 해당 코어 디바이스에 대한 배포 요구 사항을 충족하는 구성 요소 버전을 찾을 수 없는 경우 이 오류가 발생할 수 있습니다. 코어 디바이스는 AWS IoT Greengrass 서비스 및 로컬 디바이스의 구성 요소를 확인합니다. 오류 메시지는 각 배포의 대상과 해당 배포의 구성 요소에 대한 버전 요구 사항을 포함합니다. 배포 대상은 코어 디바이스의 로컬 배포를 나타내는 사물, 사물 그룹 또는 LOCAL_DEPLOYMENT
일 수 있습니다.
이 문제는 다음 경우에 발생할 수 있습니다.
-
코어 디바이스는 구성 요소 버전 요구 사항이 충돌하는 여러 배포의 대상입니다. 예를 들어 코어 디바이스는
com.example.HelloWorld
구성 요소가 포함된 여러 배포의 대상으로 한 배포에는 버전 1.0.0이 필요하고 다른 배포에는 버전 1.0.1이 필요할 수 있습니다. 두 가지 요구 사항을 모두 충족하는 구성 요소를 보유하는 것은 불가능하므로 배포가 실패합니다. -
구성 요소 버전이 AWS IoT Greengrass 서비스 또는 로컬 디바이스에 존재하지 않습니다. 예를 들어 구성 요소가 삭제되었을 수 있습니다.
-
버전 요구 사항을 충족하는 구성 요소 버전이 있지만 어느 것도 코어 디바이스의 플랫폼과 호환되지 않습니다.
-
코어 디바이스의 AWS IoT 정책은
greengrass:ResolveComponentCandidates
권한을 부여하지 않습니다. 오류 로그에서Status Code: 403
을 찾아 이 문제를 식별합니다. 이 문제를 해결하려면 코어 디바이스의 AWS IoT 정책에greengrass:ResolveComponentCandidates
권한을 추가합니다. 자세한 내용은 AWS IoT Greengrass V2 코어 디바이스에 대한 최소 AWS IoT 정책 단원을 참조하십시오.
이 문제를 해결하려면 호환되는 구성 요소 버전을 포함하도록 배포를 수정하거나 호환되지 않는 구성 요소 버전을 제거합니다. 클라우드 배포를 수정하는 방법에 대한 자세한 내용은 배포 수정 섹션을 참조하세요. 로컬 배포를 수정하는 방법에 대한 자세한 내용은 AWS IoT Greengrass CLI 배포 생성 명령을 참조하세요.
software.amazon.awssdk.services.greengrassv2data.model.ResourceNotFoundException: The latest version of Component <componentName> doesn't claim platform <coreDevicePlatform> compatibility
코어 디바이스에 구성 요소를 배포할 때 구성 요소가 코어 디바이스의 플랫폼과 호환되는 플랫폼을 나열하지 않는 경우 이 오류가 발생할 수 있습니다. 다음 중 하나를 수행합니다.
-
구성 요소가 사용자 지정 Greengrass 구성 요소인 경우 코어 디바이스와 호환되도록 구성 요소를 업데이트할 수 있습니다. 코어 디바이스의 플랫폼과 일치하는 새로운 매니페스트를 추가하거나 코어 디바이스의 플랫폼과 일치하도록 기존 매니페스트를 업데이트하세요. 자세한 내용은 AWS IoT Greengrass 구성 요소 레시피 참조 단원을 참조하십시오.
-
에서 구성 요소를 제공하는 경우 구성 요소의 다른 버전이 코어 디바이스와 호환되는지 AWS확인합니다. 호환되는 버전이 없는 경우 AWS IoT Greengrass 태그
를 사용하여 AWS re:Post 에 문의하거나 지원 에 문의하세요.
com.aws.greengrass.componentmanager.exceptions.PackagingException: The deployment attempts to update the nucleus from aws.greengrass.Nucleus-<version> to aws.greengrass.Nucleus-<version> but no component of type nucleus was included as target component
Greengrass nucleus에 따라 달라지는 구성 요소를 배포하고 코어 디바이스가 사용 가능한 최신 마이너 버전보다 이전의 Greengrass nucleus 버전을 실행하는 경우 이 오류가 발생할 수 있습니다. 이 오류는 AWS IoT Greengrass 코어 소프트웨어가 구성 요소를 호환되는 최신 버전으로 자동 업데이트하려고 하기 때문에 발생합니다. 그러나 AWS IoT Greengrass 코어 소프트웨어는 여러 AWS제공 구성 요소가 Greengrass nucleus의 특정 마이너 버전에 따라 달라지기 때문에 Greengrass nucleus가 새 마이너 버전으로 업데이트되지 않도록 합니다. 자세한 내용은 Greengrass nucleus 업데이트 동작 단원을 참조하십시오.
사용하려는 Greengrass nucleus 버전을 지정하려면 배포를 수정해야 합니다. 다음 중 하나를 수행합니다.
-
코어 디바이스가 현재 실행하는 Greengrass nucleus 버전을 지정하도록 배포를 수정하세요.
-
Greengrass nucleus의 이후 마이너 버전을 지정하도록 배포를 수정하세요. 이 옵션을 선택하는 경우 Greengrass nucleus의 특정 마이너 버전에 따라 AWS제공되는 구성 요소의 버전도 업데이트해야 합니다. 자세한 내용은 AWS제공 구성 요소 단원을 참조하십시오.
Error: com.aws.greengrass.deployment.exceptions.DeploymentException: Unable to process deployment. Greengrass launch directory is not set up or Greengrass is not set up as a system service
Greengrass 디바이스를 한 그룹에서 다른 그룹으로 이동한 다음 Greengrass를 다시 시작해야 하는 배포를 사용하여 원래 그룹으로 다시 돌아오는 경우 이 오류가 발생할 수 있습니다.
이 문제를 해결하려면 디바이스의 시작 디렉터리를 다시 생성합니다. 또한 Greengrass nucleus 버전 2.9.6 이상으로 업그레이드하는 것이 좋습니다.
다음은 시작 디렉터리를 다시 생성하기 위한 Linux 스크립트입니다. fix_directory.sh
라는 파일에 스크립트를 저장합니다.
#!/bin/bash
set -e
GG_ROOT=$1
GG_VERSION=$2
CURRENT="$GG_ROOT/alts/current"
if [ ! -L "$CURRENT" ]; then
mkdir -p $GG_ROOT/alts/directory_fix
echo "Relinking $GG_ROOT/alts/directory_fix to $CURRENT"
ln -sf $GG_ROOT/alts/directory_fix $CURRENT
fi
TARGET=$(readlink $CURRENT)
if [[ ! -d "$TARGET" ]]; then
echo "Creating directory: $TARGET"
mkdir -p "$TARGET"
fi
DISTRO_LINK="$TARGET/distro"
DISTRO="$GG_ROOT/packages/artifacts-unarchived/aws.greengrass.Nucleus/$GG_VERSION/aws.greengrass.nucleus/"
echo "Relinking Nucleus artifacts to $DISTRO_LINK"
ln -sf $DISTRO $DISTRO_LINK
이 스크립트를 실행하려면 다음 명령을 실행합니다.
[root@ip-172-31-27-165 ~]#
./fix_directory.sh /greengrass/v2 2.9.5
Relinking /greengrass/v2/alts/directory_fix to /greengrass/v2/alts/current
Relinking Nucleus artifacts to /greengrass/v2/alts/directory_fix/distro
Info: com.aws.greengrass.deployment.exceptions.RetryableDeploymentDocumentDownloadException: Greengrass Cloud Service returned an error when getting full deployment configuration
코어 디바이스가 7KB(사물을 대상으로 하는 배포의 경우) 또는 31KB(사물 그룹을 대상으로 하는 배포의 경우)보다 큰 용량의 배포 문서인 큰 배포 문서를 수신하는 경우 이 오류가 발생할 수 있습니다. 대규모 배포 문서를 검색하려면 코어 디바이스의 AWS IoT 정책에서 greengrass:GetDeploymentConfiguration
권한을 허용해야 합니다. 코어 디바이스에 해당 권한이 없는 경우 이 오류가 발생할 수 있습니다. 이 오류가 발생하면 배포는 무기한으로 다시 시도되며 그 상태는 진행 중(IN_PROGRESS
)입니다.
이 문제를 해결하려면 코어 디바이스의 AWS IoT 정책에 greengrass:GetDeploymentConfiguration
권한을 추가합니다. 자세한 내용은 코어 디바이스의 AWS IoT 정책 업데이트 단원을 참조하십시오.
Warn: com.aws.greengrass.deployment.DeploymentService: Failed to get thing group hierarchy
코어 디바이스가 배포를 수신하고 코어 디바이스의 AWS IoT 정책에서 greengrass:ListThingGroupsForCoreDevice
권한을 허용하지 않는 경우이 경고가 표시될 수 있습니다. 배포를 생성하는 경우 코어 디바이스는 이 권한을 사용하여 사물 그룹을 식별하고 코어 디바이스를 제거한 모든 사물 그룹의 구성 요소를 제거합니다. 코어 디바이스가 Greengrass nucleus v2.5.0을 실행하는 경우 배포가 실패합니다. 코어 디바이스가 Greengrass nucleus v2.5.1 이상을 실행하는 경우에는 배포가 진행되지만 구성 요소는 제거되지 않습니다. 사물 그룹 제거 동작에 대한 자세한 내용은 디바이스에 AWS IoT Greengrass 구성 요소 배포 섹션을 참조하세요.
코어 디바이스의 동작을 업데이트하여 코어 디바이스를 제거하는 사물 그룹의 구성 요소를 제거하려면 코어 디바이스의 AWS IoT 정책에 greengrass:ListThingGroupsForCoreDevice
권한을 추가합니다. 자세한 내용은 코어 디바이스의 AWS IoT 정책 업데이트 단원을 참조하십시오.
Info: com.aws.greengrass.deployment.DeploymentDocumentDownloader: Calling Greengrass cloud to get full deployment configuration
코어 디바이스가 DEBUG
로그 수준에서 오류를 기록하므로 이 정보 메시지가 오류 없이 여러 번 인쇄될 수 있습니다. 이 문제는 코어 디바이스가 큰 배포 문서를 수신하는 경우 발생할 수 있습니다. 이 문제가 발생하면 배포는 무기한으로 다시 시도되며 그 상태는 진행 중(IN_PROGRESS
)입니다. 이 문제를 해결하는 방법에 대한 자세한 내용은 이 문제 해결 항목을 참조하세요.
Caused by: software.amazon.awssdk.services.greengrassv2data.model.GreengrassV2DataException: null (Service: GreengrassV2Data, Status Code: 403, Request ID: <some_request_id>, Extended Request ID: null)
데이터 영역 API에 iot:Connect
권한이 없는 경우 이 오류가 발생할 수 있습니다. 올바른 정책이 없는 경우 GreengrassV2DataException: 403
을 수신하게 됩니다. 권한 정책을 생성하려면 AWS IoT 정책 생성 지침을 따르세요.
코어 디바이스 구성 요소 문제
코어 디바이스에서 Greengrass 구성 요소 문제를 해결하세요.
주제
- Warn: '<command>' is not recognized as an internal or external command
- Python 스크립트는 메시지를 기록하지 않습니다.
- 기본 구성을 변경할 때 구성 요소 구성이 업데이트되지 않음
- awsiot.greengrasscoreipc.model.UnauthorizedError
- com.aws.greengrass.authorization.exceptions.AuthorizationException: Duplicate policy ID "<id>" for principal "<componentList>"
- com.aws.greengrass.tes.CredentialRequestHandler: Error in retrieving AwsCredentials from TES (HTTP 400)
- com.aws.greengrass.tes.CredentialRequestHandler: Error in retrieving AwsCredentials from TES (HTTP 403)
- com.aws.greengrass.tes.CredentialsProviderError: Could not load credentials from any providers
- Received error when attempting to retrieve ECS metadata: Could not connect to the endpoint URL: "<tokenExchangeServiceEndpoint>"
- copyFrom: <configurationPath> is already a container, not a leaf
- com.aws.greengrass.componentmanager.plugins.docker.exceptions.DockerLoginException: Error logging into the registry using credentials - 'The stub received bad data.'
- java.io.IOException: Cannot run program "cmd" ...: [LogonUser] The password for this account has expired.
- aws.greengrass.StreamManager: Instant exceeds minimum or maximum instant
Warn: '<command>' is not recognized as an internal or external command
AWS IoT Greengrass 코어 소프트웨어가 구성 요소의 수명 주기 스크립트에서 명령을 실행하지 못하면 Greengrass 구성 요소의 로그에이 오류가 표시될 수 있습니다. 이 오류로 인해 구성 요소의 상태가 BROKEN
이 됩니다. ggc_user
와 같은 구성 요소를 실행하는 시스템 사용자가 경로
Windows 디바이스의 경우 실행 파일이 포함된 폴더가 구성 요소를 실행하는 시스템 사용자의 PATH
에 있는지 확인하세요. PATH
에서 누락된 경우 다음 중 하나를 수행합니다.
-
실행 파일의 폴더를 모든 사용자가 사용할 수 있는
PATH
시스템 변수에 추가합니다. 그런 다음 구성 요소를 다시 시작합니다.Greengrass nucleus 2.5.0을 실행하는 경우
PATH
시스템 변수를 업데이트한 후 AWS IoT Greengrass 코어 소프트웨어를 다시 시작하여 업데이트된 로 구성 요소를 실행해야 합니다PATH
. 코어 AWS IoT Greengrass 소프트웨어가 소프트웨어를 다시 시작한PATH
후 업데이트된를 사용하지 않는 경우 디바이스를 다시 시작하고 다시 시도하세요. 자세한 내용은 AWS IoT Greengrass 코어 소프트웨어 실행 단원을 참조하십시오. -
구성 요소를 실행하는 시스템 사용자의
PATH
사용자 변수에 실행 파일의 폴더를 추가합니다.
Python 스크립트는 메시지를 기록하지 않습니다.
Greengrass 코어 디바이스는 구성 요소의 문제를 식별하는 데 사용할 수 있는 로그를 수집합니다. Python 스크립트의 stdout
및 stderr
메시지가 구성 요소 로그에 표시되지 않는 경우 Python에서 버퍼를 플러시하거나 이러한 표준 출력 스트림에 대한 버퍼링을 비활성화해야 할 수 있습니다. 다음을 수행합니다.
-
-u
인수로 Python을 실행하여 stdout
및stderr
에서 버퍼링을 비활성화합니다.python3 -u hello_world.py
-
구성 요소의 레시피에서 Setenv를 사용하여 PYTHONUNBUFFERED
환경 변수를 비어 있지 않은 문자열로 설정합니다. 이 환경 변수는 stdout
및stderr
에서 버퍼링을 비활성화합니다. -
stdout
또는stderr
스트림의 버퍼를 플러시합니다. 다음 중 하나를 수행합니다.-
인쇄할 때 메시지를 플러시합니다.
import sys print('Hello, error!', file=sys.stderr, flush=True)
-
인쇄 후에 메시지를 플러시합니다. 스트림을 플러시하기 전에 여러 메시지를 전송할 수 있습니다.
import sys print('Hello, error!', file=sys.stderr) sys.stderr.flush()
-
Python 스크립트가 로그 메시지를 출력하는지 확인하는 방법에 대한 자세한 내용은 AWS IoT Greengrass 로그 모니터링 섹션을 참조하세요.
기본 구성을 변경할 때 구성 요소 구성이 업데이트되지 않음
구성 요소의 레시피에서 DefaultConfiguration
을 변경하면 배포 중에 새 기본 구성이 구성 요소의 기존 구성을 대체하지 않습니다. 새 기본 구성을 적용하려면 구성 요소의 구성을 기본 설정으로 재설정해야 합니다. 구성 요소를 배포할 때 단일 빈 문자열을 재설정 업데이트로 지정합니다.
- 재설정 경로
-
[""]
awsiot.greengrasscoreipc.model.UnauthorizedError
구성 요소에 리소스에서 IPC 작업을 수행할 권한이 없는 경우 Greengrass 구성 요소의 로그에 이 오류가 발생할 수 있습니다. 구성 요소에 IPC 작업을 직접 호출할 수 있는 권한을 부여하려면 구성 요소의 구성에서 IPC 권한 부여 정책을 정의합니다. 자세한 내용은 IPC 작업을 수행하도록 구성 요소 승인 단원을 참조하십시오.
작은 정보
구성 요소의 레시피에서 DefaultConfiguration
을 변경하는 경우 구성 요소의 구성을 새로운 기본 구성으로 재설정해야 합니다. 구성 요소를 배포할 때 단일 빈 문자열을 재설정 업데이트로 지정합니다. 자세한 내용은 기본 구성을 변경할 때 구성 요소 구성이 업데이트되지 않음 단원을 참조하십시오.
com.aws.greengrass.authorization.exceptions.AuthorizationException: Duplicate policy ID "<id>" for principal "<componentList>"
코어 디바이스의 모든 구성 요소를 포함하여 여러 IPC 권한 부여 정책에서 동일한 정책 ID를 사용하는 경우 이 오류가 발생할 수 있습니다.
구성 요소의 IPC 권한 부여 정책을 확인하고 중복 항목을 수정한 다음 다시 시도하세요. 고유한 정책 ID를 생성하려면 구성 요소 이름, IPC 서비스 이름, 카운터를 결합하는 것이 좋습니다. 자세한 내용은 IPC 작업을 수행하도록 구성 요소 승인 단원을 참조하십시오.
작은 정보
구성 요소의 레시피에서 DefaultConfiguration
을 변경하는 경우 구성 요소의 구성을 새로운 기본 구성으로 재설정해야 합니다. 구성 요소를 배포할 때 단일 빈 문자열을 재설정 업데이트로 지정합니다. 자세한 내용은 기본 구성을 변경할 때 구성 요소 구성이 업데이트되지 않음 단원을 참조하십시오.
com.aws.greengrass.tes.CredentialRequestHandler: Error in retrieving AwsCredentials from TES (HTTP 400)
코어 디바이스가 토큰 교환 서비스에서 AWS 자격 증명을 가져올 수 없는 경우이 오류가 표시될 수 있습니다. HTTP 400 상태 코드는 코어 디바이스의 토큰 교환 IAM 역할이 존재하지 않거나 자격 AWS IoT 증명 공급자가 이를 수임할 수 있는 신뢰 관계가 없기 때문에이 오류가 발생했음을 나타냅니다.
다음을 수행합니다.
-
코어 디바이스가 사용하는 토큰 교환 역할을 식별합니다. 오류 메시지에는 토큰 교환 AWS IoT 역할을 가리키는 코어 디바이스의 역할 별칭이 포함됩니다. 개발 컴퓨터에서 다음 명령을 실행하고
MyGreengrassCoreTokenExchangeRoleAlias
를 오류 메시지의 AWS IoT 역할 별칭의 이름으로 바꿉니다.aws iot describe-role-alias --role-alias
MyGreengrassCoreTokenExchangeRoleAlias
응답에는 토큰 교환 IAM 역할의 Amazon 리소스 이름(ARN)이 포함되어 있습니다.
{ "roleAliasDescription": { "roleAlias": "MyGreengrassCoreTokenExchangeRoleAlias", "roleAliasArn": "arn:aws:iot:us-west-2:123456789012:rolealias/MyGreengrassCoreTokenExchangeRoleAlias", "roleArn": "arn:aws:iam::123456789012:role/MyGreengrassV2TokenExchangeRole", "owner": "123456789012", "credentialDurationSeconds": 3600, "creationDate": "2021-02-05T16:46:18.042000-08:00", "lastModifiedDate": "2021-02-05T16:46:18.042000-08:00" } }
-
역할이 있는지 확인하세요. 다음 명령을 실행하고
MyGreengrassV2TokenExchangeRole
을 토큰 교환 역할의 이름으로 바꿉니다.aws iam get-role --role-name
MyGreengrassV2TokenExchangeRole
명령이
NoSuchEntity
오류를 반환하면 역할이 존재하지 않으므로 이를 생성해야 합니다. 역할을 생성하고 구성하는 방법에 대한 자세한 내용은 코어 디바이스에 AWS 서비스와 상호 작용 권한 부여 섹션을 참조하세요. -
역할에 자격 AWS IoT 증명 공급자가 수임할 수 있는 신뢰 관계가 있는지 확인합니다. 이전 단계의 응답에는 역할의 신뢰 관계를 정의하는
AssumeRolePolicyDocument
가 포함되어 있습니다. 역할은credentials.iot.amazonaws.com
이 수임할 수 있도록 허용하는 신뢰 관계를 정의해야 합니다. 이 문서는 다음 예제와 유사할 것입니다.{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Service": "credentials.iot.amazonaws.com" }, "Action": "sts:AssumeRole" } ] }
역할의 신뢰 관계에서
credentials.iot.amazonaws.com
이 이를 수임하도록 허용하지 않는 경우 이 신뢰 관계를 역할에 추가해야 합니다. 자세한 내용은AWS Identity and Access Management 사용 설명서의 역할 수정을 참조하세요.
com.aws.greengrass.tes.CredentialRequestHandler: Error in retrieving AwsCredentials from TES (HTTP 403)
코어 디바이스가 토큰 교환 서비스에서 AWS 자격 증명을 가져올 수 없는 경우이 오류가 발생할 수 있습니다. HTTP 403 상태 코드는 코어 디바이스의 AWS IoT 정책이 코어 디바이스의 AWS IoT 역할 별칭에 대한 iot:AssumeRoleWithCertificate
권한을 부여하지 않기 때문에이 오류가 발생했음을 나타냅니다.
코어 디바이스의 AWS IoT 정책을 검토하고 코어 디바이스의 AWS IoT 역할 별칭에 대한 iot:AssumeRoleWithCertificate
권한을 추가합니다. 오류 메시지에는 코어 디바이스의 현재 AWS IoT 역할 별칭이 포함됩니다. 이 권한과 코어 디바이스의 AWS IoT 정책을 업데이트하는 방법에 대한 자세한 내용은 AWS IoT Greengrass V2 코어 디바이스에 대한 최소 AWS IoT 정책 및 섹션을 참조하세요코어 디바이스의 AWS IoT 정책 업데이트.
com.aws.greengrass.tes.CredentialsProviderError: Could not load credentials from any providers
구성 요소가 AWS 자격 증명을 요청하려고 하고 토큰 교환 서비스에 연결할 수 없는 경우이 오류가 표시될 수 있습니다.
다음을 수행합니다.
-
구성 요소가 토큰 교환 서비스 구성 요소인
aws.greengrass.TokenExchangeService
에 대한 종속성을 선언하는지 확인하세요. 그렇지 않은 경우 종속성을 추가하고 구성 요소를 다시 배포합니다. -
구성 요소가 Docker에서 실행되는 경우 Docker 컨테이너 구성 요소에서 AWS 자격 증명 사용(Linux)에 따라 올바른 네트워크 설정과 환경 변수를 적용해야 합니다.
-
구성 요소가 NodeJS에서 작성된 경우 dns.setDefaultResultOrder
를 ipv4first
로 설정합니다. -
::1
로 시작하고localhost
를 포함하는 항목이 있는지/etc/hosts
를 검사합니다. 해당 항목을 제거하여 구성 요소가 잘못된 주소의 토큰 교환 서비스에 연결되어 있는지 확인합니다.
Received error when attempting to retrieve ECS metadata: Could not connect to the endpoint URL: "<tokenExchangeServiceEndpoint>"
구성 요소가 토큰 교환 서비스를 실행하지 않고 구성 요소가 AWS 자격 증명을 요청하려고 하면이 오류가 표시될 수 있습니다.
다음을 수행합니다.
-
구성 요소가 토큰 교환 서비스 구성 요소인
aws.greengrass.TokenExchangeService
에 대한 종속성을 선언하는지 확인하세요. 그렇지 않은 경우 종속성을 추가하고 구성 요소를 다시 배포합니다. -
구성 요소가
install
수명 주기에서 AWS 자격 증명을 사용하는지 확인합니다. AWS IoT Greengrass 는install
수명 주기 동안 토큰 교환 서비스의 가용성을 보장하지 않습니다. AWS 자격 증명을 사용하는 코드를startup
또는run
수명 주기로 이동하도록 구성 요소를 업데이트한 다음 해당 구성 요소를 재배포합니다.
copyFrom: <configurationPath> is already a container, not a leaf
구성 값을 컨테이너 유형(목록 또는 객체)에서 비컨테이너 유형(문자열, 숫자 또는 부울)으로 변경하는 경우 이 오류가 발생할 수 있습니다. 다음을 수행합니다.
-
구성 요소의 레시피를 확인하여 기본 구성이 해당 구성 값을 목록 또는 객체로 설정하는지 확인하세요. 해당하는 경우 구성 값을 제거하거나 변경합니다.
-
배포를 생성하여 해당 구성 값을 기본값으로 재설정합니다. 자세한 내용은 배포 만들기 및 구성 요소 구성 업데이트 단원을 참조하세요.
그런 다음 해당 구성 값을 문자열, 숫자 또는 부울로 설정할 수 있습니다.
com.aws.greengrass.componentmanager.plugins.docker.exceptions.DockerLoginException: Error logging into the registry using credentials - 'The stub received bad data.'
Docker 애플리케이션 관리자 구성 요소가 Amazon Elastic Container Registry(Amazon ECR)의 프라이빗 리포지토리에서 Docker 이미지를 다운로드하려고 하는 경우 Greengrass nucleus 로그에서 이 오류가 발생할 수 있습니다. 이 오류는 wincred
Docker 자격 증명 도우미docker-credential-wincred
)를 사용하는 경우 발생합니다. 따라서 Amazon ECR은 로그인 자격 증명을 저장할 수 없습니다.
다음 작업 중 하나를 수행합니다.
-
wincred
Docker 자격 증명 도우미를 사용하지 않는 경우 코어 디바이스에서docker-credential-wincred
프로그램을 제거합니다. -
wincred
Docker 자격 증명 도우미를 사용하는 경우 다음을 수행합니다.-
코어 디바이스에서
docker-credential-wincred
프로그램의 이름을 바꿉니다.wincred
를 Windows Docker 자격 증명 도우미의 새로운 이름으로 바꿉니다. 예를 들어 이름을docker-credential-wincredreal
로 바꿀 수 있습니다. -
Windows Docker 자격 증명 도우미의 새로운 이름을 사용하도록 Docker 구성 파일(
.docker/config.json
)의credsStore
옵션을 업데이트합니다. 예를 들어 프로그램 이름을docker-credential-wincredreal
로 바꾼 경우credsStore
옵션을wincredreal
로 업데이트합니다.{ "credsStore": "
wincredreal
" }
-
java.io.IOException: Cannot run program "cmd" ...: [LogonUser] The password for this account has expired.
ggc_user
와 같은 구성 요소의 프로세스를 실행하는 시스템 사용자의 암호가 만료된 경우 Windows 코어 디바이스에서 이 오류가 발생할 수 있습니다. 따라서 AWS IoT Greengrass 코어 소프트웨어는 해당 시스템 사용자로 구성 요소 프로세스를 실행할 수 없습니다.
Greengrass 시스템 사용자의 암호를 업데이트하려면
-
관리자로 다음 명령을 실행하여 사용자의 암호를 설정합니다.
ggc_user
를 시스템 사용자로 바꾸고암호
를 설정할 암호로 바꿉니다.net user
ggc_user
password
-
PsExec 유틸리티
를 사용하여 사용자의 새로운 암호를 LocalSystem 계정의 자격 증명 관리자 인스턴스에 저장합니다. 암호
를 설정한 사용자의 암호로 바꿉니다.psexec -s cmd /c cmdkey /generic:ggc_user /user:ggc_user /pass:password
작은 정보
Windows 구성에 따라 사용자의 암호가 미래의 날짜에 만료되도록 설정할 수 있습니다. Greengrass 애플리케이션이 계속 작동하도록 하려면 암호가 만료되는 시기를 추적하고 만료되기 전에 이를 업데이트합니다. 사용자의 암호가 만료되지 않도록 설정할 수도 있습니다.
-
사용자와 암호가 만료되는 시기를 확인하려면 다음 명령을 실행합니다.
net user
ggc_user
| findstr /C:expires -
사용자의 암호가 만료되지 않도록 설정하려면 다음 명령을 실행합니다.
wmic UserAccount where "Name='
ggc_user
'" set PasswordExpires=False -
wmic
명령이 더 이상 사용되지 않는Windows 10 이상을 사용하는 경우 다음 PowerShell 명령을 실행합니다. Get-CimInstance -Query "SELECT * from Win32_UserAccount WHERE name = '
ggc_user
'" | Set-CimInstance -Property @{PasswordExpires="False"}
aws.greengrass.StreamManager: Instant exceeds minimum or maximum instant
스트림 관리자 v2.0.7을 v2.0.8과 v2.0.11 사이의 버전으로 업그레이드할 때 구성 요소가 시작되지 않는 경우 스트림 관리자 구성 요소의 로그에 다음 오류가 발생할 수 있습니다.
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}
스트림 관리자 v2.0.7을 배포하고 이후 버전으로 업그레이드하려는 경우 스트림 관리자 v2.0.12로 직접 업그레이드해야 합니다. 스트림 관리자 구성 요소에 대한 자세한 내용은 스트림 관리자 섹션을 참조하세요.
코어 디바이스 Lambda 함수 구성 요소 문제
코어 디바이스의 Lambda 함수 구성 요소 문제를 해결하세요.
주제
The following cgroup subsystems are not mounted: devices, memory
다음 사례에서 컨테이너화된 Lambda 함수를 실행하는 경우 이 오류가 발생할 수 있습니다.
-
코어 디바이스에 메모리 또는 디바이스 cgroup에 대한 cgroup v1이 활성화되어 있지 않습니다.
-
코어 디바이스에 cgroup v2가 활성화되어 있습니다. Greengrass Lambda 함수에는 cgroup v1이 필요하며 cgroup v1과 v2는 상호 배타적입니다.
cgroup v1을 활성화하려면 디바이스를 다음 Linux 커널 파라미터로 부팅합니다.
cgroup_enable=memory cgroup_memory=1 systemd.unified_cgroup_hierarchy=0
작은 정보
Raspberry Pi에서 /boot/cmdline.txt
파일을 편집하여 디바이스의 커널 파라미터를 설정합니다.
ipc_client.py:64,HTTP Error 400:Bad Request, b'No subscription exists for the source <label-or-lambda-arn> and subject <label-or-lambda-arn>
레거시 구독 라우터 구성 요소에 구독을 지정하지 않고 V2 코어 디바이스에서 AWS IoT Greengrass 코어 SDK를 사용하는 V1 Lambda 함수를 실행할 때이 오류가 발생할 수 있습니다. V2 이 문제를 해결하려면 레거시 구독 라우터를 배포하고 구성하여 필요한 구독을 지정하세요. 자세한 내용은 V1 Lambda 함수 가져오기 단원을 참조하십시오.
구성 요소 버전 중단
코어 디바이스의 구성 요소 버전이 중단되면 Personal Health Dashboard(PHD)에 알림이 표시될 수 있습니다. 구성 요소 버전은 중단 후 60분 이내에 이 알림을 PHD로 전송합니다.
수정해야 하는 배포를 확인하려면 AWS Command Line Interface를 사용하여 다음을 수행합니다.
-
다음 명령을 실행하여 코어 디바이스 목록을 가져옵니다.
aws greengrassv2 list-core-devices
-
다음 명령을 실행하여 1단계에서 각 코어 디바이스의 구성 요소 상태를 검색합니다.
을 쿼리할 각 코어 디바이스의 이름으로 바꿉니다.coreDeviceName
aws greengrassv2 list-installed-components --core-device-thing-name
coreDeviceName
-
이전 단계에서 중단된 구성 요소 버전이 설치된 코어 디바이스를 수집합니다.
-
다음 명령을 실행하여 3단계에서 각 코어 디바이스에 대한 모든 배포 작업의 상태를 검색합니다.
을 쿼리할 코어 디바이스의 이름으로 바꿉니다.coreDeviceName
aws greengrassv2 list-effective-deployments --core-device-thing-name
coreDeviceName
응답에 코어 디바이스에 대한 배포 작업의 목록이 포함되어 있습니다. 배포를 수정하여 다른 구성 요소 버전을 선택할 수 있습니다. 배포를 수정하는 방법에 대한 자세한 내용은 Revise deployments를 참조하세요.
Greengrass 명령줄 인터페이스 문제
Greengrass CLI 관련 문제를 해결하세요.
java.lang.RuntimeException: Unable to create ipc client
Greengrass CLI 명령을 실행하고 AWS IoT Greengrass 코어 소프트웨어가 설치된 곳과 다른 루트 폴더를 지정하면이 오류가 표시될 수 있습니다.
다음 중 하나를 수행하여 루트 경로를 설정하고를 AWS IoT Greengrass 코어 소프트웨어 설치 경로
로 바꿉니다./greengrass/v2
-
GGC_ROOT_PATH
환경 변수를
로 설정합니다./greengrass/v2
-
다음 예제에 표시된 대로 명령에
--ggcRootPath
인수를 추가합니다./greengrass/v2
greengrass-cli --ggcRootPath
<command> <subcommand> [arguments]/greengrass/v2
AWS Command Line Interface 문제
에 대한 AWS CLI 문제를 해결합니다 AWS IoT Greengrass V2.
Error: Invalid choice: 'greengrassv2'
AWS CLI (예: )를 사용하여 AWS IoT Greengrass V2 명령을 실행하면이 오류가 발생할 수 있습니다aws greengrassv2 list-core-devices
.
이 오류는가 지원하지 AWS CLI 않는 버전이 있음을 나타냅니다 AWS IoT Greengrass V2. 와 AWS IoT Greengrass V2 함께를 사용하려면 다음 버전 중 하나가 있어야 AWS CLI합니다.
-
Minimum AWS CLI V1 버전: v1.18.197
-
Minimum AWS CLI V2 버전: v2.1.11
작은 정보
다음 명령을 실행하여 보유한의 버전을 확인할 수 AWS CLI 있습니다.
aws --version
이 문제를 해결하려면 AWS CLI 를에서 지원하는 이후 버전으로 업데이트합니다 AWS IoT Greengrass V2. 자세한 내용은 AWS Command Line Interface 사용 설명서의 AWS CLI의 설치, 업데이트, 제거를 참조하세요.