问题标签 [aws-iot-greengrass]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
695 浏览

amazon-web-services - 从 python 服务器订阅 aws-iot 主题

我基本上需要从 python 服务器向设备发送命令,设备将发布对主题的回复,我需要捕获回复服务器端。要从服务器发布到设备,我使用的是 boto3 iot-data 模块。但是如何订阅另一个主题以获取设备的回复?似乎没有办法使用 aws python 库。我需要使用像 paho 这样的遗传 MQTT 客户端吗?

谢谢你。

0 投票
1 回答
182 浏览

c - 使用cffi从python调用共享库的函数

我正在从 python 代码中调用一些 c-sdk。此 python 代码在 greengrass 上作为 lambda 运行。我正在使用 cffi 从 python 调用 shared so 的函数。我的 lambda(python 代码)作为 gcc_user 运行,但是当我在 C 代码中打印用户时,它会打印出类似:T�Pp。

下面是我用来打印用户信息的 C 代码:

下面是我正在使用的 python 代码调用共享库(C 代码):

有没有办法从 python 调用 c lib 并强制它作为 gcc_user 运行?根据我的说法,它应该首先作为 gcc_user 运行,因为它只是来自 python 代码的函数调用。

0 投票
0 回答
201 浏览

aws-lambda - AWS Greengrass lambda 函数未运行

