Краткий ответ: Да, он выдаст класс ошибки 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
, чтобы его можно было безопасно обрабатывать, чтобы избежать неожиданного поведения сценария, если крайние случаи или не охвачены.
Надеюсь, это поможет вам.