Skip to main content

A Python package for AWS S3 utilities

Project description

PYAWS_S3

Description

S3Client is a Python class that simplifies interaction with AWS S3 for uploading, downloading, managing, and deleting files. It supports uploading images, DataFrames, PDFs, generating pre-signed URLs, downloading files, listing files, and deleting individual files.

Installation

Make sure you have installed:

pip install pyaws_s3

Env Variables

Make sure to add these environment variables:

AWS_ACCESS_KEY_ID=<Your Access Key Id>
AWS_SECRET_ACCESS_KEY=<Your Secret Access Key>
AWS_REGION=<Your Region>
AWS_BUCKET_NAME=<Your Bucket Name>

Usage

Initialization

You can initialize the class by passing AWS credentials as parameters or via environment variables:

from s3_client import S3Client

s3 = S3Client(
    aws_access_key_id=os.getenv("AWS_ACCESS_KEY_ID"),
    aws_secret_access_key=os.getenv("AWS_SECRET_ACCESS_KEY"),
    region_name=os.getenv("AWS_REGION"),
    bucket_name=os.getenv("AWS_BUCKET_NAME")
)

Main Methods

1. upload_image(fig, object_name, format_file=Literal["png", "jpeg", "svg", "html"])

Uploads a figure (e.g., Matplotlib or Plotly) to S3 as an image (svg, png, jpeg, html).

url = s3.upload_image(fig, "folder/image.svg", format_file="svg")

2. upload_from_dataframe(df, object_name, format_file=Literal["xlsx", "csv", "pdf"])

Uploads a DataFrame to S3 as an Excel, CSV, or PDF file.

url = s3.upload_from_dataframe(df, "folder/data", format_file="csv")

3. upload_to_pdf(text, object_name)

Exports text to PDF and uploads it to S3.

url = s3.upload_to_pdf("Text to export", "folder/file.pdf")

4. await delete_all(filter=None)

Deletes all files from the bucket, optionally filtering by name.

import asyncio
await s3.delete_all(filter="your_filter")

5. download(object_name, local_path=None, stream=False)

Downloads a file from the S3 bucket.

  • object_name (str): The name of the S3 object to download.
  • local_path (str, optional): Local path to save the downloaded file. Required if stream is False.
  • stream (bool, optional): If True, returns the file content as bytes instead of saving locally.

Examples:

Download and save locally:

local_path = s3.download("folder/image.svg", local_path="downloads/")

Download as bytes (stream):

file_bytes = s3.download("folder/image.svg", stream=True)

6. list_files(filter=None) -> list[str]

Lists all files in the S3 bucket, optionally filtered by a substring.

  • filter (str, optional): Only files containing this substring will be listed.

Example:

files = s3.list_files(filter="folder/")

7. delete_file(object_name)

Deletes a single file from the S3 bucket.

  • object_name (str): The name of the S3 object to delete.

Example:

s3.delete_file("folder/image.svg")

Notes

  • All upload methods return a pre-signed URL for downloading the file.
  • Integrated error handling with logging.
  • For uploading images and DataFrames, utility functions are required (bytes_from_figure, html_from_figure).

Complete Example

import matplotlib.pyplot as plt
import pandas as pd

fig, ax = plt.subplots()
ax.plot([1, 2, 3], [4, 5, 6])

df = pd.DataFrame({"a": [1, 2], "b": [3, 4]})

s3 = S3Client(bucket_name="my-bucket")
img_url = s3.upload_image(fig, "test.svg")
df_url = s3.upload_from_dataframe(df, "mydata")
pdf_url = s3.upload_to_pdf("Hello PDF", "hello.pdf")

# Download a file
local_path = s3.download("test.svg", local_path="downloads/test.svg")

# List files
files = s3.list_files()

# Delete a file
s3.delete_file("test.svg")

Project details


Download files

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

Source Distribution

pyaws_s3-1.0.13.tar.gz (9.8 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

pyaws_s3-1.0.13-py3-none-any.whl (8.2 kB view details)

Uploaded Python 3

File details

Details for the file pyaws_s3-1.0.13.tar.gz.

File metadata

  • Download URL: pyaws_s3-1.0.13.tar.gz
  • Upload date:
  • Size: 9.8 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.12.2

File hashes

Hashes for pyaws_s3-1.0.13.tar.gz
Algorithm Hash digest
SHA256 a1cad89b5c719380fc3c9e2083c3c290d553bb35f578c255892dda90ccf5d950
MD5 4df1521e7ddc561b5379e8b79f020baf
BLAKE2b-256 768fadac8a042526f262746f9d7a67ac888ebc073ab7df5ea45e0d38b5fe3a9e

See more details on using hashes here.

File details

Details for the file pyaws_s3-1.0.13-py3-none-any.whl.

File metadata

  • Download URL: pyaws_s3-1.0.13-py3-none-any.whl
  • Upload date:
  • Size: 8.2 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.12.2

File hashes

Hashes for pyaws_s3-1.0.13-py3-none-any.whl
Algorithm Hash digest
SHA256 52044063fce4f9bdf972508817501df06dc7c91c960e4946d65ff58b6d3e8108
MD5 d4adf9350707263a8110b09bf8f28eb1
BLAKE2b-256 35545f8fa953df4c0a62e7b6065c2d6680f85175f60aafe663d132013dfaed89

See more details on using hashes here.

Supported by

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