发布到另一个帐户的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
EXPERTE
gefragt vor 5 Monaten30 Aufrufe
1 Antwort
0

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

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

profile picture
EXPERTE
beantwortet vor 5 Monaten

Du bist nicht angemeldet. Anmelden um eine Antwort zu veröffentlichen.

Eine gute Antwort beantwortet die Frage klar, gibt konstruktives Feedback und fördert die berufliche Weiterentwicklung des Fragenstellers.

Richtlinien für die Beantwortung von Fragen