Подтвердить что ты не робот

Подключение к кластеру ElastiCache из функции AWS Lambda

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

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

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


ОБНОВЛЕНИЕ (09 октября 2015 г.):

Amazon объявила VPC для функций AWMS Lambda. Подробности здесь

Это означает, что теперь мы можем получить доступ к любому ресурсу в 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/

4b9b3361

Ответ 1

Чтобы развернуть комментарий @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 не может напрямую подключиться к кластеру эластичности.
Вы должны использовать ec2 в качестве прокси.  Вы можете настроить простой HTTP_proxy на одном из ваших экземпляров или выполнить переадресацию портов как с DNAT, так и с SNAT, как описано в этом ответе https://serverfault.com/a/586553

Ответ 2

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

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

Самый лучший и удобный способ - установить twemproxy на машине EC2 и перенаправить ваши запросы через него. В качестве бонуса вы неожиданно развернули фантастическую стратегию осколков.

Ответ 3

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

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

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