У меня есть класс в функции 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?