【问题标题】:AWS SNS Creation times outAWS SNS 创建超时
【发布时间】:2017-08-24 14:42:16
【问题描述】:

我有 Lambda 函数,当它被调用时,它会创建 SNS 主题,向其中添加订阅者,然后向其发布消息。发布消息后,它会删除主题。要创建的主题名称和订阅者作为有效负载提供给 lambda 函数。

有时它可以工作,有时它会因Task timed out after x seconds 而失败我增加了 lambda 超时,但仍然是同样的问题。

我挖了一点,发现

sns.createTopic(params, function(err, data) {
    if(err) {
        console.log('Error Creating SNS Topic:',err);
    } else {
        console.log('SNS Topic Created Successfully:',data);
    }
}

永不返回,没有错误没有数据,我没有看到console.log()的结果

当它工作时,一切都很好,但当它失败时,我无法找到问题。

编辑:

所以我做了更多的挖掘,我减少了 SNS 主题创建的超时时间,默认为 5 分钟,现在为 5 秒。当失败发生时,我得到了这个”

{ [TimeoutError: Connection timed out after 5000ms]
message: 'Connection timed out after 5000ms',
code: 'NetworkingError',
time: Thu Mar 30 2017 15:35:20 GMT+0000 (UTC),
region: 'us-east-1',
hostname: 'sns.us-east-1.amazonaws.com',
retryable: true }

【问题讨论】:

  • 好吧,它一次有效,另一次无效。如果它一直在发生,我会想到这一点。
  • 你能分享完整的代码吗?如果没有,除了您提到的 SNS 工作之外,该功能是否还有其他用途?可能它确实需要超过 5 分钟,这就是它超时的原因,但如果它所做的只是需要你提到的几个 SNS 呼叫,那么根本不应该花费 5 分钟。从您提到的内容中看不出任何明显的内容,因此共享代码可能会有所帮助或告诉我们更多有关您的所有功能的作用。
  • 谢谢,我想我明白了。请参阅下面我自己的答案。

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


【解决方案1】:

我想我已经解决了这个问题,我的 Lambda 位于 VPC 中,并且我在我的 Lambda 配置下选择了几个子网。一些选定的子网无法访​​问互联网,我认为这就是在这些子网(没有互联网)下创建 lambda 容器时无法访问 SNS 并超时的原因。删除违规子网后,它开始工作。从那以后我没有看到这个问题。

【讨论】:

  • 是的,那也可以。很高兴你能弄明白
  • 我们遇到了同样的事情,私有 VPC 子网启用了 NAT 网关来与公共子网通信,但公共子网没有配置,因此不允许与互联网通信。谢谢!
  • 谢谢!一直在寻找解决方案:)
  • 很高兴它有帮助。
【解决方案2】:

让 lambda 函数能够访问互联网(同时还连接到 VPC)

  • 仅为您的 lambda 函数选择私有子网
  • 安全组可以是默认的。
  • 应将私有子网附加到路由表,该路由表具有到 NAT 网关 (X) 的路由 0.0.0.0/0
  • 棘手的部分是 NAT 网关 X 应该附加到公共子网(AWS 控制台在创建时要求子网)
  • 更棘手的部分是我们刚刚在步骤 4 中使用的公共子网应该附加到一个路由表,该路由表具有到 IGW 的路由 0.0.0.0/0。 (此路由的配置使其成为公共子网)

亚马逊有一个很棒的视频,这对像我这样对所有 AWS 行话一无所知的人非常有帮助。 https://www.youtube.com/watch?v=JcRKdEP94jM#action=share

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-04-02
    • 2021-07-11
    • 1970-01-01
    • 2017-11-01
    • 1970-01-01
    • 2015-12-05
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多