我尝试将事件从 Lambda 函数发布到 IOT,该执行环境位于 VPC 私有子网中,但它无法正常工作。
- 我有一个 IOT 设备,其策略配置为允许所有连接。
- 创建了一个具有两个私有子网的 VPC,并配置了 Lambda 函数以在其中运行
- Lambda 函数具有访问 IOT 所需的权限,并且安全组被配置为允许所有出站流量到任何端口和任何类型的协议 (0.0.0.0/0)
- 创建了一个 VPC 端点(com.amazonaws.eu-central-1.iot.data)(选择了两个私有子网)并分配了一个安全组,该安全组具有允许来自 Lambda 函数安全组的任何流量的规则
尝试使用公共端点发布事件而不添加 NAT 网关,但它不工作(出现超时错误)注意:- 如果我添加 NAT 网关,工作正常。
请找到以下尝试连接到 IOT 的示例代码以供参考
const region = 'eu-central-1';
const endpoint = 'xxxx'; //public endpoint;
const clientId = 'test' //random string;
const {IotData} = require('aws-sdk')
const params = {
topic: 'test_topic', /* required, subscribed to this topic */
payload: 'STRING_VALUE' /* Strings will be Base-64 encoded on your behalf */,
qos: 1
};
const iotdata = new IotData({endpoint, region});
iotdata.publish(params, (res, err) => {
console.log('res', res)
console.log('err', err)
});