Что происходит, когда boto3 client.put_object () не удается? - PullRequest
0 голосов
/ 05 апреля 2019

В документации boto3 для client.put_object () ничего не говорится об обработке ошибок.Мой вопрос: когда эта функция не работает, она всегда вызывает исключение или иногда возвращает значение False или None?

1 Ответ

0 голосов
/ 05 апреля 2019

Краткий ответ: Да, он выдаст класс ошибки botocore.exceptions.ClientError, если вызов API завершится неудачно из-за каких-либо проблем.

Вызов API boto3 s3 put_object вернет объект dict в качестве ответа, если он будет успешным, иначе ничего не будет возвращено.

>>> import boto3

>>>
>>> s3_client = boto3.client('s3')
>>>
>>> s3_response = s3_client.put_object(Bucket='mybucket', Key='/tmp/new-pb.yml')
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "/usr/lib/python2.7/site-packages/botocore/client.py", line 312, in _api_call
    return self._make_api_call(operation_name, kwargs)
  File "/usr/lib/python2.7/site-packages/botocore/client.py", line 601, in _make_api_call
    raise error_class(parsed_response, operation_name)
botocore.exceptions.ClientError: An error occurred (AccessDenied) when calling the PutObject operation: Access Denied
>>>
>>> print s3_response
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
NameError: name 's3_response' is not defined
>>>

Попробуйте вызвать вызов API внутри блока try-Кроме того, когда метод завершается ошибкой, захватывает ClientError, чтобы его можно было безопасно обрабатывать, чтобы избежать неожиданного поведения сценария, если крайние случаи или не охвачены.

Надеюсь, это поможет вам.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...