2021-01-14T17:47:36.617Z [INFO](复印机)Greengrass_HelloWorld:启动脚本已退出。{exitCode=1, serviceInstance=0, serviceName=Greengrass_HelloWorld, currentState=STARTING} 2021-01-14T17:47:36.639Z [INFO] (pool-2-thread-57) Greengrass_HelloWorld: shell-runner-start。{scriptName=services.Greengrass_HelloWorld.lifecycle.shutdown.script, serviceInstance=0, serviceName=Greengrass_HelloWorld, currentState=BROKEN, command=["/greengrass/v2/packages/artifacts/aws.greengrass.LambdaLauncher/2.0.3/lambda- l..."]} 2021-01-14T17:47:36.771Z [警告](复印机)Greengrass_HelloWorld:stderr。2021/01/14 17:47:36 加载 lambda 进程时出错:无法从 /greengrass/v2/work/Greengrass_HelloWorld/work/worker/0/container 加载容器:容器“lambda”不存在。{scriptName=services.Greengrass_HelloWorld.lifecycle.shutdown.script,

部署后,我看到了上述错误。知道什么可能导致这个问题

0 投票
1 回答
372 浏览

amazon-web-services - AWS IoT Greengrass v2 不会在我的树莓上创建 greengrass/v2/ 文件夹

我正在尝试将运行 raspy OS lite 的树莓派 pi4 设备与 AWS Iot Greengrass v2 连接,我执行以下步骤:

  1. 从 AWS Greengrass 控制台我设置了一个核心设备

  2. 在我的覆盆子上,我安装了 Java 8 运行时

    $ sudo apt.get 更新 $ sudo apt-get install openjdk-8-jdk

  3. 在我的覆盆子上,我下载了安装程序:

    curl -s https://d2s8p88vqu9w66.cloudfront.net/releases/greengrass-nucleus-latest.zip > greengrass-nucleus-latest.zip && 解压 greengrass-nucleus-latest.zip -d GreengrassCore

  4. 在我的设备上,我运行安装程序:

    sudo -E java -Droot="/greengrass/v2" -Dlog.store=FILE -jar ./GreengrassCore/lib/Greengrass.jar --aws-region eu-west-1 --thing-name GreengrassQuickStartCore-1773dec1ad2 --事物组名称 GreengrassQuickStartGroup --component-default-user ggc_user:ggc_group --provision true --setup-system-service true --deploy-dev-tools true

一切似乎都完成了,我的核心设备是在 aws 控制台中创建的,状态为“健康”,但在我的树莓上,文件夹 /greengrass/v2 不存在,我看不到日志等。如果我阅读有关设备问题故障排除的文档,每个人都报告/greengrass/v2/logs/ 作为日志文件夹,但在我的设备上 greengrass 文件夹不存在。

大家有什么建议吗?

非常感谢提前

0 投票
1 回答
397 浏览

aws-iot-greengrass - 如何在 AWS Greengrass 中运行组件?

AWS Greengrass 文档中,它说您可以像这样测试组件

但是如果我想从另一个脚本运行一个组件。我应该使用相同的命令吗?例如,我有一个将一些数据发布到 MQTT 的组件,现在我正在使用 system.os,如下所示:

但我不确定这是否是正确的解决方案。这似乎不是一个好的解决方案。

0 投票
1 回答
306 浏览

amazon-web-services - 如何在 Windows 10 上安装 aws iot greengrass

我们正在使用 .net 核心 Windows 窗体应用程序(客户端)。Mqtt 协议用于客户端和服务器之间的通信。需要在 Windows 机器(服务器)中安装 greengrass。因此需要将数据从服务器(greengrass)传递到 aws iot 核心。

那么如何在 Windows 10 上安装 greengrass

0 投票
0 回答
201 浏览

amazon-web-services - GreengrassV2:从 lambda 代码访问 gpio

我将 AWS Greengrass V2 与基于 Lambda 的组件一起使用。Lambda Sourcode 包含应该控制树莓派的 gpio 引脚的代码。

Lambda 已成功部署到 GG 核心设备 (=RaspberryPI)。不幸的是 Lambda 抛出一个错误:没有这样的文件或目录,打开 '/sys/class/gpio/export'

我在 greengrass 组件中明确定义 lambda不在Greengrass 容器中执行。我选择了“无容器”选项,但代码无法找到或访问 /sys/class/gpio/export 来控制 gpio 引脚。

如果我直接在树莓派上执行本地 nodejs 项目中的 lambda 函数的相同代码。该代码有效。问题不在于代码。

我认为问题要么是 lambda 运行时的隔离,要么是用户 ggc_user 没有足够的权限。

有人可以给我一个提示,如何解决这个问题?

亲切的问候斯特凡

0 投票
0 回答
12 浏览

aws-iot-greengrass - 树莓派无法连接到greengrass v1

我的 ubuntu 上运行着 greengrass v1。我有一个树莓派试图连接它。但我收到以下错误:错误:错误:过早关闭我已经验证了证书、策略和 clientId,一切看起来都不错:

  • 我试图连接到 greengrass 的 2 个覆盆子设备的不同证书
  • 政策:允许对所有资源的所有操作(物联网/greengrass)
  • clientId 不同

有谁知道为什么会这样?我也检查了这个线程: 如何解决:在 Node.js 服务器的 onclosenexttick 处过早关闭?

问候,

0 投票
0 回答
28 浏览

amazon-web-services - 如何知道在 aws IoT Greengrass (V1) 中创建组所需的权限?

我正在尝试在 Greengrass Classic V1 中创建一个组。

如何提前知道什么权限需要一个根本没有任何权限的用户?

例如,用户将尝试在以下位置创建组:greengrass -> classic V1 -> Groups。他会加注(例如):

"iot:AttachThingPrincipal", "iot:CreateKeysAndCertificate", "iot:ListThings", "iot:ListThingTypes"

但只有当他可以到达触发错误的流程步骤时才会通知他。

更具体地说:他会尝试创建一个组,他会引发“iot:ListThings”错误,他会要求将该权限添加到 IT 部门或切换到 root 帐户以允许该用户,并在 5 分钟后尝试再次,然后下一步会出现一个新的错误......他需要这样做大约 10 次,从 0 开始,直到他可以创建组。

如何在不给出AWSIoT1ClickFullAccessor的情况下避免这种低效的循环AWSGreenglassFullAccess

0 投票
0 回答
59 浏览

amazon-web-services - 有没有办法通过 Lambda 在 AWS IoT Greengrass CoreDevice 上同步调用事件

我试图找出一种方法来启用从 Lambda 到 Greengrass 核心设备的同步通信流。

一个例子是设备将在核心设备上执行一些代码并且需要返回成功或失败的情况,例如检查一个特定的 SD 卡是否已满或在设备上可写。此检查需要通过带有参数(SD 卡插槽索引)的 api 公开,以便可以随意调用它。

是否可以同步调用 lambda 函数并以同步方式等待 IoT Core 的响应?

所有文档都指向通过 MQTT 到核心设备的异步调用方法,并在 AWSIoTCore 上创建规则以触发 lambda/通知 SQS。如果当时只有 1 个 Http 请求,这没关系,但在多个请求的情况下,我们如何从 SQS 队列中识别正确的消息。

我想知道如何在 lambda 中等待 IoTCore 的结果,然后再向 API 发送响应。