Skip to main content

Hopeit Engine S3 Storage Toolkit

Project description

hopeit.aws.s3 plugin

This library is part of hopeit.engine:

visit: https://github.com/hopeit-git/hopeit.engine

This library provides a ObjectStorage class to store and retrieve @dataobjects and files from S3 and compatible services as a plugin for the popular hopeit.engine reactive microservices framework.

It supports the prefix setting, which is a prefix to be used for every element (object or file) stored in the S3 bucket. This prefix can be used to organize and categorize stored data within the bucket. Additionally, it supports the partition_dateformat setting, which is a date format string used to prefix file names for partitioning saved files into different subfolders based on the event timestamp (event_ts()). For example, using %Y/%m/%d will store each data object in a folder structure like year/month/day/, providing a way to efficiently organize and retrieve data based on date ranges. These settings can be used together to achieve more granular organization of data within the bucket.

Installation

Python library that provides helpers to store and retrieve @dataobjects and files to S3-compatible services

pip install hopeit.aws.s3

Usage

from hopeit.dataobjects import dataobject, dataclass
from hopeit.aws.s3 import ObjectStorage, ObjectStorageSettings, ConnectionConfig

# Create a connection configuration
conn_config = ConnectionConfig(
    aws_access_key_id="your-access-key-id",
    aws_secret_access_key="your-secret-access-key",
    region_name="your-region-name"
)

# Create settings for ObjectStorage
settings = ObjectStorageSettings(
    bucket="your-bucket-name",
    connection_config=conn_config
)

# Create an ObjectStorage instance
storage = ObjectStorage.with_settings(settings)

# Connect to the ObjectStorage
await storage.connect()

# hopeit.engine data object
@dataobject
@dataclass
class Something:
    key: str
    value: str

something = Something(key="my_key", value="some_value")

# Store a data object
await storage.store(key=something.key, value=something)

# Retrieve a data object
retrieved_object = await storage.get(key=something.key, datatype=Something)
print(retrieved_object)

Example Usage

In the apps/examples/aws-example/ directory, you can find a full example hopeit.engine app that demonstrates the usage of the hopeit.aws.s3 plugin within the hopeit.engine framework. This example showcases how to store and retrieve @dataobjects and files from S3 using the ObjectStorage class.

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

hopeit_aws_s3-0.3.0rc0.tar.gz (8.5 kB view details)

Uploaded Source

Built Distribution

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

hopeit_aws_s3-0.3.0rc0-py3-none-any.whl (7.9 kB view details)

Uploaded Python 3

File details

Details for the file hopeit_aws_s3-0.3.0rc0.tar.gz.

File metadata

  • Download URL: hopeit_aws_s3-0.3.0rc0.tar.gz
  • Upload date:
  • Size: 8.5 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.6.4

File hashes

Hashes for hopeit_aws_s3-0.3.0rc0.tar.gz
Algorithm Hash digest
SHA256 7822f50ba900bc586962d296b7afd9c6d8a46423c615d111080a3e646089f059
MD5 0645f9e2b91ee078922b4f16748fc6ae
BLAKE2b-256 81c0bd3e42c2eb8ccd5710e0ee052379c5293b3efc84b227f6b1ae74291e14fa

See more details on using hashes here.

File details

Details for the file hopeit_aws_s3-0.3.0rc0-py3-none-any.whl.

File metadata

File hashes

Hashes for hopeit_aws_s3-0.3.0rc0-py3-none-any.whl
Algorithm Hash digest
SHA256 d25cf5ef2326037bdd53d2be003491fd640912862061f16ae10462072e9c8174
MD5 adcb9d04c6f2c3ecf9bd6a30a55b5644
BLAKE2b-256 b03b6ada3077380a3eae622c6af8917bafec014b607133504bee1b71072cbe01

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