webentwicklung-frage-antwort-db.com.de

Stellen Sie über die AWS Lambda-Funktion eine Verbindung zum ElastiCache-Cluster her

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/

39
Mircea Soaica

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

16
greg_diesel

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.

3
Nirmal

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!

1
R.V.d.M

Ich habe versucht, Lambda mit Memcached-Gummiband zu verbinden, und es funktioniert gut. Redis sollte auch machbar sein.

Ein paar Dinge zu beachten:

  1. Lambda und Elasticache müssen in derselben VPC sein.
  2. Wenn Lambda in VPC ausgeführt wird, hat es keinen Zugriff auf das Internet (der Zugriff auf öffentliche APIs funktioniert daher nicht). Dafür ist NATGateway erforderlich.
0
Rssr