Я пытаюсь получить объект из S3, используя boto3, следующим образом:
s3 = boto3.resource('s3')
streaming_body = s3.Object(bucket_name=s3bucket,
key=documentPath
)
body = {}
body['filename'] = documentName
body['file'] = streaming_body.get()['Body'].read()
Это прекрасно работает на моей локальной машине в PyCharm.Однако, когда я загружаю в Lambda и выполняю вызов API, возвращается следующая ошибка:
Traceback (most recent call last):
'File "/var/task/s3getdocument.py", line 73, in lambda_handler
body['file'] = streaming_body.get()['Body'].read()
File "/opt/python/lib/python3.7/site-packages/boto3/resources/factory.py", line 520, in do_action
response = action(self, *args, **kwargs)
File "/opt/python/lib/python3.7/site-packages/boto3/resources/action.py", line 83, in __call__
response = getattr(parent.meta.client, operation_name)(**params)
File "/opt/python/lib/python3.7/site-packages/botocore/client.py", line 357, in _api_call
return self._make_api_call(operation_name, kwargs)
File "/opt/python/lib/python3.7/site-packages/botocore/client.py", line 648, in _make_api_call
operation_model, request_dict, request_context)
File "/opt/python/lib/python3.7/site-packages/botocore/client.py", line 667, in _make_request
return self._endpoint.make_request(operation_model, request_dict)
File "/opt/python/lib/python3.7/site-packages/botocore/endpoint.py", line 102, in make_request
return self._send_request(request_dict, operation_model)
File "/opt/python/lib/python3.7/site-packages/botocore/endpoint.py", line 135, in _send_request
request, operation_model, context)
File "/opt/python/lib/python3.7/site-packages/botocore/endpoint.py", line 167, in _get_response
request, operation_model)
File "/opt/python/lib/python3.7/site-packages/botocore/endpoint.py", line 218, in _do_get_response
response_dict, operation_model.output_shape)
File "/opt/python/lib/python3.7/site-packages/botocore/parsers.py", line 242, in parse
parsed = self._do_parse(response, shape)
File "/opt/python/lib/python3.7/site-packages/botocore/parsers.py", line 774, in _do_parse
member_shapes, final_parsed)
File "/opt/python/lib/python3.7/site-packages/botocore/parsers.py", line 833, in _parse_non_payload_attrs
member_shape, headers[header_name])
File "/opt/python/lib/python3.7/site-packages/botocore/parsers.py", line 302, in _parse_shape
return handler(shape, node)
File "/opt/python/lib/python3.7/site-packages/botocore/parsers.py", line 175, in _get_text_content
return func(self, shape, text)
File "/opt/python/lib/python3.7/site-packages/botocore/parsers.py", line 462, in _handle_timestamp
return self._timestamp_parser(text)
File "/opt/python/lib/python3.7/site-packages/botocore/utils.py", line 567, in parse_timestamp
return dateutil.parser.parse(value, tzinfos={'GMT': tzutc()})
File "/opt/python/lib/python3.7/site-packages/dateutil/parser/_parser.py", line 1358, in parse
return DEFAULTPARSER.parse(timestr, **kwargs)
File "/opt/python/lib/python3.7/site-packages/dateutil/parser/_parser.py", line 657, in parse
ret = self._build_tzaware(ret, res, tzinfos)
File "/opt/python/lib/python3.7/site-packages/dateutil/parser/_parser.py", line 1175, in _build_tzaware
aware = self._assign_tzname(aware, res.tzname)
File "/opt/python/lib/python3.7/site-packages/dateutil/parser/_parser.py", line 1238, in _assign_tzname
new_dt = tz.enfold(dt, fold=1)
AttributeError: module 'dateutil.tz' has no attribute 'enfold
Все модули в лямбда-версиях имеют те же версии, что и на моем локальном компьютере.Я использую последнюю версию boto3 и botocore на сегодняшний день (5/30).
Любой совет о том, какая разница может быть причиной этого?