У меня есть инфраструктура, состоящая из следующих сервисов в VPC (кроме S3 и Transcoder, очевидно):
- EC2 (веб-сервер)
- RDS (база данных)
- Лямбда-функция с Node.js
- S3
- Эластичный транскодер
Сценарий следующий:
- пользователь загружает видео в корзину S3 напрямую
- загрузка запускает лямбда-функцию, которая создает новое задание в эластичном транскодере (с использованием AWS SDK) и обновляет строку ресурса в базе данных (RDS).
Проблема в том, что, поскольку RDS не является общедоступным, лямбда должна находиться в том же VPC, что и RDS, чтобы разрешить подключения к нему. Это также приводит к общей потере интернет-соединения в лямбда-функции, что означает, что он не может получить доступ к эластичному транскодеру (поскольку он вне VPC с точки зрения VPC). Теперь у меня была аналогичная проблема с S3, но это было довольно легко решить, добавив конечную точку к VPC, которая указывает на S3, однако такой опции нет для Elastic Transcoder (или любой другой службы на самом деле).
Я не хочу создавать NAT-шлюз, так как это довольно дорого для такой ерунды.
Итак, простой вопрос: как я могу решить, что Lambda может одновременно взаимодействовать с RDS и Elastic Transcoder?
P.S .: Лямбда-роль содержит политику, которая имеет доступ к *Job
эластичного транскодера.