Package: aws-utils-for-lambda
AWS utils for lambdaWrapper for Boto3Handles Exceptions gracefully and returns structured responseCan be used in lambda layers along with boto3 packageInstallpip install -U aws-utils-for-lambdaRequestimportaws_utilsaws_utils.s3.get_object('bucket_name','test_data.json',output_format='dict')Response (dict){'data':'data','success':True,'output_format':'dict','error':"ClientError",'error_message':'error_message','full_response':'full_response','short_traceback':'short_traceback','full_traceback':'full_traceback'}How it worksEdit diagramlinkCurrently supportedS3upload_fileget_objectDynamoDBget_itemput_itemExample 1Get S3 object - request:importaws_utilsresponse=aws_utils.s3.get_object('bucket_name','test_data.json',output_format='dict')print(response)Get S3 object - response:{'data':'{\n"name": "name",\n"age": "24",\n"country": "India"\n}','success':True,'output_format':'dict','error':None,'error_message':None,'full_response':{'ResponseMetadata':{'RequestId':'xxxxxxxxxxxx','HostId':'xxxxxxxxxxxx','HTTPStatusCode':200,'HTTPHeaders':{'x-amz-id-2':'xxxxxxxxxxxx','x-amz-request-id':'xxxxxxxxxxxx','date':'Sun, 26 May 2019 10:04:23 GMT','last-modified':'Sun, 26 May 2019 10:04:18 GMT','etag':'"xxxxxxxxxxxx"','accept-ranges':'bytes','content-type':'application/json','content-length':'65','server':'AmazonS3'},'RetryAttempts':0},'AcceptRanges':'bytes','LastModified':datetime.datetime(2019,5,26,10,4,18,tzinfo=tzutc()),'ContentLength':65,'ETag':'"xxxxxxxxxxxx"','ContentType':'application/json','Metadata':{},'Body':"<botocore.response.StreamingBodyat0x10591111>"},'short_traceback':None,'full_traceback':None}Example 2Get S3 object - request:importaws_utilsresponse=aws_utils.s3.get_object('bucket_name','test_data.json',output_format='dict')print(response)Get S3 object - response:{'data':None,'success':False,'output_format':'dict','error':'NoSuchKey','error_message':'An error occurred (NoSuchKey) when calling the GetObject operation: The specified key does not exist.','full_response':None,'short_traceback':['  File "/Users/nelsonsequiera/.pyenv/versions/3.7.2/envs/aws_utils_test/lib/python3.7/site-packages/aws_utils/s3.py" line 26, in get_object\nfull_response = s3.meta.client.get_object(Bucket=bucket, Key=file_path)\n','  File "/Users/nelsonsequiera/.pyenv/versions/3.7.2/envs/aws_utils_test/lib/python3.7/site-packages/botocore/client.py", line 357, in _api_call\nreturn self._make_api_call(operation_name, kwargs)\n','  File "/Users/nelsonsequiera/.pyenv/versions/3.7.2/envs/aws_utils_test/lib/python3.7/site-packages/botocore/client.py", line 661, in _make_api_call\nraise error_class(parsed_response, operation_name)\n'],'full_traceback':['Traceback (most recent call last):\n','  File "/Users/nelsonsequiera/.pyenv/versions/3.7.2/envs/aws_utils_test/lib/python3.7/site-packages/aws_utils/s3.py", line 26, in get_object\nfull_response = s3.meta.client.get_object(Bucket=bucket, Key=file_path)\n','  File "/Users/nelsonsequiera/.pyenv/versions/3.7.2/envs/aws_utils_test/lib/python3.7/site-packages/botocore/client.py", line 357, in _api_call\nreturn self._make_api_call(operation_name, kwargs)\n','  File "/Users/nelsonsequiera/.pyenv/versions/3.7.2/envs/aws_utils_test/lib/python3.7/site-packages/botocore/client.py", line 661, in _make_api_call\nraise error_class(parsed_response, operation_name)\n','botocore.errorfactory.NoSuchKey: An error occurred (NoSuchKey) when calling the GetObject operation: The specified key does not exist.\n']}