Kann eine AWS-Lambda-Funktion mit einem Redis ElastiCache-Cluster verbunden werden?
Ich kann nicht herausfinden, ob es sich um ein Konfigurationsproblem handelt oder es einfach nicht möglich ist.
PS: Ich habe einen Test von einer EC2-Instanz gemacht und kann eine Verbindung zum Redis-Knoten herstellen. Auch die Lambda-Funktion und der Redis-Knoten liegen in derselben Region.
UPDATE (09 Oct 2015):
Amazon kündigte VPC für AWS-Lambda-Funktionen an. Details hier
Dies bedeutet, dass wir jetzt auf alle Ressourcen in AWS hinter der VPC-Sicherheitsgruppe zugreifen können, einschließlich ElastiCache- und RDS-Maschinen.
UPDATE (11. Februar 2016): Amazon hat VPC für AWS Lambda gestartet.
https://aws.Amazon.com/about-aws/whats-new/2016/02/accessresources-within-a-vpc-using-aws-lambda/
Seit Februar 2016 ermöglicht AWS die Verwendung von Lambda-Funktionen zum Herstellen einer Verbindung zu Elasticache. Siehe Access Resources innerhalb einer VPC mit AWS Lambda . Hier ein Link, wie es funktioniert - Tutorial: Konfigurieren einer Lambda-Funktion für den Zugriff auf Amazon ElastiCache in einer Amazon-VPC
Das Einrichten eines HTTP-Proxy oder von iptables würde aus folgenden Gründen nicht funktionieren:
Redis-Aufrufe sind nicht HTTP
und werden nicht von HTTP-Proxys verarbeitet. iptables
(oder eine Portweiterleitung für diese Angelegenheit) akzeptiert entweder keinen Domänennamen als Ziel oder ist aufgrund der jeweils erforderlichen DNS-Auflösung äußerst ineffizient.
Die beste und bequemste Methode ist die Installation von twemproxy
in einer EC2-Maschine und die Weiterleitung Ihrer Anforderungen. Als Bonus haben Sie plötzlich auch eine fantastische Splitterstrategie eingesetzt.
Ich hatte das gleiche Problem. Ich habe keine direkte Lösung gefunden, sondern stattdessen eine Lambda-Funktion verwendet, um eine Verbindung zu einem EC2-Server mithilfe von socket.io herzustellen, was ziemlich einfach ist und ein Ereignis an diesen EC2-Server sendet.
Nach Erhalt des Ereignisses durch den EC2-Server hat er die erforderliche Redis-Aufgabe (Datenbankbereinigung nach Erstellung der Miniaturansicht der Bilder) ausgeführt.
Hoffe das hilft! Wenn jemand herausfindet, wie man sich direkt von Lambda aus mit ElastiCache verbindet, würde ich trotzdem gerne wissen!
Ich habe versucht, Lambda mit Memcached-Gummiband zu verbinden, und es funktioniert gut. Redis sollte auch machbar sein.
Ein paar Dinge zu beachten: