Flask-ASK & Amazon S3 - PullRequest
       36

Flask-ASK & Amazon S3

0 голосов
/ 13 мая 2018

Попытка развернуть навык Alexa. Я использовал node.js для развертывания навыков раньше, но никогда не использовал python. Я использовал инфраструктуру Flask-ASK для разработки кода и протестировал с использованием HTTPS enpoint и ngrok. Тестирование кода прошло успешно, поэтому я пытаюсь развернуть. Я следовал инструкциям AWS по архивированию файлов и зависимостей python в одну корневую папку и архивирование только содержимого, а не самой папки. Файл .zip слишком велик для того, чтобы я мог загрузить его непосредственно в lamda (16,1 МБ - время загрузки увеличено), поэтому я пытаюсь использовать облачные сервисы Amazon S3. Это очень просто, так что я не думаю, что делаю какие-либо ошибки в этом отношении. Создал мое ведро и загрузил мой почтовый индекс. Введите путь в лямбду. На следующем шаге я не уверен, что правильно / неправильно. Мне нужно определить lambda_handler. Мой единственный скрипт Python, который был отредактирован и создан мной, называется main .py -> main .lambda_handler. Я предполагаю, что { Как добавить библиотеки Python в Лямбда-функция AWS для Alexa? }. Alexa Developer Portal настроен правильно для идентификатора лямбда-функции. Я сохраняю это, создаю функцию, переключаюсь на тестирование, вызываю навык и получаю сообщение «Была проблема ... и т. Д.» ответ.

Показать корневой каталог для zip (папка просто распакована, чтобы показать предварительный просмотр содержимого) - main .py файл и зависимости находятся на одном уровне папок Show's root directory for zip (folder is just unzipped to show preview of contents) -- __main__.py file & dependences are on same folder level

Показывает путь S3 и имя загрузки (на самом деле оно было загружено - я просто взял фотографию, прежде чем загрузить новую версию) Shows developer console settings[![][2]

Показывает настройки консоли разработчика Shows S3 path and upload name (it was actually uploaded - I just grabbed the picture before I uploaded a new version)[![][3]

1 Ответ

0 голосов
/ 30 июля 2018

Проблема была с разрешениями.Найти ее было очень сложно, но роли IAM требуются разрешения на чтение из S3 (я только дал ей полный доступ к S3, но вы можете ограничить чтение)

  1. Перейдите на console.aws.amazon.com -> Логин
  2. Прокрутите до пункта Безопасность, идентификация и соответствие
  3. Выберите IAM -> Роли (в левой части окна)
  4. Создать роль -> выберите Lambda в качествеСервис AWS, который будет использовать роль
  5. Присоединить разрешения для S3 -> Добавить и AWSLambdaExecute и одно из следующего: AmazonS3ReadOnlyAccess или AmazonS3FullAccess
  6. Назовите роль
  7. Переключитесь наЛямбда-консоль и использование этой роли для лямбда-функции

Прошло несколько месяцев с тех пор, как я это сделал.Итак, дайте мне знать, если это не сработает для вас, и я вернусь к документации позже.Но, насколько я помню, это должно быть то, что тебе нужно.

...