Как подключить экземпляр RDS при локальном запуске SAM? - PullRequest
0 голосов
/ 21 февраля 2019

Я использую SAM (модель приложения без сервера) для локального тестирования функций Lambda, которые подключаются к экземпляру Aurora RDS в облаке.

С помощью следующей команды:

sam local invoke "lambda function name" --event event.json

Lambdaфункция выполняется, но когда дело доходит до возврата результатов SQL, она возвращает ноль в качестве вывода.

Как настроить контейнер Docker для связи с экземпляром RDS?

1 Ответ

0 голосов
/ 25 февраля 2019

Как упомянуто в справке для локального вызова sam, вы можете подключить ваш Docker-контейнер к существующей сети Docker:

▶ sam local invoke --help                
...
  --docker-network TEXT           Specifies the name or id of an existing
                                  docker network to lambda docker containers
                                  should connect to, along with the default
                                  bridge network. If not specified, the Lambda
                                  containers will only connect to the default
                                  bridge docker network.

Итак, чтобы вывести список сетей Docker:

▶ docker network ls
NETWORK ID          NAME                DRIVER              SCOPE
25a03c8453a6        bridge              bridge              local
00de89cf09d0        host                host                local
41597d91a389        none                null                local

Затем для подключения контейнера Docker вашей функции Lambda к сети хоста:

▶ sam local invoke "lambda function name" --event event.json \
    --docker-network 00de89cf09d0

Обратите внимание, что вы также можете использовать переменную окружения SAM_DOCKER_NETWORK:

▶ SAM_DOCKER_NETWORK=00de89cf09d0 sam local invoke "lambda function name" \
    --event event.json

Как уже упоминалось here .

Предполагая, что хост-сеть может получить доступ к экземпляру RDS, это должно решить вашу проблему.

...