本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
故障排除 AWS IoT Greengrass V2
使用本节中的疑难解答信息和解决方案来帮助解决问题 AWS IoT Greengrass Version 2。
主题
查看 AWS IoT Greengrass 核心软件和组件日志
AWS IoT Greengrass Core 软件将日志写入本地文件系统,您可以使用该文件系统查看有关核心设备的实时信息。您还可以将核心设备配置为将日志写入日 CloudWatch 志,这样您就可以远程排除核心设备的故障。这些日志可以帮助您识别组件、部署和核心设备的问题。有关更多信息,请参阅 监控AWS IoT Greengrass日志。
AWS IoT Greengrass 核心软件问题
对 AWS IoT Greengrass 核心软件问题进行故障排除。
主题
- 无法设置核心设备
- 无法将 AWS IoT Greengrass Core 软件作为系统服务启动
- 无法将 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
无法设置核心设备
如果 AWS IoT Greengrass Core 软件安装程序失败而您无法设置核心设备,则可能需要卸载该软件并重试。有关更多信息,请参阅 卸载AWS IoT Greengrass核心软件。
无法将 AWS IoT Greengrass Core 软件作为系统服务启动
如果 AWS IoT Greengrass Core 软件无法启动,请检查系统服务日志以确定问题。一个常见的问题是 Java 在 PATH 环境变量 (Linux) 或 PATH 系统变量 (Windows) 上不可用。
无法将 nucleus 设置为系统服务
当 AWS IoT Greengrass Core 软件安装程序无法设置 AWS IoT Greengrass 为系统服务时,您可能会看到此错误。在 Linux 设备上,如果核心设备没有 systemd
请执行以下操作之一:
-
将 C AWS IoT Greengrass ore 软件配置为系统服务并运行。必须将软件配置为系统服务才能使用的所有功能 AWS IoT Greengrass。您可以安装 systemd
或使用不同的初始化系统。有关更多信息,请参阅 将 Greengrass 核心配置为系统服务。 -
在没有系统服务的情况下运行 C AWS IoT Greengrass ore 软件。您可以使用安装程序在 Greengrass 根文件夹中设置的加载程序脚本来运行该软件。有关更多信息,请参阅 在没有系统服务的情况下运行 C AWS IoT Greengrass ore 软件。
无法连接到 AWS IoT Core
例如,当 AWS IoT Greengrass Core 软件无法连接 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
当你在 C AWS IoT Greengrass ore 的安装命令中使用--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
当运行 C AWS IoT Greengrass ore 软件的用户(通常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
当 AWS IoT Greengrass Core 软件无法启动时,您可能会看到此错误,因为该/tmp
文件夹已安装noexec
权限。默认情况下,AWS 公共运行时 (CRT) 库/tmp
文件夹。
请执行以下操作之一:
-
运行以下命令以重新安装具有
exec
权限/tmp
的文件夹,然后重试。sudo mount -o remount,exec /tmp
-
如果你运行 Greengrass nucleus v2.5.0 或更高版本,则可以设置 JVM 选项来更改 CRT 库使用的文件夹。 AWS 您可以在部署中或安装核心软件时在 Greengrass 核心组件配置中指定
jvmOptions
参数。 AWS IoT Greengrass 将/path/to/use 替换为 AWS CRT 库可以使用的
文件夹的路径。{ "jvmOptions": "-Daws.crt.lib.dir=\"
/path/to/use
\"" }
无法设置 Windows 服务
如果你在微软 Windows 2016 设备上安装 AWS IoT Greengrass 酷睿软件,你可能会看到这个错误。Windows 2016 不支持 AWS IoT Greengrass 核心软件,有关支持的操作系统的列表,请参阅支持的平台。
如果你必须使用 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) 文件的情况下安装 C AWS IoT Greengrass ore 软件时,您可能会看到此错误。
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 Core 软件。
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_session_token
。~/.aws/credentials
如果是,请从文件中删除该行。aws_session_token =
AQoEXAMPLEH4aoAH0gNCAPyJxz4BlCFFxWNE1OPTgk5TthT+FvwqnKwRcOIfrRh3c/LTo6UDdyJwOOvEVPvLXCrrrUtdnniCEXAMPLE/IvU1dYUg2RVAJBanLiHb4IgRmpRV3zrkuWJOgQs8IZZaIv2BXIa2R4Olgk
-
您也可以在不提供 AWS 凭据的情况下安装 AWS IoT Greengrass Core 软件。有关更多信息,请参阅使用手动资源配置来安装 AWS IoT Greengrass Core 软件或安装具有 AWS IoT 队列配置功能的 C AWS IoT Greengrass ore 软件。
software.amazon.awssdk.services.iot.model.IotException: User: <user> is not authorized to perform: iot:GetPolicy
在安装具有自动配置功能的 AWS IoT Greengrass Core 软件时,您可能会看到此错误,而安装程序使用的 AWS 凭据不具有所需权限。有关所需权限的更多信息,请参阅安装程序配置资源的最低 IAM 政策。
检查凭证的 IAM 身份的权限,并向 IAM 身份授予缺失的所有必需权限。
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 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 或更高版本 -
对@@ 客户端设备进行身份验证和授权 —
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 提供程序组件无法找到或加载您在将 C AWS IoT Greengrass ore 软件配置为使用硬件安全模块 (HSM) 时指定的私钥或证书时,就会发生此错误。执行以下操作:
-
使用配置 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 服务交互。
-
将部署重新应用于核心设备。请执行以下操作之一:
-
在不做任何更改的情况下修改部署。当核心设备收到修改后的部署时,它会尝试再次下载密钥。有关更多信息,请参阅 修改部署。
-
重新启动 C AWS IoT Greengrass ore 软件以重试部署。有关更多信息,请参阅 运行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 Core软件并且使用不支持硬件安全集成的早期Greengrass nucleus版本时,你可能会看到这个错误。要使用硬件安全集成,必须使用 Greengrass nucleus v2.5.3 或更高版本。
com.aws.greengrass.security.provider.pkcs11.PKCS11CryptoKeyService: CKR_OPERATION_NOT_INITIALIZED
当你将 C AWS IoT Greengrass ore 作为系统服务运行时,使用 TPM2 库时,你可能会看到这个错误。
此错误表示您需要添加一个环境变量,该变量在 C AWS IoT Greengrass ore systemd 服务文件中提供 PKCS #11 存储的位置。
有关更多信息,请参阅PKCS#11 提供商组件文档的 “要求” 部分。
Greengrass core device stuck on nucleus v2.12.3
如果您的 Greengrass 核心设备无法从 nucleus 版本 2.12.3 修改您的部署,则可能需要下载该文件并将其替换为 Greengrass nucleus 版本 2.12.2。Greengrass.jar
执行以下操作:
-
在你的 Greengrass 核心设备上,运行以下命令停止 Greengrass Core 软件。
-
在您的核心设备上,将 AWS IoT Greengrass 软件下载到名为的文件中
greengrass-2.12.2.zip
。 -
将 AWS IoT Greengrass Core 软件解压缩到设备上的某个文件夹。
GreengrassInstaller
替换为要使用的文件夹。 -
运行以下命令,使用 nucleus 版本 2.12.2 Greengrass JAR 文件覆盖 nucleus 版本 2.12.3 Greengrass 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 工件无效。
执行以下操作:
-
检查 S3 存储桶是否与您创建组件的 AWS 区域 位置相同。 AWS IoT Greengrass 不支持跨区域请求组件工件。
-
检查项目 URI 是否为有效的 S3 对象 URL,并检查该 S3 对象 URL 中是否存在该项目。
-
检查您是否 AWS 账户 有权通过其 S3 对象 URL 访问该项目。
INACTIVE deployment status
在没有必需的依赖 AWS IoT
策略的情况下调用 ListDeploymentsAPI 时,您可能会获得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:GetObject
对象可用的 S3 对象 URL。
software.amazon.awssdk.services.s3.model.S3Exception: Access Denied (Service: S3, Status Code: 403, Request ID: <requestID>
当核心设备无权调用时,PackageDownloadException 错误可能包括此堆栈跟踪s3:GetBucketLocation
。错误消息还包括以下消息。
reason: Failed to determine S3 bucket location
检查核心设备的令牌交换角色是否允许s3:GetBucketLocation
项目可用的 S3 存储桶。
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
中查找以识别此问题。要解决此问题,请将greengrass:ResolveComponentCandidates
权限添加到核心设备的 AWS IoT 策略中。有关更多信息,请参阅 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 re:Post
使用AWS IoT Greengrass 标签 联系我们,或者联系我们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 核心版本早于可用的最新次要版本时,您可能会看到此错误。出现此错误的原因是 AWS IoT Greengrass Core 软件会尝试自动将组件更新到最新的兼容版本。但是, AWS IoT Greengrass Core 软件会阻止 Greengrass 核更新到新的次要版本,因为提供的 AWS几个组件依赖于 Greengrass 核的特定次要版本。有关更多信息,请参阅 Greengrass 核更新行为。
您必须修改部署以指定要使用的 Greengrass 核心版本。请执行以下操作之一:
-
修改部署以指定核心设备当前运行的 Greengrass 核心版本。
-
修改部署以指定 Greengrass 核的后续次要版本。如果选择此选项,则还必须更新所有依赖于 Greengr AWS ass 核的特定次要版本的组件的版本。有关更多信息,请参阅 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
当核心设备收到大型部署文档时,您可能会看到此错误,该文档是大于 7 KB(针对以事物为目标的部署)或 31 KB(针对事物组的部署)的部署文档。要检索大型部署文档,核心设备的 AWS IoT 策略必须允许该greengrass:GetDeploymentConfiguration
权限。当核心设备没有此权限时,可能会发生此错误。发生此错误时,部署将无限期重试,其状态为 “进行中” ()。IN_PROGRESS
要解决此问题,请将greengrass:GetDeploymentConfiguration
权限添加到核心设备的 AWS IoT 策略中。有关更多信息,请参阅 更新核心设备的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组件部署到设备。
要更新核心设备的行为以移除要从中移除核心设备的事物组的组件,请将greengrass:ListThingGroupsForCoreDevice
权限添加到核心设备的 AWS IoT 策略中。有关更多信息,请参阅 更新核心设备的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
当 Core 软件无法在组件的生命周期脚本中运行命令时 AWS IoT Greengrass ,您可能会在 Greengrass 组件的日志中看到此错误。由于此错误,组件的状态变BROKEN
为。如果运行组件(例如)的系统用户在 P ATHggc_user
在 Windows 设备上,检查包含可执行文件的文件夹是否位于运行该组件PATH
的系统用户所在的文件夹中。如果中缺少它PATH
,请执行以下任一操作:
-
将可执行文件的文件夹添加到
PATH
系统变量中,该变量可供所有用户使用。然后,重新启动该组件。如果您运行 Greengrass nucleus 2.5.0,则在更新
PATH
系统变量后,必须重新启动 Core 软件才能运行更新后的 AWS IoT Greengrass 组件。PATH
如果 AWS IoT Greengrass Core 软件在您重新启动软件PATH
后未使用更新的版本,请重新启动设备并重试。有关更多信息,请参阅 运行AWS IoT Greengrass核心软件。 -
将可执行文件的文件夹添加到运行该
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
当 Greengrass 组件无权对资源执行 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 角色的亚马逊资源名称 (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 凭证提供者担任该角色的信任关系。上一步的响应包含一个
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)
-
检查是否有
/etc/hosts
以开头::1
并包含的条目localhost
。删除该条目以查看它是否导致组件通过错误的地址连接到令牌交换服务。
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 应用程序管理器组件尝试从亚马逊 Elastic Container Registry (Amazon ECR) 的私有存储库下载 Dock er 镜像时,你可能会在 Greengrass 核心日志中看到这个错误。如果您使用 wincred
Docker 凭证助手docker-credential-wincred
,则会发生此错误。因此,Amazon ECR 无法存储登录凭证。
采取以下操作之一:
-
如果您不使用
wincred
Docker 凭证助手,请从核心设备中删除该docker-credential-wincred
程序。 -
如果您使用
wincred
Docker 凭证助手,请执行以下操作:-
在核心设备上重命名该
docker-credential-wincred
程序。wincred
替换为 Windows Docker 凭据助手的新名称。例如,您可以将其重命名为docker-credential-wincredreal
。 -
更新 Docker 配置文件 (
.docker/config.json
) 中的credsStore
选项,以使用 Windows Docker 凭据助手的新名称。例如,如果您将程序重命名为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 实用程序
将用户的新密码存储在 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。
-
核心设备启用了 cgroups v2。Greengrass Lambda 函数需要 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>
当您在 V2 核心设备上运行使用 AWS IoT Greengrass Core SDK 的 V1 Lambda 函数,而没有在旧版订阅路由器组件中指定订阅时,您可能会看到此错误。要解决此问题,请部署和配置旧版订阅路由器以指定所需的订阅。有关更多信息,请参阅 导入 V1 Lambda 函数。
组件版本已停产
当核心设备上的某个组件版本停产时,你可能会在个人健康控制面板 (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
响应包含核心设备的部署任务列表。您可以修改部署以选择其他组件版本。有关如何修改部署的更多信息,请参阅修订部署。
Greengrass 命令行界面问题
使用 Greengr ass CLI 对问题进行故障排除。
java.lang.RuntimeException: Unable to create ipc client
当您运行 Greengrass CLI 命令并指定与安装核心软件的根文件夹不同的根文件夹时,您可能会看到此错误。 AWS IoT Greengrass
执行以下任一操作来设置根路径,并
替换为 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 IoT Greengrass V2 命令时 AWS CLI (例如,aws greengrassv2 list-core-devices
),你可能会看到这个错误。
此错误表示您的版本 AWS CLI 不支持 AWS IoT Greengrass V2。要 AWS IoT Greengrass V2 与一起使用 AWS CLI,您必须拥有以下版本之一或更高版本:
-
AWS CLI V1 最低版本:v1.18.197
-
AWS CLI V2 最低版本:v2.1.11
提示
你可以运行以下命令来检查你拥有 AWS CLI 的版本。
aws --version
要解决此问题,请将更新 AWS CLI 到支持的更高版本 AWS IoT Greengrass V2。有关更多信息,请参阅《AWS Command Line Interface 用户指南》中的安装、更新和卸载 AWS CLI。