使用影子更新触发Greengrass Lambda函数。

0

【以下的问题经过翻译处理】 我创建了一个Lambda,当指定的影子更新时执行某些操作。

#greengrass-cli组件列表

...

组件名称:mtdshadowconfiglambda-dev-sync_remote_config#2

版本:1.0.18

状态:运行中

配置:{"containerMode":"NoContainer","containerParams":{"devices":{},"memorySize":16000.0,"mountROSysfs":false,"volumes":{}},"inputPayloadEncodingType":"json","lambdaExecutionParameters":{"EnvironmentVariables":{}},"maxIdleTimeInSeconds":60.0,"maxInstancesCount":100.0,"maxQueueSize":1000.0,"pinned":false,"pubsubTopics":{"0":{"topic":"$aws/things/+/shadow/name/#","type":"IOT_CORE"}},"statusTimeoutInSeconds":60.0,"timeoutInSeconds":30.0}

......

我正在尝试更精细地锁定触发器:

{"topic":"$aws/things/${AWS_IOT_THING_NAME}/shadow/name/config#","type":"IOT_CORE"}

(旁边的问题是,这是否是使用环境变量AWS_IOT_THING_NAME进行的?)

因此,当我创建Lambda的新版本时,在控制台中输入此内容。但是,即使版本号已更新,将所有内容推送到设备后仍保留相同的主题:

组件名称:mtdshadowconfiglambda-dev-sync_remote_config

版本:1.0.23

状态:已完成

配置:{"containerMode":"NoContainer","containerParams":{"devices":{},"memorySize":16000.0,"mountROSysfs":false,"volumes":{}},"inputPayloadEncodingType":"json","lambdaExecutionParameters":{"EnvironmentVariables":{}},"maxIdleTimeInSeconds":60.0,"maxInstancesCount":100.0,"maxQueueSize":1000.0,"pinned":false,"pubsubTopics":{"0":{"topic":"$aws/things/+/shadow/name/#","type":"IOT_CORE"}},"statusTimeoutInSeconds":60.0,"timeoutInSeconds":30.0}

是否有一种方法可以在Lambda安装后更改其触发器?

profile picture
专家
已提问 5 个月前17 查看次数
1 回答
0

【以下的回答经过翻译处理】 你好,

感谢您对Greengrass V2的关注。您遇到的问题是因为您必须在部署中使用RESET配置才能使lambda使用更新的默认配置。有关更多信息,请参见https://docs.aws.amazon.com/greengrass/v2/developerguide/update-component-configurations.html#reset-configuration-updatehttps://forums.aws.amazon.com/thread.jspa?messageID=972603#972603

回答您的附加问题,订阅主题完全是Lambdas的配置驱动,因此您无法使用环境变量。如果您希望进行编程订阅,则必须使用本机Greengrass V2组件(非lambda)并使用我们的IPC SDKhttps://docs.aws.amazon.com/greengrass/v2/developerguide/ipc-iot-core-mqtt.html#ipc-operation-subscribetoiotcore

谢谢,

迈克尔

profile picture
专家
已回答 5 个月前

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

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

回答问题的准则