기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.
문제 해결 AWS IoT Greengrass V2
이 섹션의 문제 해결 정보와 솔루션을 사용하면 관련 문제를 해결하는 데 도움이 됩니다. AWS IoT Greengrass Version 2
주제
AWS IoT Greengrass Core 소프트웨어 및 구성 요소 로그 보기
AWS IoT Greengrass Core 소프트웨어는 코어 장치에 대한 실시간 정보를 보는 데 사용할 수 있는 로그를 로컬 파일 시스템에 기록합니다. 또한 로그를 로그에 기록하도록 코어 디바이스를 구성하여 CloudWatch 코어 디바이스의 문제를 원격으로 해결할 수 있습니다. 이러한 로그는 구성 요소, 배포 및 핵심 장치와 관련된 문제를 식별하는 데 도움이 될 수 있습니다. 자세한 정보는 모니터 AWS IoT Greengrass 로그을 참조하세요.
AWS IoT Greengrass 핵심 소프트웨어 문제
AWS IoT Greengrass 코어 소프트웨어 문제를 해결합니다.
주제
- 코어 디바이스를 설정할 수 없습니다.
- AWS IoT Greengrass Core 소프트웨어를 시스템 서비스로 시작할 수 없습니다.
- Nucleus를 시스템 서비스로 설정할 수 없습니다.
- 에 연결할 수 없습니다. AWS IoT Core
- 메모리 부족 오류
- 그린그래스 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
코어 디바이스를 설정할 수 없습니다.
AWS IoT Greengrass 코어 소프트웨어 설치 프로그램이 실패하고 코어 장치를 설정할 수 없는 경우 소프트웨어를 제거하고 다시 시도해야 할 수 있습니다. 자세한 정보는 AWS IoT GreengrassCore 소프트웨어 제거을 참조하세요.
AWS IoT Greengrass Core 소프트웨어를 시스템 서비스로 시작할 수 없습니다.
AWS IoT Greengrass Core 소프트웨어가 시작되지 않는 경우 시스템 서비스 로그를 확인하여 문제를 식별하십시오. 한 가지 일반적인 문제는 PATH 환경 변수 (Linux) 또는 PATH 시스템 변수 (Windows) 에서 Java를 사용할 수 없는 경우입니다.
Nucleus를 시스템 서비스로 설정할 수 없습니다.
AWS IoT Greengrass Core 소프트웨어 설치 프로그램이 시스템 AWS IoT Greengrass 서비스로 설정되지 않을 경우 이 오류가 표시될 수 있습니다. Linux 장치에서 이 오류는 일반적으로 코어 장치에 systemd
다음 중 하나를 수행하십시오.
-
AWS IoT Greengrass Core 소프트웨어를 시스템 서비스로 구성하고 실행합니다. 의 모든 기능을 사용하려면 소프트웨어를 시스템 서비스로 구성해야 AWS IoT Greengrass합니다. systemd를
설치하거나 다른 init 시스템을 사용할 수 있습니다. 자세한 정보는 Greengrass 핵을 시스템 서비스로 구성을 참조하세요. -
시스템 서비스 없이 AWS IoT Greengrass Core 소프트웨어를 실행합니다. 설치 프로그램이 Greengrass 루트 폴더에 설정한 로더 스크립트를 사용하여 소프트웨어를 실행할 수 있습니다. 자세한 정보는 시스템 서비스 없이 AWS IoT Greengrass Core 소프트웨어 실행을 참조하세요.
에 연결할 수 없습니다. AWS IoT Core
예를 들어 AWS IoT Greengrass Core 소프트웨어를 AWS IoT Core 연결하여 배포 작업을 검색할 수 없는 경우 이 오류가 표시될 수 있습니다. 다음을 따릅니다.
-
코어 장치가 인터넷에 연결할 수 있는지 확인하고 AWS IoT Core. 장치가 연결되는 AWS IoT Core 엔드포인트에 대한 자세한 내용은 을 참조하십시오AWS IoT Greengrass Core 소프트웨어 구성.
-
코어 디바이스의 AWS IoT 사물이
iot:Connect
,iot:Publish
iot:Receive
, 및iot:Subscribe
권한을 허용하는 인증서를 사용하는지 확인하세요. -
코어 디바이스에서 네트워크 프록시를 사용하는 경우 코어 디바이스에 디바이스 역할이 있고 코어 디바이스의 역할이
iot:Connect
,iot:Publish
iot:Receive
, 및iot:Subscribe
권한을 허용하는지 확인하세요.
메모리 부족 오류
이 오류는 일반적으로 장치의 메모리가 부족하여 Java 힙에 객체를 할당할 수 없는 경우에 발생합니다. 메모리가 제한된 기기에서는 메모리 할당을 제어하기 위해 최대 힙 크기를 지정해야 할 수 있습니다. 자세한 정보는 옵션으로 메모리 할당을 제어하세요. JVM 을 참조하세요.
그린그래스 CLI를 설치할 수 없습니다.
Core용 AWS IoT Greengrass 설치 명령에서 --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를 설치할 수 있습니다. 자세한 정보는 그린그래스 설치 CLI을 참조하세요.
User root is not allowed to execute
일반적으로 AWS IoT Greengrass root
Core 소프트웨어를 실행하는 사용자에게 사용자 및 그룹과 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 Core 소프트웨어가 시작되지 않는 경우 이 오류가 표시될 수 있습니다. CRT (AWS 공용 런타임) 라이브러리는/tmp
폴더를 사용합니다.
다음 중 하나를 수행하십시오.
-
다음 명령을 실행하여
exec
권한이 있는/tmp
폴더를 다시 마운트하고 다시 시도하십시오.sudo mount -o remount,exec /tmp
-
Greengrass nucleus v2.5.0 이상을 실행하는 경우 JVM 옵션을 설정하여 CRT 라이브러리가 사용하는 폴더를 변경할 수 있습니다. AWS 배포 시 또는 Core 소프트웨어를 설치할 때 Greengrass nucleus 구성 요소 구성에서
jvmOptions
매개변수를 지정할 수 있습니다. AWS IoT Greengrass/path/to/use를 CRT 라이브러리가 사용할
수 있는 폴더 경로로 바꾸십시오. AWS{ "jvmOptions": "-Daws.crt.lib.dir=\"
/path/to/use
\"" }
Windows 서비스를 설정하지 못했습니다.
Microsoft Windows 2016 장치에 AWS IoT Greengrass Core 소프트웨어를 설치하는 경우 이 오류가 표시될 수 있습니다. AWS IoT Greengrass Core 소프트웨어는 Windows 2016에서 지원되지 않습니다. 지원되는 운영 체제 목록은 을 참조하십시오지원하는 플랫폼.
Windows 2016을 사용해야 하는 경우 다음 작업을 수행할 수 있습니다.
-
다운로드한 AWS IoT Greengrass Core 설치 아카이브의 압축을 풉니다.
-
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 Core 소프트웨어를 설치하고 설치 프로그램이 유효하지 않은 AWS 세션 토큰을 사용하는 경우 이 오류가 표시될 수 있습니다. 다음을 따릅니다.
-
임시 보안 자격 증명을 사용하는 경우 세션 토큰이 올바른지, 전체 세션 토큰을 복사하여 붙여넣고 있는지 확인하십시오.
-
장기 보안 자격 증명을 사용하는 경우 이전에 임시 자격 증명을 사용한 시점의 세션 토큰이 장치에 없는지 확인하십시오. 다음을 따릅니다.
-
다음 명령을 실행하여 세션 토큰 환경 변수를 설정 해제합니다.
-
AWS 자격 증명 파일 에 세션 토큰 이 포함되어 있는지 확인합니다.
~/.aws/credentials
aws_session_token
그렇다면 파일에서 해당 줄을 제거하세요.aws_session_token =
AQoEXAMPLEH4aoAH0gNCAPyJxz4BlCFFxWNE1OPTgk5TthT+FvwqnKwRcOIfrRh3c/LTo6UDdyJwOOvEVPvLXCrrrUtdnniCEXAMPLE/IvU1dYUg2RVAJBanLiHb4IgRmpRV3zrkuWJOgQs8IZZaIv2BXIa2R4Olgk
-
AWS 자격 증명을 제공하지 않고도 AWS IoT Greengrass Core 소프트웨어를 설치할 수 있습니다. 자세한 내용은 수동 리소스 프로비저닝으로 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 Core 소프트웨어를 설치하고 설치 프로그램이 필요한 권한이 없는 AWS 자격 증명을 사용하는 경우 이 오류가 표시될 수 있습니다. 필요한 권한에 대한 자세한 내용은 을 참조하십시오. 설치자가 리소스를 프로비저닝하기 위한 최소 IAM 정책
자격 증명의 IAM 자격 증명에 대한 권한을 확인하고 누락된 필수 권한을 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 정책이 다음 권한을 부여해야 합니다. AWS IoT Core
-
iot:GetThingShadow
-
iot:UpdateThingShadow
-
iot:DeleteThingShadow
코어 디바이스의 AWS IoT 정책을 확인하고 누락된 필수 권한을 추가하십시오. 자세한 내용은 다음을 참조하십시오.
-
AWS IoT Core AWS IoT 개발자 안내서의 정책 조치
Operation aws.greengrass#<operation> is not supported by Greengrass
사용자 지정 Greengrass 구성 요소에서 프로세스 간 통신 (IPC) 작업을 사용하고 필수 AWS제공 구성 요소가 코어 장치에 설치되지 않은 경우 이 오류가 표시될 수 있습니다.
이 문제를 해결하려면 구성 요소 레시피에 필수 구성 요소를 종속 항목으로 추가하여 구성 요소를 배포할 때 AWS IoT Greengrass Core 소프트웨어에서 필수 구성 요소를 설치하도록 하십시오.
-
비밀 값 검색 —
aws.greengrass.SecretManager
-
로컬 섀도우와 상호작용하세요 —
aws.greengrass.ShadowManager
-
로컬 배포 및 구성 요소 관리 —
aws.greengrass.Cli
v2.6.0 이상 -
클라이언트 장치 인증 및 권한 부여 — v2.2.0 이상
aws.greengrass.clientdevices.Auth
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
이 오류는 하드웨어 보안 모듈 (HSM) 을 사용하도록 AWS IoT Greengrass Core 소프트웨어를 구성할 때 지정한 개인 키 또는 인증서를 PKCS #11 provider 구성 요소가 찾거나 로드하지 못할 때 발생합니다. 다음을 따릅니다.
-
AWS IoT Greengrass Core 소프트웨어에서 사용하도록 구성한 슬롯, 사용자 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>
이 오류는 Secret Manager 구성 요소를 사용하여 시크릿을 배포할 때 발생할 수 있습니다 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 Core 소프트웨어를 다시 시작하여 배포를 다시 시도합니다. 자세한 내용은 AWS IoT GreengrassCore 소프트웨어 실행단원을 참조하세요.
Secret Manager가 시크릿을 성공적으로 다운로드하면 배포가 성공합니다.
-
software.amazon.awssdk.services.secretsmanager.model.SecretsManagerException: Access to KMS is not allowed
이 오류는 Secret Manager 구성 요소를 사용하여 AWS Key Management Service 키로 암호화된 AWS Secrets Manager 암호를 배포할 때 발생할 수 있습니다. 코어 디바이스의 토큰 교환 IAM 역할이 암호 해독 권한을 부여하지 않으면 배포가 실패하고 Greengrass 로그에 이 오류가 포함됩니다.
문제를 해결하려면 코어 디바이스의 토큰 kms:Decrypt
교환 역할에 권한을 추가하세요. 자세한 내용은 다음을 참조하십시오.
java.lang.NoClassDefFoundError: com/aws/greengrass/security/CryptoKeySpi
하드웨어 보안이 적용된 AWS IoT Greengrass Core 소프트웨어를 설치하려고 하고 하드웨어 보안 통합을 지원하지 않는 이전 Greengrass nucleus 버전을 사용할 때 이 오류가 표시될 수 있습니다. 하드웨어 보안 통합을 사용하려면 Greengrass nucleus v2.5.3 이상을 사용해야 합니다.
com.aws.greengrass.security.provider.pkcs11.PKCS11CryptoKeyService: CKR_OPERATION_NOT_INITIALIZED
Core를 시스템 서비스로 실행할 때 TPM2 라이브러리를 사용할 때 이 오류가 표시될 수 있습니다. AWS IoT Greengrass
이 오류는 AWS IoT Greengrass 코어 시스템 서비스 파일에 PKCS #11 저장소의 위치를 제공하는 환경 변수를 추가해야 함을 나타냅니다.
자세한 내용은 구성 요소 설명서의 요구 사항 섹션을 참조하십시오. PKCS#11 제공업체
Greengrass core device stuck on nucleus v2.12.3
그린그래스 코어 디바이스가 nucleus 버전 2.12.3에서 배포를 수정하지 않는 경우 파일을 Greengrass.jar
다운로드하여 Greengrass nucleus 버전 2.12.2로 교체해야 할 수 있습니다. 다음을 따릅니다.
-
그린그래스 코어 디바이스에서 다음 명령을 실행하여 그린그래스 코어 소프트웨어를 중지합니다.
-
코어 디바이스에서 이라는 이름의 파일로 AWS IoT Greengrass 소프트웨어를 다운로드합니다.
greengrass-2.12.2.zip
-
AWS IoT Greengrass Core 소프트웨어를 디바이스의 폴더에 압축을 풉니다. 사용하려는
GreengrassInstaller
폴더로 바꾸십시오. -
다음 명령을 실행하여 핵 버전 2.12.3 그린그래스 JAR 파일을 핵 버전 2.12.2 그린그래스 JAR 파일로 재정의합니다.
-
다음 명령을 실행하여 Greengrass Core 소프트웨어를 시작합니다.
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 아티팩트가 유효하지 않음을 나타냅니다.
다음을 따릅니다.
-
구성 요소를 생성한 AWS 리전 위치와 동일한 위치에 S3 버킷이 있는지 확인하십시오. AWS IoT Greengrass 구성 요소 아티팩트에 대한 리전 간 요청은 지원하지 않습니다.
-
아티팩트 URI가 유효한 S3 객체 URL인지 확인하고 해당 S3 객체 URL에 아티팩트가 존재하는지 확인하십시오.
-
S3 객체 URL에서 해당 아티팩트에 액세스할 AWS 계정 권한이 있는지 확인하십시오.
INACTIVE deployment status
필수 종속 AWS IoT
정책 없이 ListDeploymentsAPI를 호출하면 INACTIVE
배포 상태를 얻을 수 있습니다. 정확한 배포 상태를 확인하려면 필요한 권한이 있어야 합니다. 에 정의된 작업을 살펴보고 필요한 권한을 따라가면 종속 작업을 찾을 수 ListDeployments
있습니다. AWS IoT Greengrass V2필수 종속 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 Core 소프트웨어가 구성 요소 레시피에 지정한 S3 객체 URL에서 구성 요소 아티팩트를 다운로드할 수 없습니다. 토큰 교환 역할이 아티팩트를
s3:GetObject
사용할 수 있는 S3 객체 URL을 허용하는지 확인하십시오.
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 배포 create 명령을 참조하십시오.
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
사용하여 당사에 문의하거나 문의해 주십시오 AWS Support .
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 핵에 종속된 구성 요소를 배포하고 코어 디바이스에서 사용 가능한 최신 마이너 버전보다 이전 Greengrass nucleus 버전을 실행하는 경우 이 오류가 표시될 수 있습니다. 이 오류는 AWS IoT Greengrass Core 소프트웨어가 구성 요소를 호환되는 최신 버전으로 자동 업데이트하려고 하기 때문에 발생합니다. 그러나 AWS IoT Greengrass 코어 소프트웨어는 Greengrass 핵이 새 마이너 버전으로 업데이트되는 것을 방지합니다. AWS제공되는 여러 구성 요소가 Greengrass 핵의 특정 마이너 버전에 의존하기 때문입니다. 자세한 정보는 Greengrass 핵 업데이트 동작을 참조하세요.
배포를 수정하여 사용하려는 Greengrass nucleus 버전을 지정해야 합니다. 다음 중 하나를 수행하십시오.
-
배포를 수정하여 코어 디바이스에서 현재 실행 중인 Greengrass nucleus 버전을 지정하십시오.
-
Greengrass 핵의 최신 마이너 버전을 지정하도록 배포를 수정하십시오. 이 옵션을 선택하는 경우 Greengrass AWS Nucleus의 특정 마이너 버전에 따라 제공되는 모든 구성 요소의 버전도 업데이트해야 합니다. 자세한 정보는 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 핵을 버전 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 () 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 () 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 Core 소프트웨어가 구성 요소의 수명 주기 스크립트에서 명령을 실행하지 못하면 Greengrass 구성 요소의 로그에서 이 오류가 표시될 수 있습니다. 구성 요소의 상태는 이 오류의 BROKEN
결과로 나타납니다. 이 오류는 구성 요소 (예:) 를 실행하는 시스템 사용자가 PATH의ggc_user
Windows 장치에서는 실행 파일이 들어 있는 폴더가 구성 요소를 실행하는 시스템 사용자의 폴더에 있는지 확인하십시오. PATH
에서 누락된 경우 다음 중 하나를 수행하십시오. PATH
-
모든 사용자가 사용할 수 있는
PATH
시스템 변수에 실행 파일 폴더를 추가합니다. 그런 다음 구성 요소를 다시 시작합니다.Greengrass nucleus 2.5.0을 실행하는 경우
PATH
시스템 변수를 업데이트한 후 AWS IoT Greengrass Core 소프트웨어를 다시 시작하여 업데이트된 구성요소를 실행해야 합니다.PATH
소프트웨어를 다시 시작한PATH
후 AWS IoT Greengrass Core 소프트웨어에서 업데이트된 버전을 사용하지 않는 경우 장치를 다시 시작하고 다시 시도하십시오. 자세한 정보는 AWS IoT GreengrassCore 소프트웨어 실행을 참조하세요. -
구성 요소를 실행하는 시스템
PATH
사용자의 사용자 변수에 실행 파일 폴더를 추가합니다.
Python 스크립트는 메시지를 기록하지 않습니다
Greengrass 코어 디바이스는 구성 요소 관련 문제를 식별하는 데 사용할 수 있는 로그를 수집합니다. Python stdout
스크립트와 stderr
메시지가 구성 요소 로그에 표시되지 않는 경우 Python에서 이러한 표준 출력 스트림에 대해 버퍼를 플러시하거나 버퍼링을 비활성화해야 할 수 있습니다. 다음을 수행합니다.
-
-u
인수를 사용하여 Python을 실행하여 및 에서의 stdout
버퍼링을 비활성화합니다.stderr
-
컴포넌트의 레시피에서 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" } }
-
역할이 존재하는지 확인하십시오. 다음 명령을 실행하고
MyGreengrassV2를 TokenExchangeRole
토큰 교환 역할의 이름으로 대체합니다.aws iam get-role --role-name
MyGreengrassV2TokenExchangeRole
명령에서
NoSuchEntity
오류가 반환되는 경우 역할은 존재하지 않으므로 역할을 만들어야 합니다. 이 역할을 만들고 구성하는 방법에 대한 자세한 내용은 을 참조하십시오핵심 장치가 서비스와 상호 작용할 AWS 수 있도록 권한 부여. -
역할에 AWS IoT 자격 증명 제공자가 맡을 수 있는 신뢰 관계가 있는지 확인하십시오. 이전 단계의 응답에는 역할의 신뢰 관계를 정의하는 a가 포함되어 있습니다.
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 컨테이너 구성 요소 (Linux) 에서 AWS 자격 증명 사용
-
구성 요소가 NodeJS로 작성된 경우 dns를 설정하십시오. setDefaultResult로 주문하세요
. ipv4first
-
로
::1
시작하고 다음을 포함하는 항목이 있는지 검사하십시오/etc/hosts
localhost
. 항목을 삭제하여 구성 요소가 잘못된 주소의 토큰 교환 서비스에 연결되었는지 확인하세요.
Received error when attempting to retrieve ECS metadata: Could not connect to the endpoint URL: "<tokenExchangeServiceEndpoint>"
구성 요소가 토큰 교환 서비스를 실행하지 않고 구성 요소가 AWS 자격 증명을 요청하려고 할 때 이 오류가 표시될 수 있습니다.
다음을 따릅니다.
-
구성 요소가 토큰 교환 서비스 구성 요소에 대한 종속성을 선언했는지 확인하십시오.
aws.greengrass.TokenExchangeService
그렇지 않으면 종속성을 추가하고 구성 요소를 재배포하세요. -
구성 요소가 수명 주기 동안 AWS 자격 증명을 사용하는지 확인하세요.
install
AWS IoT Greengrassinstall
수명 주기 동안 토큰 교환 서비스의 가용성을 보장하지 않습니다. 구성 요소를 업데이트하여 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 핵 로그에 이 오류가 표시될 수 있습니다. 이 오류는 wincred
Dockerdocker-credential-wincred
따라서 Amazon ECR은 로그인 자격 증명을 저장할 수 없습니다.
다음 조치 중 하나를 취하십시오.
-
wincred
Docker 자격 증명 도우미를 사용하지 않는 경우 코어 디바이스에서docker-credential-wincred
프로그램을 제거하세요. -
wincred
Docker 자격 증명 도우미를 사용하는 경우 다음을 수행하십시오.-
코어 디바이스에서
docker-credential-wincred
프로그램 이름을 변경합니다. Windows Docker 자격 증명 도우미의 새wincred
이름으로 바꾸십시오. 예를 들어 이름을 로 바꿀 수 있습니다.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.
구성 요소의 프로세스 (예:) 를 실행하는 시스템 사용자의 암호가 만료된 경우 Windows 코어 장치에서 이 오류가 표시될 수 있습니다. ggc_user
따라서 AWS IoT Greengrass Core 소프트웨어는 해당 시스템 사용자로 구성 요소 프로세스를 실행할 수 없습니다.
Greengrass 시스템 사용자 비밀번호를 업데이트하려면
-
관리자로 다음 명령을 실행하여 사용자 비밀번호를 설정합니다.
ggc_user를
시스템 사용자로 바꾸고,비밀번호를 설정할 비밀번호로
바꿉니다.net user
ggc_user
password
-
PsExec 유틸리티를
사용하여 계정의 Credential Manager 인스턴스에 사용자의 새 암호를 저장합니다. 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 -
이 명령이 더 이상 사용되지 않는 Windows 10 이상을 사용하는 경우
wmic
다음 명령을실행하세요. 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이 활성화되어 있지 않습니다.
-
코어 기기에는 cgroups v2가 활성화되어 있습니다. 그린그래스 람다 함수에는 cgroups v1이 필요하며 cgroups v1과 v2는 상호 배타적입니다.
cgroups 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>
기존 구독 라우터 구성 요소에서 구독을 지정하지 않고 Core SDK를 사용하는 AWS IoT Greengrass V1 Lambda 함수를 V2 코어 디바이스에서 실행할 때 이 오류가 표시될 수 있습니다. 이 문제를 해결하려면 필요한 구독을 지정하도록 레거시 구독 라우터를 배포 및 구성하십시오. 자세한 정보는 V1 람다 함수 가져오기을 참조하세요.
구성 요소 버전이 중단되었습니다.
코어 장치의 구성 요소 버전이 중단되면 PHD (Personal Health Dashboard) 에 알림이 표시될 수 있습니다. 구성 요소 버전은 단종된 지 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
응답에는 코어 장치의 배포 작업 목록이 포함됩니다. 배포를 수정하여 다른 구성 요소 버전을 선택할 수 있습니다. 배포를 수정하는 방법에 대한 자세한 내용은 배포 수정을 참조하십시오.
Greengrass 명령줄 인터페이스 문제
Greengrass CLI로 문제를 해결합니다.
java.lang.RuntimeException: Unable to create ipc client
Greengrass CLI 명령을 실행하고 AWS IoT Greengrass Core 소프트웨어가 설치된 위치와 다른 루트 폴더를 지정할 때 이 오류가 표시될 수 있습니다.
다음 중 하나를 수행하여 루트 경로를 설정하고 AWS IoT Greengrass Core 소프트웨어 설치
경로로 바꾸십시오./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 greengrassv2 list-core-devices
) 를 AWS IoT Greengrass V2 사용하여 명령을 실행할 때 이 오류가 표시될 수 있습니다.
이 오류는 지원되지 않는 버전이 있음을 나타냅니다 AWS IoT Greengrass V2. AWS CLI AWS IoT Greengrass V2 와 함께 사용하려면 다음 버전 중 하나 이상이 있어야 합니다. AWS CLI
-
AWS CLI V1 최소 버전: v1.18.197
-
최소 V2 버전: v2.1.11 AWS CLI
작은 정보
다음 명령을 실행하여 사용 중인 버전을 확인할 수 있습니다. AWS CLI
aws --version
이 문제를 AWS CLI 해결하려면 를 지원하는 최신 버전으로 AWS IoT Greengrass V2업데이트하십시오. 자세한 내용은 AWS Command Line Interface 사용 설명서의 AWS CLI의 설치, 업데이트, 제거를 참조하세요.