发布到另一个帐户的IoT端点 - IoTData SDK NodeJS Lambda。

0

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

我有两个启用了IoT端点的帐户。我的设备连接到帐户A上的IoT端点。在帐户A中,我还运行一个Lambda函数,通过IoT规则接收消息。 Lambda会确定是否需要将消息转发到B帐户。由于我也有其他依赖于B帐户的IoT消息的服务,因此我只想将MQTT消息重新发布到帐户B的IoT端点。

Lambda已配置为NodeJS 12.x。

让我们搁置IAM的事情。我已经为此设置了一些角色/策略,但我甚至还没有测试它们。

我在帐户A的Lambda中使用以下片段将消息发送到帐户B的IoT端点。

   let iotData = new AWS.IotData({
     endpoint: &#39;<endpointOfAccountB>-ats.iot.eu-west-1.amazonaws.com&#39;
   });
   
   let topic_params = {
     topic: "my/topic/on/other/account",
     payload: JSON.stringify(payload),
     qos: 1
   };
   
  iotData.publish(topic_params).promise();

似乎会忽略endpoint属性,因为消息被发布在帐户A上。我也尝试过没有*-ats*(CLI的结果:aws iot describe-endpoint):

<endpointOfAccountB>.iot.eu-west-1.amazonaws.com -> 相同的结果。

当我打印iotDev.endpoint时,配置了正确的端点。

是否有一种使用IoTData sdk从A帐户向B帐户发布MQTT消息的方法?

我是否遗漏了什么?

如果需要更多详细信息,请随时询问。

最好的祝福,

Julian

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

【以下的回答经过翻译处理】 今天我遇到了同样的问题。我解决这个问题的方法是在B账户中扮演一个角色,使用临时凭证在AWS.config.credentials中设置凭证,然后在发布消息之前使用IoT端点创建IotData对象。

确保在A账户中为Lambda执行角色授予STS:AssumeRole权限,并设置"B账户"中的"iotRole"信任A账户。

profile picture
专家
已回答 5 个月前

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

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

回答问题的准则