Skip to main content

AWS utils for lambda

Project description

AWS utils for lambda

boto3version pythonversion

  • Wrapper for Boto3
  • Handles Exceptions gracefully and returns structured response
  • Can be used in lambda layers along with boto3 package

Install

pip install -U aws-utils-for-lambda

Request

import aws_utils
aws_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 works

AWS-boto-wrapper-2

Edit diagram link

Currently supported

  • S3
    • upload_file
    • get_object
  • DynamoDB
    • get_item
    • put_item

Example 1

Get S3 object - request:

import aws_utils
response = 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 2

Get S3 object - request:

import aws_utils
response = 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\n    full_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\n    return 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\n    raise 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\n    full_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\n    return 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\n    raise 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']
}

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distributions

No source distribution files available for this release.See tutorial on generating distribution archives.

Built Distribution

aws_utils_for_lambda-1.0.3-py3-none-any.whl (8.7 kB view details)

Uploaded Python 3

File details

Details for the file aws_utils_for_lambda-1.0.3-py3-none-any.whl.

File metadata

  • Download URL: aws_utils_for_lambda-1.0.3-py3-none-any.whl
  • Upload date:
  • Size: 8.7 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/1.13.0 pkginfo/1.5.0.1 requests/2.22.0 setuptools/41.0.1 requests-toolbelt/0.9.1 tqdm/4.32.1 CPython/3.7.2

File hashes

Hashes for aws_utils_for_lambda-1.0.3-py3-none-any.whl
Algorithm Hash digest
SHA256 9834b773b8324e3807962ec865d07442b7e496acfe1c2dc239be009e6fff522f
MD5 a269943295f6593ed9d3dc6d0ebd6fe4
BLAKE2b-256 fecae3045f82a4c78e3d18dd8cabd8ce18787b97dce8e1de58f32da15126f383

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page