PythonでDynamoDBの例外処理をする。
ソースコード
Main.py
from botocore.exceptions import ClientError
if __name__ == '__main__':
try:
table = boto3.resource('dynamodb').Table('TableName')
# DynamoDBからのエラーが発生するコードをここに書く
except ClientError as e:
print(e)
print(e.response['Error']['Message']) # エラーメッセージ
print(e.response['Error']['Code']) # エラーコード(Exceptionの種類を示す文字列)
print(e.response['ResponseMetadata']['RequestId'])
print(e.response['ResponseMetadata']['HTTPStatusCode']) # ステータスコード
print(e.response['ResponseMetadata']['HTTPHeaders']['server'])
print(e.response['ResponseMetadata']['HTTPHeaders']['date'])
print(e.response['ResponseMetadata']['HTTPHeaders']['content-type'])
print(e.response['ResponseMetadata']['HTTPHeaders']['content-length'])
print(e.response['ResponseMetadata']['HTTPHeaders']['connection'])
print(e.response['ResponseMetadata']['HTTPHeaders']['x-amzn-requestid'])
print(e.response['ResponseMetadata']['HTTPHeaders']['x-amz-crc32'])
print(e.response['ResponseMetadata']['RetryAttempts'])
from botocore.exceptions import ClientError
if __name__ == '__main__':
try:
table = boto3.resource('dynamodb').Table('TableName')
# DynamoDBからのエラーが発生するコードをここに書く
except ClientError as e:
print(e)
print(e.response['Error']['Message']) # エラーメッセージ
print(e.response['Error']['Code']) # エラーコード(Exceptionの種類を示す文字列)
print(e.response['ResponseMetadata']['RequestId'])
print(e.response['ResponseMetadata']['HTTPStatusCode']) # ステータスコード
print(e.response['ResponseMetadata']['HTTPHeaders']['server'])
print(e.response['ResponseMetadata']['HTTPHeaders']['date'])
print(e.response['ResponseMetadata']['HTTPHeaders']['content-type'])
print(e.response['ResponseMetadata']['HTTPHeaders']['content-length'])
print(e.response['ResponseMetadata']['HTTPHeaders']['connection'])
print(e.response['ResponseMetadata']['HTTPHeaders']['x-amzn-requestid'])
print(e.response['ResponseMetadata']['HTTPHeaders']['x-amz-crc32'])
print(e.response['ResponseMetadata']['RetryAttempts'])
※S3にもエラーメッセージ、エラーコード、ステータスコードは使用できます。
実行結果(例)
※接続情報などは*****でマスキングしています。
An error occurred (ValidationException) when calling the UpdateItem operation: Invalid UpdateExpression: An expression attribute value used in expression is not defined; attribute value: :val
Invalid UpdateExpression: An expression attribute value used in expression is not defined; attribute value: :val
ValidationException
****************
400
Server
Thu, 17 May 2018 03:58:39 GMT
application/x-amz-json-1.0
***
keep-alive
****************
*****
0
この記事を書いた理由
HTTPStatusCodeを取得するためにネットで検索した際、
下記のStackoverflowに英語で例外処理が書いてありましたが、見つけにくかったので。
https://stackoverflow.com/questions/33068055/boto3-python-and-how-to-handle-errors
付録:EclipseでPythonを書く際の便利なショートカットキー
Ctrl + 1
※「F1」ではなく「1」
Eclipseでコンパイルエラーが発生した時、
そのエラー箇所にカーソルを当ててこのショートカットを使うと
根本原因のソースコードにカーソルが当たったり、
解決策が表示され、クリックすると自動で修正してくれたりします。
Author And Source
この問題について(PythonでDynamoDBの例外処理をする。), 我々は、より多くの情報をここで見つけました https://qiita.com/ffstarter/items/ecb63c19f8c62cc01941著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .