Как опубликовать / подписаться на событие в IOT через конечную точку VPC (AWS)
Я попытался опубликовать событие из лямбда-функции в IOT, среда выполнения которого находится в частных подсетях VPC, но не работает.
- У меня есть устройство IOT, политика которого настроена на разрешение всех подключений.
- Создал VPC с двумя частными подсетями и настроил функцию 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)
});
1 ответ
Конечные точки VPC Core IoT не поддерживают частное DNS-имя, поэтому необходимо вручную создать частную размещенную зону в Route53, чтобы использовать конечную точку по умолчанию AWS IoT по умолчанию или собственный домен IoT.
- Создайте частную размещенную зону Route53 в том же VPC. Доменное имя частной размещенной зоны должно соответствовать конечной точке Интернета вещей по умолчанию или, если вы используете настраиваемую конечную точку Интернета вещей, имени вашего личного домена.
xxxxxxxxxx-ats.iot.us-east-1.amazonaws.com
Вышеупомянутая конечная точка IoT Data-ATS должна использоваться в качестве доменного имени для частной размещенной зоны.
- После создания частной размещенной зоны перейдите, чтобы увидеть ее записи, а затем нажмите «Создать запись». Настройте следующим образом:
Псевдоним: включите его, используя скользящую кнопку справа.
Название записи: (пусто)
Тип записи: A - направляет трафик на IPV4 (...)
Направьте трафик к: «Псевдоним к конечной точке VPC», а затем выберите регион (us-east-1) и конечную точку VPC (vpce-xxxx.data.iot.us-east-1.vpce.amazonaws.com).