2016-09-22 83 views
1

我遵循了几个教程,并添加了不同的IAM配置和安全组,以尽可能保持开放和明显,并且没有任何工作。这里是调试日志,以及下面粘贴的主要错误。让我知道是否还有其他数据需要添加,以便清楚说明。AWS Lambda无法连接到Kinesis Firehose“最大重试次数超过url”

[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)')) 

Debug Output from lambda log in Cloudwatch

+0

您的Lambda函数是否在VPC内部运行?如果是这样,你的VPC中是否有NAT网关? –

+0

它在VPC中,但我们没有NAT。我是否必须将此信息发送到VPC外部以访问Kinesis?我只是希望它在同一VPC中的RDS实例中结束......我正在更改我的lambda函数,以便将记录插入到RDS中,而不是打扰kinesis ......它使我感觉太长了 – Caullyn

+0

Kinesis服务不在您的VPC内运行,因此您必须将请求发送到VPC外部。你需要一个NAT网关。 –

回答

1

请跟随我在这thread答案。 这将解释如何使lambda联系互联网上的任何服务(如S3,kinesis等)。

+0

谢谢,约翰。这只是为了增加kinesis而完全矫枉过正,我已经设法使用lambda和s3编写我的解决方案。如果我需要整合它,这似乎是一个可行和安全的方法。 – Caullyn

+0

“简单解决方案”不适合您的需求?你可能根本不需要VPC。更重要的是,你需要使用S3 API - 有一个内置的解决方案,你不需要像其他文章中描述的那样设置VPC - AWS特别为此添加了支持。 希望他们会为Kinesis和更多(如果还没有,我没有更新)做同样的事情。 – johni

+0

已经在vpc中 – Caullyn

0

目前不能直接连接LAMBDA任务室壁运动流水,只有Kineses流。 解决这个问题的方法之一是让Firehose将文件写入S3,然后通过S3 event notifications触发Lambda任务。

相关问题