2015-01-03 6 views
34

Kann eine Verbindung zwischen einer AWS Lambda-Funktion und einem Redis ElastiCache-Cluster hergestellt werden?Verbindung zum ElastiCache-Cluster über AWS Lambda-Funktion

Ich kann nicht herausfinden, ob es ein Konfigurationsproblem ist oder es einfach nicht möglich ist.

PS: Ich habe einen Test von einer EC2-Instanz gemacht und kann mich mit dem Redis-Knoten verbinden. Auch die Lambda-Funktion und der Redis-Knoten befinden sich in derselben Region.


UPDATE (9. Oktober 2015):

kündigte Amazon VPC für AWS Lambda-Funktionen. Details here

Dies bedeutet, dass wir jetzt auf alle Ressourcen in AWS zugreifen können, die hinter der VPC-Sicherheitsgruppe stehen, einschließlich ElastiCache- und RDS-Maschinen.

UPDATE (11 Feb 2016): Amazon startete VPC für AWS Lambda.

https://aws.amazon.com/about-aws/whats-new/2016/02/access-resources-within-a-vpc-using-aws-lambda/

+0

Es gibt keine technischen Einschränkungen für die Verbindung von Lambda mit einem externen Dienst. Wenn Sie Bibliotheken von Drittanbietern verwenden, müssen Sie diese in Ihre ZIP-Datei aufnehmen, und diese Bibliotheken müssen unter Linux ausgeführt werden können. Können Sie ein Codebeispiel und die Fehlermeldung geben? Ihre Frage hat nicht genug Element enthalten, um Ihnen zu helfen –

+1

Ich weiß Lambda kann mit externen Diensten verbinden. Die Frage ist, ob ElastiCache Lambda-Funktionen erlaubt, sich mit seinen Clustern zu verbinden. –

+2

Wenn Ihre Sicherheitsgruppen ordnungsgemäß eingerichtet sind, gibt es keinen Unterschied zur Sichtweise von Elastic Cache. Dies ist nur eine einfache TCP-Verbindung - es gibt keinen Unterschied in der Verbindung von Lambda oder einem anderen Dienst –

Antwort

12

@ hier RohitChatterjee Kommentar erweitern auf das vollständige Zitat von AWS docs bei http://docs.aws.amazon.com/AmazonElastiCache/latest/UserGuide/GettingStarted.AuthorizeAccess.html

"Cluster Alle ElastiCache ist, kann nur von einer Amazon EC2-Instanz. Muss einen Cluster und die damit verbundene Amazon EC2-Instanz zugegriffen werden in derselben Amazon Virtual Private Cloud (VPC) Wenn Sie von einer anderen als einer Amazon EC2-Instanz in derselben VPC auf einen ElastiCache-Cluster zugreifen müssen, können Sie zur Behebung eines Problems einen oder mehrere Amazon EC2-Hosts in der VPC des Caches einrichten Als Proxy für die Außenwelt fungieren. Einrichten eines Hosts fügt einen zusätzlichen Netzwerk-Hop oder zusätzliche Secure Sockets Layer (SSL) Overhead und Kosten, oder beides Die Kosten sind für viele Anwendungsfälle gering. Sie müssen die Proxy-Amazon EC2-Instanz Zugriff auf Ihre Cluster gewähren.“

Also keine AWS Lambda kann nicht direkt an einen ElastiCache Cluster verbinden.
Sie müssen eine EC2 als Proxy verwenden. Sie können entweder Setup ein einfaches HTTP_proxy auf einer Ihrer Instanzen oder tun Forwarding Port sowohl mit DNAT und SNAT wie https://serverfault.com/a/586553

zu dieser Antwort beschrieben
+5

Ab Februar 2016 kündigte AWS [VPC für Lambda] (https://aws.amazon.com/about-aws/whats-new/2016/02/access-resources-within-a-vpc-using-aws) an -lambda /). –

1

ich das gleiche Problem erleben. Ich habe keine direkte Lösung gefunden, sondern stattdessen eine Lambda-Funktion verwendet, um mit einem Socket.io eine Verbindung zu einem EC2-Server herzustellen, was ziemlich einfach war und ein Ereignis an diesen EC2-Server gesendet hat.

Wenn der EC2-Server das Ereignis empfangen hat, führte er die erforderliche Redis-Task aus (Datenbankbereinigung nach der Erstellung der Image-Miniaturansicht).

Hoffe, das hilft! Wenn jemand herausfindet, wie man sich direkt von Lambda mit ElastiCache verbindet, würde ich es trotzdem gerne wissen!

3

einen HTTP-Proxy oder iptables einrichten würde aus folgenden Gründen nicht:

Redis Anrufe sind nicht HTTP und wird nicht von HTTP-Proxies gehandhabt. iptables (oder irgendein Port (Weiterleitung für diese Angelegenheit) wird entweder keinen Domain-Namen als Ziel akzeptieren oder ist sehr ineffizient aufgrund der DNS-Auflösung, die jedes Mal erforderlich ist.

Die beste und bequemste Methode ist die Installation von twemproxy in einem EC2-Rechner und die Weiterleitung Ihrer Anfragen. Als Bonus haben Sie plötzlich eine fantastische Sharding-Strategie eingesetzt.