Я хочу скачать файл с s3 и сохранить его в папке tmp моей лямбды. Но я обнаружил странную и неожиданную ошибку, которая сводит меня с ума: OverflowError: отметка времени слишком велика для преобразования в C _PyTime_t
Вот мой код, я что-то пропустил?
s3 = boto3.resource('s3')
bucket_name = 'my_bucket'
keys = ['private.pkcs8', 'public.pubkey']
for key in keys:
try:
local_file_name = 'tmp/' + key
s3.Bucket(bucket_name).download_file(key, local_file_name)
except botocore.exceptions.ClientError as e:
if e.response['Error']['Code'] == "404":
continue
else:
raise
У меня та же ошибка при получении s3, что и у клиента, а не у ресурса. С другим журналом, я мог бы проверить, что ошибка приходит с функцией «download_file».
Пожалуйста, помогите мне !!!
РЕДАКТИРОВАТЬ: полный стек трассировки ошибки
14: 04: 36 [ОШИБКА] 2020-02-18T14: 04: 36.104Z f8f5aef0-18a3-41d0-951f-4d979fb24aa4 Слишком большая временная метка для преобразования в C _PyTime_t 14:04:36 Traceback (самая последняя последний вызов): 14:04:36 Файл "/opt/python/boto3/s3/inject.py", строка 172, в файле загрузки 14:04:36 extra_args = ExtraArgs, callback = Callback) 14:04:36 Файл «/opt/python/boto3/s3/transfer.py», строка 307, в файле загрузки 14:04:36 future.result () 14:04:36 Файл «/opt/python/s3transfer/futures.py», строка 106, в результате 14:04:36 return self._coordinator.result () 14:04:36 Файл "/opt/python/s3transfer/futures.py", строка 265, в результате 14:04:36 повысить self._exception 14:04:36 Файл "/opt/python/s3transfer/tasks.py", строка 255, в _main 14:04:36 self._submit (Transfer_future = Transfer_future, ** kwargs) 14:04:36 Файл "/ opt / python / s3transfer / download.py ", lin 343, в _submit 14:04:36 ** ._make_api_call (имя_операции, kwargs) 14:04:36 Файл "/opt/python/botocore/client.py", строка 586, в _make_api_call 14:04:36 повышает уровень ошибки (класс parsed_response, имя_операции) 14:04:36 botocore. exceptions.ClientError: Произошла ошибка (400) при вызове операции HeadObject: неверный запрос 14:04:36 Во время обработки вышеупомянутого исключения произошло другое исключение: 14:04:36 Трассировка (последний последний вызов): 14:04 : 36 Файл "/var/task/lb_get_tlb_connection_token_rds.py", строка 181, в lambda_handler 14:04:36 bucket.download_file (ключ, local_file_name, ExtraArgs = {'VersionId': 'foo'}) 14:04:36 File "/opt/python/boto3/s3/inject.py", строка 246, в файле bucket_download_file 14:04:36 ExtraArgs = ExtraArgs, Callback = Callback, Config = Config) 14:04:36 Файл "/ opt / python / boto3 /s3/inject.py ", строка 172, в файле загрузки 14:04:36 extra_args = ExtraArgs , callback = Callback) 14:04:36 Файл "/opt/python/boto3/s3/transfer.py", строка 325, в выход 14:04:36 self._manager. выход (* аргументы) 14:04:36 Файл "/opt/python/s3transfer/manager.py", строка 539, в выход 14:04:36 self._shutdown (отменить, cancel_msg) , cancel_exc_type) 14:04:36 Файл "/opt/python/s3transfer/manager.py", строка 578, в _shutdown 14:04:36 self._submission_executor.shutdown () 14:04:36 Файл "/ opt / python / s3transfer / futures.py ", строка 474, в закрытом состоянии 14:04:36 self._executor.shutdown (wait) 14:04:36 Файл" /opt/python/concurrent/futures/thread.py ", строка 169 , в выключенном состоянии 14:04:36 t.join (sys.maxsize) 14:04:36 Файл "/var/lang/lib/python3.7/threading.py", строка 1048, в соединении 14:04: 36 self._wait_for_tstate_lock (timeout = max (timeout, 0)) 14:04:36 Файл "/var/lang/lib/python3.7/threading.py", строка 1060, в _wait_for_tstate_lock 14:04:36 elif lock.acquire (block, timeout): 14:04:36 OverflowError: отметка времени слишком велика для преобразования в C _PyTime_t