【问题标题】:AWS Lambda + API Gateway + AWS Elasticsearch experiencing timeoutsAWS Lambda + API Gateway + AWS Elasticsearch 遇到超时
【发布时间】:2017-04-29 17:51:36
【问题描述】:

我最近接触了带有 .NET Core 1.0 的 AWS 无服务器架构。在我的应用程序中,我们在自己的机器上使用 Elasticsearch 来维护它。我想要做的是使用 AWS API Gateway 中的 AWS Elasticsearch Service,它由 AWS Lambda 代理。 (我相信我输入正确)

每当我的代码访问我的 Elasticsearch 域时,我都会收到超时错误。截至目前,我的 Elasticsearch 域是完全开放的,因此任何人都可以访问这些信息。我想只为 API Gateway 和 Lamda 功能锁定它。

我尝试弄乱政策和角色,但没有成功。有没有人试图做我想做的事情,如果是这样,他们是如何连接的?还是有更好的办法?

【问题讨论】:

  • 1) 同一地区(或)不同地区的所有资源? 2) 资源是否附有适当的政策? 3)您确定您的请求可以快速处理而不是代码问题吗?大多数超时问题将围绕这些
  • 1) 我已经检查过是否可以找到这些区域。我找不到 Elasticsearch 和 API Gateway 的区域。部署 Lambda 和 API 网关的过程是通过 Amazon AWS Toolkit for Visual Studio 完成的,所以我希望它们位于同一区域。 2)我不确定政策。我认为那是我可能遇到问题的地方。在这方面应该采取什么样的做法,我将如何对这些服务制定正确的政策? 3)就我的代码而言,我已经运行了单元测试,并且从我的本地开发环境到 AWS Elasticsearch,搜索请求大约需要 1 秒。
  • 看起来有一个来自 ElasticSearch 的nice example,用于说明如何从 Lambda 函数访问 ElasticSearch 域。您可以在this documentation 中找到更多信息。
  • 在弄乱了 AWS 和我的代码之后。我意识到这与我的 VPC/安全组的配置方式有关。如何允许访问 VPC 之外的互联网?我已经在 0.0.0.0/0 的所有端口上将出站设置为所有流量,但仍然没有运气到达外部服务。有人知道如何配置安全组吗?
  • 我在两个子网上都配置了 NAT 网关。

标签: amazon-web-services elasticsearch aws-lambda aws-api-gateway


【解决方案1】:

简单的解决方案是将您的所有服务移出它们现在所在的 VPC(我相信它们不在同一个 VPC 中,因为您的 IO 调用会超时)。

我在这里的回答将为您提供有关使用 VPC 的 AWS Lambda 以及为什么外部 IO 调用超时的良好背景。

AWS lambda invoke not calling another lambda function - Node.js

注意:答案与 NodeJS 无关。

【讨论】:

    猜你喜欢
    • 2019-07-08
    • 2017-09-19
    • 1970-01-01
    • 1970-01-01
    • 2017-06-26
    • 1970-01-01
    • 2017-12-07
    • 2019-01-20
    • 1970-01-01
    相关资源
    最近更新 更多