本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
Troubleshooting
使用本部分中的故障排除信息和解决方案可帮助解决Amazon IoT Greengrass Version 2.
主题
查看Amazon IoT GreengrassCore 软件日志
这些区域有:Amazon IoT Greengrass核心软件日志文件提供有关核心设备的实时信息。这可以帮助您识别与组件和部署有关的问题。
此日志文件还包含插件组件的日志,例如日志管理器和Secret Manager. 有关更多信息,请参阅组件类型。
查看核心设备日志文件
-
运行以下命令以实时查看日志文件。Replace
/绿草/v2
的路径与Amazon IoT Greengrass根文件夹。sudo tail -f
/greengrass/v2
/logs/greengrass.log
查看组件日志
组件日志文件提供有关在 Greengrass 核心设备上运行的组件的实时信息。这可以帮助您识别与组件有关的问题。
这些区域有:Amazon IoT Greengrass核心软件不会为插件组件创建组件日志文件,例如日志管理器和Secret Manager. 有关更多信息,请参阅组件类型。有关如何查看插件组件日志的更多信息息息息息息,请参阅查看Amazon IoT GreengrassCore 软件日志.
查看组件的日志文件
-
运行以下命令以实时查看日志文件。Replace
/绿草/v2
的路径与Amazon IoT Greengrass根文件夹,然后将来个例子,你好
替换为组件名称。sudo tail -f
/greengrass/v2
/logs/com.example.HelloWorld
.log
Amazon IoT GreengrassCore 软件问题
故障排除Amazon IoT GreengrassCore 软件问题。
主题
无法设置核心设备
如果Amazon IoT Greengrass核心软件安装程序失败,您无法设置核心设备,您可能需要卸载该软件并重试。有关更多信息,请参阅卸载Amazon IoT GreengrassCore 软件。
无法连接到Amazon IoT Core
当您的Amazon IoT Greengrass核心软件无法连接到Amazon IoT Core来检索部署作业,例如。执行以下操作:
-
检查您的核心设备是否可以连接到 Internet,并且Amazon IoT Core. 有关的更多信息Amazon IoT Core设备连接到的端点,请参阅配置Amazon IoT GreengrassCore 软件.
-
检查您的核心设备是否Amazon IoT事情使用一个允许
iot:Connect
、iot:Publish
、iot:Receive
, 和iot:Subscribe
权限。 -
如果核心设备使用网络代理,检查您的核心设备是否有设备角色,并且它的角色允许
iot:Connect
、iot:Publish
、iot:Receive
, 和iot:Subscribe
权限。
内存不足错误
如果您的设备没有足够的内存来分配 Java 堆中的对象,通常会发生此错误。在内存有限的设备上,您可能需要指定最大堆大小以控制内存分配。有关更多信息,请参阅使用 JVM 选项控制内存分配。
无法安装 Greengrass CLI
您可能会看到以下控制台消息时,使用--deploy-dev-tools
参数的安装命令中Amazon IoT Greengrass核心。
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
当用户运行Amazon IoT GreengrassCore 软件(通常为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
Failed to map segment from shared object: operation not permitted
此错误通常出现在Amazon IoT Greengrass核心软件无法启动,因为/tmp
目录挂载noexec
权限。
运行以下命令重新挂载/tmp
带有的exec
权限,然后重试。
sudo mount -o remount,exec /tmp
Amazon IoT Greengrass云问题
使用以下信息排查Amazon 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
当您创建组件版本时,您可能会看到此错误。Amazon IoT Greengrass控制台或创建组件版本operation.
此错误表示您的配方无效 JSON 或 YAML。检查配方的语法,修复任何语法问题,然后重试。您可以使用在线 JSON 或 YAML 语法检查器来识别配方中的语法问题。
核心设备部署问题
排除 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.secretsmanager.model.SecretsManagerException: User: <user> is not authorized to perform: secretsmanager:GetSecretValue on resource: <arn>
- 信息:委员会绿色草坪部署异常。可重新部署文档下载:Greengrass 云服务在获取完整部署配置时返回错误
- 信息:通过绿色草坪部署部署文档下载程序:调用 Greengrass 云以获得完整的部署配置
Error: com.aws.greengrass.componentmanager.exceptions.PackageDownloadException: Failed to download artifact
当您的Amazon IoT Greengrass核心设备应用部署时,核心软件无法下载组件工件。由于此错误,部署失败。
当您收到此错误时,日志还包括可用于识别特定问题的堆栈跟踪。以下每个条目对应于一条消息,您可能会在Failed to download artifact
错误消息。
software.amazon.awssdk.services.s3.model.S3Exception: null (Service: S3, Status Code: 403, Request ID: null, ...)
这些区域有:打包下载错误在以下情况下,可能会包含此堆栈跟踪:
-
组件工件在您在组件配方中指定的 Amazon S3 URL 中不可用。检查您是否将工件上传到 S3 存储桶,以及对象 URL 是否与存储桶中对象的 Amazon S3 URL 匹配。
-
这些区域有:核心设备角色不允许Amazon IoT Greengrass核心软件,用于从您在组件配方中指定的 Amazon S3 URL 下载组件工件。检查设备角色是否允许
s3:GetObject
的 Amazon S3 URL。
Error: com.aws.greengrass.componentmanager.exceptions.ArtifactChecksumMismatchException: Integrity check for downloaded artifact failed. Probably due to file corruption.
当您的Amazon IoT Greengrass核心设备应用部署时,核心软件无法下载组件工件。部署失败,因为下载的工件文件的校验和与Amazon IoT Greengrass创建组件时计算出来。
执行以下操作:
-
检查您托管该工件文件的 S3 存储桶中是否已更改。如果文件在创建组件后发生了更改,请将其恢复到核心设备所需的以前版本。如果无法将文件还原到以前的版本,或者要使用该文件的新版本,请使用工件文件创建组件的新版本。
-
检查核心设备的 Internet 连接。如果工件文件在下载时损坏,则可能会发生此错误。创建新部署,然后重试。
Error: com.aws.greengrass.componentmanager.exceptions.NoAvailableComponentVersionException: Failed to negotiate component <name> version with cloud and no local applicable version satisfying requirement <requirements>
当核心设备找不到满足该核心设备部署要求的组件版本时,您可能会看到此错误。核心设备检查Amazon IoT Greengrass服务和本地设备上。错误消息包括每个部署的目标以及该部署对组件的版本要求。部署目标可以是事物、事物组或LOCAL_DEPLOYMENT
,表示核心设备上的本地部署。
以下情况下可能会出现此问题:
-
核心设备是多个部署的目标,这些部署具有相互冲突的组件版本要求。例如,核心设备可能是多个部署的目标,这些部署包括
com.example.HelloWorld
组件,其中一个部署需要版本 1.0.0,另一个部署需要版本 1.0.1。不可能有一个满足这两个要求的组件,因此部署失败。 -
组件版本不存在于Amazon IoT Greengrass服务或本地设备上。例如,该组件可能已被删除。
-
存在满足版本要求的组件版本,但没有一个版本与核心设备的平台兼容。
若要解决此问题,请修改部署以包括兼容的组件版本或删除不兼容的组件版本。有关如何修改云部署的更多信息息息息息息,请参阅修改部署. 有关如何修订本地部署的更多信息息息息息息,请参阅Amazon IoT GreengrassCLI 部署创建命令。
software.amazon.awssdk.services.secretsmanager.model.SecretsManagerException: User: <user> is not authorized to perform: secretsmanager:GetSecretValue on resource: <arn>
当您使用密钥管理器组件以部署Amazon Secrets Manager密钥。如果核心设备的令牌交换 IAM 角色不授予获取密钥的权限,部署失败,并且 Greengrass 日志包含此错误。
授权核心设备下载密码
-
添加
secretsmanager:GetSecretValue
权限访问核心设备的令牌交换角色。以下示例策略声明将授予权限以获取密钥的值。{ "Effect": "Allow", "Action": [ "secretsmanager:GetSecretValue" ], "Resource": [ "arn:aws:secretsmanager:us-west-2:123456789012:secret:MyGreengrassSecret-abcdef" ] }
有关更多信息,请参阅授权核心设备与Amazon服务。
-
将部署重新应用到核心设备。请执行下列操作之一:
-
修改部署而不作任何更改。核心设备在收到修订后的部署时尝试再次下载密钥。有关更多信息,请参阅修改部署。
-
重启Amazon IoT Greengrass重新尝试部署的核心软件。有关更多信息,请参阅 。运行Amazon IoT GreengrassCore 软件
如果密钥管理器成功下载密钥,部署将成功。
-
信息:委员会绿色草坪部署异常。可重新部署文档下载:Greengrass 云服务在获取完整部署配置时返回错误
当核心设备收到大型部署文档时,您可能会看到此错误,该文档是大于 7 KB(对于目标内容的部署)或 31 KB(针对目标事物组的部署)的部署文档。要检索大型部署文档,核心设备的Amazon IoT策略必须允许greengrass:GetDeploymentConfiguration
权限。当核心设备没有此权限时,可能会发生此错误。发生此错误时,部署将无限期重试,并且其状态为正在进行中(IN_PROGRESS
)。
要解决此问题,请添加greengrass:GetDeploymentConfiguration
核心设备的Amazon IoT政策。有关更多信息,请参阅更新核心设备的Amazon IoT策略。
信息:通过绿色草坪部署部署文档下载程序:调用 Greengrass 云以获得完整的部署配置
您可能会看到此信息消息打印多次而没有错误,因为核心设备将错误记录在DEBUG
日志级别。核心设备收到大型部署文档时,可能会发生此问题。发生此问题时,部署重试无限期,并且其状态为正在进行中(IN_PROGRESS
)。有关如何解决此问题的更多信息,请参阅此问题排查条目.
核心设备组件问题
疑难解答核心设备上的 Greengrass 组件问题。
Python 脚本不会记录消息
Greengrass 核心设备收集日志,您可以使用这些日志来识别与组件有关的问题。如果您的 Python 脚本stdout
和stderr
消息不会出现在组件日志中,则可能需要刷新缓冲区或禁用 Python 中这些标准输出流的缓冲。执行以下任一操作:
-
使用-u
参数来禁用缓冲 stdout
和stderr
.python3 -u hello_world.py
-
刷新缓冲区
stdout
或者stderr
流。请执行下列操作之一:-
打印时刷新消息。
import sys print('Hello, error!', file=sys.stderr, flush=True)
-
打印后刷新消息。您可以在刷新流之前发送多条消息。
import sys print('Hello, error!', file=sys.stderr) sys.stderr.flush()
-
有关如何验证 Python 脚本是否输出日志消息的更多信息,请参阅查看组件日志.
Amazon Command Line Interface问题
故障排除Amazon CLI适用于的问题Amazon IoT Greengrass V2.
Error: 无效的选择:“绿色草原 v2”
当您运行时,您可能会看到此错误Amazon IoT Greengrass V2命令Amazon CLI(例如,aws greengrassv2 list-core-devices
)。
此错误表示您有Amazon CLI不支持的Amazon IoT Greengrass V2. 使用Amazon IoT Greengrass V2使用Amazon CLI,您必须具有以下版本之一或更高版本:
-
最低Amazon CLIV1 版本:版本
-
最低Amazon CLIV2 版本:版本 2.1.11
您可以运行以下命令以检查Amazon CLI你拥有的。
aws --version
要解决此问题,请更新Amazon CLI添加到支持Amazon IoT Greengrass V2. 有关更多信息,请参阅 。安装、更新和卸载Amazon CLI中的Amazon Command Line Interface用户指南.