2016-05-22 3 views
1

Я пытаюсь использовать history method, предоставленный Pubnub, чтобы получить историю чата канала и запустить мой код node.js на AWS Lambda. Однако моя функция не вызвана. Я не уверен, если я делаю это правильно, но вот код snippet-Функции Pubnub не работают на AWS Lambda

var publishKey = "pub-c-cfe10ea4-redacted"; 
var subscribeKey = "sub-c-fedec8ba-redacted"; 
var channelId = "ChatRoomDemo"; 
var uuid; 
var pubnub = {}; 

function readMessages(intent,session,callback){ 
    pubnub = require("pubnub")({ 
       publish_key : publishKey, 
       subscribe_key: subscribeKey 
      }); 

    pubnub.history({ 
     channel : 'ChatRoomDemo', 
     callback : function(m){ 
      console.log(JSON.stringify(m)); 
     }, 
     count : 100, 
     reverse : false 
    }); 
} 

Я ожидаю, что история сообщений в формате JSON, который будет отображаться на консоли.

+0

Если это ваши настоящие паб/суб ключи, вы не должны предоставлять их публике. рекомендуется отключать эти ключи и создавать новые. –

+0

Возможно, вам потребуется включить правила ACL для вашего Lambda Container. Указано в консоли безопасности AWS. В частности, внешние HTTP-вызовы на '* .pubnub.com' – PubNub

+0

Один из наших архитекторов подозревает, что, поскольку ответ« history »является асинхронным, что ваша Лямбда выходит до того, как результаты вернутся к вашему обратному вызову. Мы будем следить за подтверждением этого и лучшей практикой. –

ответ

-1

У меня была такая же проблема и, наконец, она работала. Что вам нужно сделать, так это разрешить адрес CIDR для pubnub.com. Для меня это была чужая идея, пока я не понял это! Вот как это сделать, чтобы опубликовать на канал:

  1. Скопировать адрес CIDR для pubnub.com который 54.246.196.128/26 (Source) [ВНИМАНИЕ: не это - см комментарии ниже]
  2. Вход в https://console.aws.amazon.com
  3. под «Services» перейдите в раздел «VPC»
  4. на левой стороне, под «безопасности», нажмите кнопку «Сеть списков управления доступом»
  5. нажмите кнопку «Создать сетевой ACL» дать ему имя тега, как «pubnub .com "
  6. Выберите VPC для вашего навыка лямбда (если вы не уверены, щелкните по вашей лямбда-функции, вы увидите это. Вы, наверное, только один в списке, как и я)
  7. Нажмите «Да, создать»
  8. Под «Outbound Rules» на вкладке, нажмите кнопку «Изменить»
  9. Для «Правило #» Я просто использовал «1»
  10. Для "типа" я "HTTP (80)"
  11. Для "Destination" Я вставил в CIDR с шага 1
  12. "Сохранить" enter image description here

Примечание, если вы подписавшись, вам также нужно будет добавить «Входящее правило».

+0

ПРИМЕЧАНИЕ: жесткая кодировка определенного IP-адреса для подключения к PubNub не допускается PubNub. Зачем? Поскольку PubNub является распределенной сетью, и ваши запросы направляются на узел сервера посредством поиска DNS. IP-адреса могут и будут меняться так жестко, что IP-адрес в конечном итоге не удастся. И если восстановление после сбоя необходимо из-за неисправного узла, то отказ при сбое ... сбой. Так что не делай этого, пожалуйста. –

+0

Если у вас есть реальный проект, в котором вы нуждаетесь в решении и хотите обсудить лучшие практики, обратитесь за дополнительной поддержкой к [PubNub Support] (https://pubnub.com/support). –

+0

@CraigConover, не могли бы вы подсказать, какое значение для CIDR-адреса есть? – roundtheworld

Смежные вопросы