如何通过VPC端点(AWS)向物联网发布/订阅事件



我试图从Lambda函数发布一个事件到IOT,其执行环境驻留在VPC私有子网中,但它不工作。

  • 我有一个物联网设备,其策略配置为允许所有连接。
  • 创建两个私有子网的VPC,并配置Lambda函数在其中运行
  • Lambda函数具有访问物联网所需的权限,并且安全组配置为允许所有出站流量到任何端口和任何类型的协议(0.0.0.0/0)
  • 创建一个VPC端点(com.amazonaws.eu-central-1.iot.data)(选择两个私有子网),并分配一个安全组,该安全组允许来自Lambda功能安全组的任何流量

尝试在未添加NAT网关的情况下使用公共端点发布事件,并且不工作(获得超时错误)注意:-如果我添加NAT网关,工作正常。

请找到下面的示例代码片段试图连接到物联网作为参考

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)
});

IoT核心VPC端点不支持Private DNS Name,因此需要在Route53中手动创建Private Hosted Zone,以使用默认的AWS IoT默认端点或IoT自定义域。

  1. 在同一个VPC中创建一个Route53私有托管区域。私有托管区域的域名需要与默认的物联网端点匹配,或者,如果您使用的是物联网可配置端点,则需要与自定义域
  2. 的名称匹配。

xxxxxxxxxx ats.iot.us -东- 1. amazonaws.com

上述IoT Data-ATS端点应用作Private Hosted zone的域名。

  1. 创建私有托管区域后,导航到查看其记录,然后单击"创建记录"。配置如下:
  • 别名:使用右侧滑动按钮启用。

  • 记录名称:(blank)

  • 记录类型:A -路由流量到IPV4(…)

  • 路由流量到:"别名到VPC端点";然后选择区域(us-east-1)和VPC端点(vpce-xxxx.data.iot.us-east-1.vpce.amazonaws.com)。

相关内容

  • 没有找到相关文章

最新更新