跳至内容

无法将自定义组件部署到核心设备。

0

【以下的问题经过翻译处理】 您好,

我是相对新的Greengrass用户,我遇到了一个难以理解的错误信息。我尝试在网上寻找类似的问题,但是没有找到。

我创建了一些自定义组件,这些组件应该订阅一个主题上的消息(根据此链接的说明:https://docs.aws.amazon.com/greengrass/v2/developerguide/ipc-publish-subscribe.html),但是在将这些组件部署到核心设备时,部署没有完成,我从greengrass.log收到以下错误:

(pool-2-thread-39)com.aws.greengrass.tes.CredentialRequestHandler:从TES检索AwsCredentials时出错。{iotCredentialsPath= /role-aliases/********/credentials,credentialData = TES响应状态代码为:403。缓存响应。{"message":"传递的thing name无效"}}

这些组件的工件和配方可以在上面的链接中找到,因为我编辑的唯一内容是S3存储桶中工件的位置和要订阅的主题的名称。我不明白CredentialRequestHandler认为什么名称无效,因为我没有在我尝试部署的组件中指定任何名称。我还检查了核心设备确实在.aws文件夹中存储了我的凭据,并且具有授予访问S3存储桶的权限的策略。

我做错了什么?

专家
已提问 2 年前22 查看次数
1 回答
0

【以下的回答经过翻译处理】 嗨,Albogd,

在安装时你是如何配置Greengrass的?Greengrass使用的证书是否与正确的IoT设备关联?

Greengrass不使用存储在.aws文件夹中的凭证。我们不建议在设备本身上存储凭证。相反,Greengrass使用与IAM角色ARN相关联的IoT角色别名来访问AWS服务。当Greengrass调用AWS服务(如S3)时,它会从AWS IoT凭证提供程序获取凭证。Greengrass会将HTTP标头x-amzn-iot-thingname添加到请求中,并使用来自Greengrass配置的ThingName。

你可以检查/greengrass/v2/config/effectiveConfig.yaml以查看Greengrass正在使用的ThingName,或查找像以下这样的日志行:

com.aws.greengrass.deployment.IotJobsHelper:连接建立到IoT云。{ThingName = <YOUR_THING_NAME>}

AWS IoT授权访问AWS文档(https://docs.aws.amazon.com/iot/latest/developerguide/authorizing-direct-aws.html#authorizing-direct-aws.walkthrough)提到以下内容:

在x-amzn-iot-thingname中提供的ThingName必须与分配给证书的AWS IoT Things资源的名称匹配。如果不匹配,将返回403错误。

这似乎是你看到的错误 - 这可能表明请求中的证书和ThingName不匹配。

专家
已回答 2 年前

您未登录。 登录 发布回答。

一个好的回答可以清楚地解答问题和提供建设性反馈,并能促进提问者的职业发展。