【问题标题】:AWS Lambda cannot connect to Kinesis Firehose "Max retries exceeded with url"AWS Lambda 无法连接到 Kinesis Firehose“最大重试次数超出 url”
【发布时间】:2017-01-31 03:57:18
【问题描述】:

我已经学习了几个教程并添加了不同的 IAM 配置和安全组,以使事情尽可能开放和明显,但没有任何效果。这是调试日志,主要错误粘贴在下面。让我知道我是否应该添加任何其他数据来明确这一点。

[DEBUG] 2016-09-22T13:57:40.965Z    5b770867-80cc-11e6-b5b8-018d2de39616    ConnectionError received when sending HTTP request.
Traceback (most recent call last):
File "/var/runtime/botocore/endpoint.py", line 174, in _get_response
proxies=self.proxies, timeout=self.timeout)
File "/var/runtime/botocore/vendored/requests/sessions.py", line 573, in send
r = adapter.send(request, **kwargs)
File "/var/runtime/botocore/vendored/requests/adapters.py", line 419, in send
raise ConnectTimeout(e, request=request)
ConnectTimeout: HTTPSConnectionPool(host='firehose.us-east-1.amazonaws.com', port=443): Max retries exceeded with url: / (Caused by ConnectTimeoutError(<botocore.awsrequest.AWSHTTPSConnection object at 0x7fbbc4c92c10>, 'Connection to firehose.us-east-1.amazonaws.com timed out. (connect timeout=60)'))

【问题讨论】:

  • 您的 Lambda 函数是否在您的 VPC 中运行?如果有,您的 VPC 中是否有 NAT 网关?
  • 它在 VPC 中,但我们没有 NAT。我是否必须将其发送到 VPC 外部才能到达 Kinesis?我只是希望它最终出现在同一个 VPC 中的 RDS 实例中...我正在考虑更改我的 lambda 函数以将记录插入 RDS 而不是打扰运动...我花了太长时间了
  • Kinesis 服务未在您的 VPC 内运行,因此是的,您必须在 VPC 外部发送请求。为此,您需要一个 NAT 网关。

标签: https aws-lambda boto3 amazon-kinesis-firehose


【解决方案1】:

请在thread 中关注我的回答。 这将解释如何让 lambda 联系互联网上的任何服务(如 S3、kinesis 等)。

【讨论】:

  • 谢谢,约翰尼。仅仅为了添加运动,这完全是矫枉过正,我已经设法仅使用 lambda 和 s3 编写了我的解决方案。如果我需要合并它,这似乎是一种可行且安全的方法。
  • “简单解决方案”不符合您的需求?您可能根本不需要 VPC。此外,假设您需要使用 S3 API - 有一个内置的解决方案,并且您不需要按照另一篇文章中的描述设置 VPC - AWS 专门为此添加了支持。希望他们能为 Kinesis 做同样的事情以及更多(如果还没有,我没有更新)。
【解决方案2】:

目前您无法将 Lambda 任务直接连接到 Kinesis Firehose,只能连接到 Kineses Streams。 解决此问题的一种方法是让 Firehose 将文件写入 S3,然后通过 S3 event notifications 触发 Lambda 任务。

【讨论】:

    猜你喜欢
    • 2020-02-08
    • 1970-01-01
    • 2021-02-17
    • 2016-11-13
    • 1970-01-01
    • 1970-01-01
    • 2020-12-29
    • 2020-06-29
    • 2013-08-30
    相关资源
    最近更新 更多