2016-09-22 1 views
1

J'ai suivi plusieurs didacticiels et ajouté différentes configurations IAM et groupes de sécurité pour que les choses restent aussi ouvertes et évidentes que possible et que rien ne fonctionne. Voici le journal de débogage, et l'erreur principale collée ci-dessous. Faites-moi savoir s'il y a d'autres données que je devrais ajouter pour que ce soit clair.AWS Lambda ne peut pas se connecter à Kinesis Firehose "Nombre maximal de tentatives dépassé"

[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

Votre fonction Lambda s'exécute-t-elle dans votre VPC? Et si oui, avez-vous une passerelle NAT dans votre VPC? –

+0

C'est dans un VPC, mais nous n'avons pas de NAT. Dois-je l'envoyer en dehors du VPC pour atteindre Kinesis? Je veux juste que ça finisse dans une instance RDS dans le même VPC ... Je cherche à changer ma fonction lambda pour simplement insérer les enregistrements dans RDS au lieu de m'embêter avec du kinésis ... ça m'a pris beaucoup trop longtemps – Caullyn

+0

Le service Kinesis ne fonctionne pas à l'intérieur de votre VPC, donc oui, vous devez envoyer la demande en dehors du VPC. Vous aurez besoin d'une passerelle NAT pour cela. –

Répondre

1

S'il vous plaît suivre ma réponse dans ce thread. Ceci expliquera comment faire pour lambda contacter n'importe quel service sur internet (tel que S3, kinésis et ainsi de suite).

+0

Merci, johni. C'est complètement exagéré juste pour ajouter du kinésis, j'ai réussi à écrire ma solution en utilisant simplement lambda et s3. Si jamais j'ai besoin de l'incorporer, cela semble être une méthode viable et sûre. – Caullyn

+0

La "solution simple" ne correspond pas à vos besoins? vous pourriez ne pas avoir besoin de VPC du tout. En outre, disons que vous deviez utiliser l'API S3 - il y avait une solution intégrée pour cela, et vous n'auriez pas besoin de configurer le VPC comme décrit dans l'autre support post-AWS ajouté pour cela spécifiquement. Espérons qu'ils feront la même chose pour Kinesis et plus (si ce n'est déjà fait, je ne suis pas mis à jour). – johni

+0

Déjà dans un vpc – Caullyn

0

Actuellement, vous pouvez pas connecter une tâche Lambda directement à Kinesis Firehose, pour Kineses Streams. Une solution consiste à laisser Firehose écrire un fichier sur S3, puis à déclencher une tâche Lambda via S3 event notifications.