【问题标题】:Pubnub functions not working on AWS LambdaPubnub 函数不适用于 AWS Lambda
【发布时间】:2016-08-25 01:35:40
【问题描述】:

我正在尝试使用 Pubnub 提供的 history method 来获取频道的聊天历史记录并在 AWS Lambda 上运行我的 node.js 代码。但是,我的函数没有被调用。我不确定我是否做得正确,但这是代码 sn-p-

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 格式的消息历史记录。

【问题讨论】:

  • 如果这些是您真正的发布/订阅密钥,您不应该将它们提供给公众。建议禁用这些键并创建新键。
  • 您可能需要为您的 Lambda 容器启用 ACL 规则。在 AWS 安全控制台中指定。特别是对*.pubnub.com的外部HTTP调用
  • 我们的一位架构师怀疑,由于 history 响应是异步的,因此您的 Lambda 在结果返回给您的回调之前就退出了。我们将跟进确认这一点和最佳实践。

标签: amazon-web-services pubnub aws-lambda


【解决方案1】:

我遇到了同样的问题,终于让它工作了。您需要做的是允许 pubnub.com 的 CIDR 地址。在我弄清楚之前,这对我来说是一个陌生的想法!以下是发布到频道的方法:

  1. 复制 pubnub.com 的 CIDR 地址,即 54.246.196.128/26 (Source)[警告:不要这样做 - 请参阅下面的评论]
  2. 登录https://console.aws.amazon.com
  3. 在“服务”下转到“VPC”
  4. 在左侧的“安全”下,点击“网络 ACL”
  5. 点击“创建网络 ACL”给它一个名称标签,如“pubnub.com”
  6. 为您的 Lambda 技能选择 VPC(如果您不确定,请点击您的 Lambda 函数,您会看到它。您可能只有一个像我一样列出的)
  7. 点击“是,创建”
  8. 在“出站规则”选项卡下,单击“编辑”
  9. 对于“规则#”,我只使用了“1”
  10. 对于“类型”,我使用了“HTTP (80)”
  11. 对于“目标”,我从步骤 1 中粘贴了 CIDR
  12. “保存”

请注意,如果您要订阅频道,您还需要添加“入站规则”。

【讨论】:

  • 注意:硬编码特定的 IP 地址以连接到 PubNub 不受 PubNub 的宽恕。为什么?因为 PubNub 是一个分布式网络,您的请求通过 DNS 查找路由到服务器节点。 IP 地址可以并且将会改变,因此硬编码 IP 地址最终会失败。如果由于节点故障而需要进行故障转移,那么故障转移将...失败。所以请不要这样做。
  • 如果您有一个实际项目需要解决方案并希望讨论最佳实践,请联系PubNub Support 以获得进一步帮助。
  • @CraigConover,您是否愿意建议 CIDR 地址的合适值是多少?
  • 暂时没有。只是不要对 PubNub IP 地址进行硬编码。提供公共 PubNub IP 地址的完整列表可能是合适的,或者也许能够以某种方式将其映射到 pubsub.pubnub.com 以便行使 DNS。不过我们会提供官方答复。
  • 谢谢,我很期待,因为我的回答是让我的 Amazon Echo 成功与 PubNub 对话的唯一方法。在您的网站上看到这方面的教程会很棒!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2019-09-05
  • 1970-01-01
  • 2023-02-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-01-17
相关资源
最近更新 更多