2015-01-03 6 views
34

Можно ли подключиться от функции AWS Lambda к кластеру Redis ElastiCache?Подключиться к кластеру ElastiCache от функции AWS Lambda

Я не могу понять, является ли это проблемой конфигурации, или это просто невозможно.

PS: Я сделал тест из экземпляра EC2, и я могу подключиться к узлу Redis. Также функция Лямбда и узел Redis находятся в одном регионе.


UPDATE (9 октября 2015):

Amazon объявил VPC для функций AWS лямбда. Details here

Это означает, что теперь мы можем получить доступ к любому ресурсу в AWS за группой безопасности VPC, включая машины ElastiCache и RDS.

ОБНОВЛЕНИЕ (11 февраля 2016 года): Amazon запустил VPC для AWS Lambda.

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

+0

Нет технических ограничений для подключения Lambda к внешней службе. Если вы используете сторонние библиотеки, вы должны включить их в свой ZIP-файл, и эти библиотеки должны работать в Linux. Можете ли вы дать образец кода и сообщение об ошибке? У вашего вопроса недостаточно элемента, чтобы помочь вам –

+1

Я знаю, что Lambda может подключаться к внешним сервисам. Вопрос в том, позволяет ли ElastiCache подключать Лямбда-функции к своим кластерам. –

+2

Если ваши группы безопасности настроены правильно, нет никакой разницы с точкой зрения Elastic Cache. Это просто обычное TCP-соединение - нет никакой разницы в соединении, исходящем от Lambda или любой другой службы. –

ответ

12

Чтобы расширить @ комментарий RohitChatterjee здесь является полная цитата из AWS документации на http://docs.aws.amazon.com/AmazonElastiCache/latest/UserGuide/GettingStarted.AuthorizeAccess.html

"Все ElastiCache кластеры могут быть доступны только из экземпляра Amazon EC2. Кластерный и связанный с ним экземпляр Amazon EC2 должен быть в том же виртуальном частном облаке Amazon (VPC). Если вы должны получить доступ к кластеру ElastiCache где-то, кроме экземпляра Amazon EC2 в том же VPC, в качестве обходного пути вы можете настроить один или несколько хостов Amazon EC2 внутри VPC кэша, чтобы выступать в качестве прокси для внешнего мира. Настройка хоста добавляет дополнительный сетевой перехват или дополнительные служебные данные Secure Sockets Layer (SSL) и стоимость, или и то, и другое. затраты невелики для многих случаев использования. Вы должны предоставить прокси Amazon EC2 доступ экземпляра к кластеру.»

Так нет AWS Lambda не может напрямую подключаться к elasticache кластера.
Вы должны использовать EC2 в качестве прокси-сервера. Вы можете либо установку простой HTTP_PROXY на один из экземпляров или сделать перенаправление портов с обеих DNAT и SNAT, например, как описано в этом ответе https://serverfault.com/a/586553

+5

Начиная с февраля 2016 года AWS объявила о выпуске [VPC for Lambda] (https://aws.amazon.com/about-aws/whats-new/2016/02/access-resources-within-a-vpc-using-aws -lambda /). –

1

я испытывал тот же вопрос. Я не нашел прямого решения, но вместо этого использовал функцию Lambda для подключения к серверу EC2 с использованием socket.io, который был довольно простым и выбрал событие для этого сервера EC2.

Когда сервер EC2 получил событие, он выполнил нужную задачу Redis (очистка базы данных после генерации миниатюр изображений).

Надеюсь, это поможет! Если кто-нибудь узнает, как напрямую подключиться к ElastiCache от Lambda, мне все равно хотелось бы знать!

3

Настройка HTTP-прокси или IPTables не будет работать по следующим причинам:

Redis звонки не HTTP и не будут обрабатываться HTTP-прокси. iptables (или любой порт пересылка по этому вопросу) либо не будет принимать доменное имя в качестве адресата, либо будет крайне неэффективной из-за необходимости разрешения DNS каждый раз.

Лучшим и удобным способом является установка twemproxy в машину EC2 и направление ваших запросов через него. В качестве бонуса вы внезапно развернули фантастическую стратегию осколков.

Смежные вопросы