2016-05-22 16 views
1

我試圖使用Pubnub提供的history method獲取通道的聊天記錄並在AWS Lambda上運行我的node.js代碼。但是,我的功能沒有被調用。我不知道如果我做是正確的,但這裏的代碼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

您可能需要爲您的Lambda容器啓用ACL規則。在AWS安全控制檯中指定。特別是對外部HTTP調用'* .pubnub.com' – PubNub

+0

我們的一位架構師懷疑,因爲您的Lambda在結果返回到回調之前退出的「歷史記錄」響應是異步的。我們會跟進並確認這一點以及最佳做法。 –

回答

-1

我有同樣的問題,並最終得到它的工作。你需要做的是允許pubnub.com的CIDR地址。在我想出來之前,這是我的一個外國想法!以下是如何做到這一點發布到一個通道:

  1. 複製CIDR地址pubnub.com這是54.246.196.128/26(Source[警告:不要這樣 - 見下文評論]
  2. 登錄到https://console.aws.amazon.com
  3. 「服務」下進入「VPC」
  4. 在左邊,在「安全」,點擊「網絡訪問控制列表」
  5. 單擊「創建網絡ACL」給它一個名字的標籤,如「pubnub .com「
  6. 爲您的Lambda技能選擇VPC(如果您不確定,請點擊Lambda功能,您會看到它。你可能只列出了像我這樣的一個)
  7. 單擊「是,創建」
  8. 在「出站規則」選項卡,單擊「編輯」
  9. 對於「規則#」我只是用「1」
  10. 對於 「類型」 我用 「HTTP(80)」
  11. 爲 「目的地」 我在CIDR粘貼從步驟1
  12. 「保存」 enter image description here

注意,如果你訂閱添加到頻道,您還需要添加「入站規則」。

+0

注意:硬編碼特定IP地址以連接到PubNub不受PubNub的寬限。爲什麼?由於PubNub是一個分佈式網絡,您的請求通過DNS查找路由到服務器節點。 IP地址可以並且將會改變,所以硬編碼IP地址最終會失敗。如果由於故障節點而需要故障切換,則故障切換將失敗。所以請不要這樣做。 –

+0

如果您有一個真正的項目需要解決方案並希望討論最佳實踐,請聯繫[PubNub支持](https://pubnub.com/support)以獲得進一步的幫助。 –

+0

@CraigConover,你會不會建議CIDR地址的適當值? – roundtheworld