Публикация информации из Alexa Skill в базу данных PostgreSQL с использованием AWS? - PullRequest
0 голосов
/ 08 января 2020

Мне было поручено создать навык Alexa, который принимает команды для чтения API Reddit, возвращает ответы и затем отправляет информацию о сеансе в базу данных. До сих пор у меня было это, где я могу получить ответ при тестировании навыка Alexa, и у меня есть полезная информация, которую я хочу опубликовать в своей базе данных PostgreSQL. Я просто не уверен, как сделать так, чтобы эта полезная нагрузка автоматически публиковалась. У меня есть JDB C ссылка на базу данных PostgreSQL. Я думаю, что мне нужно будет использовать API Gateway и некоторые Lambdas, но я просто не знаю, как поступить. Я тоже подумываю о переходе на DynamoDB, если это окажется необходимым. Вот ссылка на файл Python:

https://drive.google.com/file/d/1PoF8-B9KgQuJ1-HYa5Sf_dacB_ijcLe-/view?usp=sharing

1 Ответ

0 голосов
/ 11 января 2020

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

Если вы запускаете свою лямбда-функцию в своем собственном VP C (это вариант, который вы можете выбрать из " отредактируйте функцию "больше информации здесь ), тогда вы сможете запустить Postgres дБ в вашем VP C и ограничить группу безопасности локальным трафиком c (что, возможно, слишком допустимо, но это наверное достаточно хорошо). Вы можете сохранить учетные данные базы данных (и, возможно, URI конечной точки базы данных) в диспетчере секретов AWS.

Затем вы можете назначить своей функции роль, которая имеет разрешение на извлечение секрета из диспетчера секретов (и любые другие права доступа AWS, в которых она нуждается), и затем ваша функция при вызове будет извлекать учетные данные базы данных из диспетчера секретов (она может получить URI конечной точки базы данных из диспетчера секретов или она может выполнить вызов descriptionRdsInstances и найти конечную точку базы данных). таким образом), то он немедленно установит соединение, выполнит свои запросы, закроет соединение с БД и отправит свой вывод обратно вызывающей стороне. API-шлюз не должен быть необходим для связи с базой данных таким образом (хотя API-шлюз может быть необходим для предоставления вашей функции Lambda для использования службой Alexa, я не знаю).

Если вы не хотите, чтобы ваша лямбда-функция выполнялась в вашем VP C, вам нужно выяснить пространство IP, в котором лямбда-функции функционируют (я думал, что это было опубликовано, но я не могу найдите его) или откройте свою группу безопасности RDS для всего AWS IP-пространства (что я бы не рекомендовал), найдите совокупность AWS IP-пространства здесь , только адресное пространство EC2 будет быть релевантным.

Однако, если порт к DynamoDb является надежным, вам не нужно вмешиваться в группу безопасности RDS, вы можете просто дать функции правильные разрешения IAM для использования Dynamodb и вашу функцию. сможет добраться до базы данных. Помните о своей частоте запросов, потому что правильное масштабирование кредитов для чтения / записи Dynamodb до уровня, который вас не сломит, является искусством, которое я не освоил.

...