Попытка создать динамическое c изображение для сохранения в AWS функции Lamba с использованием python библиотеки matplotlib для навыка alexa - PullRequest
0 голосов
/ 27 мая 2020

У меня есть класс в функции AWS Lamda, используемой консолью разработчика Alexa.

class KenoIntentHandler(AbstractRequestHandler):
    """Handler for Hello World Intent."""
    def can_handle(self, handler_input):
        # type: (HandlerInput) -> bool
        logger.info("Evaluating Address Intent Handler in can_handle function")
        logger.info(ask_utils.request_util.get_intent_name(handler_input))
        return ask_utils.is_intent_name("KenoIntent")(handler_input)



    def handle(self, handler_input):
        url = "http://results.bigredkeno.com/?community=omaha"
        tables_list = pd.io.html.read_html(url)
        results_table = tables_list[1]
        results_table_nogame= results_table
        results_table_nogame = results_table_nogame.drop(columns=[0], axis=1)
        (ball_speech, ball_text,bfdf) = new_ball_bf(results_table_nogame,25)    

        fig, axes = plt.subplots(ncols=1,nrows=1,figsize=(5,5))

        axes.barh(bfdf['Ballmaker'],bfdf['Column2'],color='r',alpha=0.2)

        plt.savefig("/Media/keno.png")

        image_url = create_presigned_url("Media/keno.png")

Когда я пытаюсь вызвать, я получаю следующие ошибки в журналах облачных часов.

2020-05-27T14:04:05.875-05:00
[ERROR] 2020-05-27T19:04:05.836Z    57a93a7a-25bd-414e-bfc6-1310854edbdf    [Errno 2] No such file or directory: '/Media/keno.png'

2020-05-27T14:04:05.875-05:00
Traceback (most recent call last):

2020-05-27T14:04:05.875-05:00
File "/var/task/ask_sdk_runtime/dispatch.py", line 118, in dispatch

2020-05-27T14:04:05.875-05:00
output = self.__dispatch_request(handler_input)  # type: Union[Output, None]

2020-05-27T14:04:05.875-05:00
File "/var/task/ask_sdk_runtime/dispatch.py", line 183, in __dispatch_request

2020-05-27T14:04:05.875-05:00
handler_input=handler_input, handler=request_handler)  # type: Union[Output, None]

2020-05-27T14:04:05.875-05:00
File "/var/task/ask_sdk_runtime/dispatch_components/request_components.py", line 437, in execute

2020-05-27T14:04:05.875-05:00
return handler.handle(handler_input)

2020-05-27T14:04:05.875-05:00
File "/var/task/lambda_function.py", line 78, in handle

2020-05-27T14:04:05.875-05:00
plt.savefig("/Media/keno.png")

2020-05-27T14:04:05.875-05:00
File "/var/task/matplotlib/pyplot.py", line 723, in savefig

2020-05-27T14:04:05.875-05:00
res = fig.savefig(*args, **kwargs)

2020-05-27T14:04:05.875-05:00
File "/var/task/matplotlib/figure.py", line 2203, in savefig

2020-05-27T14:04:05.875-05:00
self.canvas.print_figure(fname, **kwargs)

2020-05-27T14:04:05.875-05:00
File "/var/task/matplotlib/backend_bases.py", line 2105, in print_figure

2020-05-27T14:04:05.875-05:00
**kwargs)

2020-05-27T14:04:05.875-05:00
File "/var/task/matplotlib/backends/backend_agg.py", line 535, in print_png

2020-05-27T14:04:05.875-05:00
with cbook.open_file_cm(filename_or_obj, "wb") as fh:

2020-05-27T14:04:05.875-05:00
File "/var/lang/lib/python3.7/contextlib.py", line 112, in __enter__

2020-05-27T14:04:05.875-05:00
return next(self.gen)

2020-05-27T14:04:05.875-05:00
File "/var/task/matplotlib/cbook/__init__.py", line 418, in open_file_cm

2020-05-27T14:04:05.875-05:00
fh, opened = to_filehandle(path_or_file, mode, True, encoding)

2020-05-27T14:04:05.875-05:00
File "/var/task/matplotlib/cbook/__init__.py", line 403, in to_filehandle

2020-05-27T14:04:05.875-05:00
fh = open(fname, flag, encoding=encoding)

2020-05-27T14:04:05.875-05:00 FileNotFoundError: [Errno 2] No such file or directory: '/Media/keno.png'

Я могу вручную сохранять файлы, загружая их в экземпляр корзины S3, я могу ссылаться на них для использования на карточках, есть идеи, что я делаю неправильно? Мне нужно использовать бото? Если да, то какие-либо примеры записи файла с использованием boto и последующего обращения к нам на указанный файл как на часть карты в навыке Alexa?

...