s3minimal
is a Python library designed to simplify interactions with Amazon S3 using the aiobotocore
and botocore
libraries. It provides asynchronous and synchronous classes for various S3 operations.
pip install s3minimal
Initialize the S3
class with your AWS credentials, endpoint URL, and region name.
from s3minimal import S3
s3 = S3(
endpoint_url="https://s3.amazonaws.com",
region_name="us-east-1",
aws_access_key_id="your_access_key",
aws_secret_access_key="your_secret_key",
)
# or if you have environment variables set for your AWS credentials
s3 = S3()
For synchronous operations, you can use the S3Sync
class in a similar manner, and all asynchronous methods described below can be called without await
.
s3.set_bucket("your_bucket_name")
file = await s3.download("path/to/your/file")
with open("path/to/your/local/file", "rb") as f:
file_obj = io.BytesIO(f.read())
await s3.upload("path/to/your/s3/file", file_obj)
await s3.move("path/to/source/file", "path/to/destination/file")
url = await s3.generate_presigned_url("path/to/your/file")
Create a new S3 bucket:
await s3.create_bucket("new_bucket_name")
To set CORS configurations during bucket creation, pass the set_cors
parameter as True
and provide the cors_configuration
:
cors_configuration = {
"CORSRules": [
{
"AllowedHeaders": ["Access-Control-Allow-Origin", "*"],
"AllowedMethods": ["GET", "PUT", "POST", "DELETE", "HEAD"],
"AllowedOrigins": ["*"],
"MaxAgeSeconds": 60,
}
]
}
await s3.create_bucket("new_bucket_name", set_cors=True, cors_configuration=cors_configuration)
files = await s3.list_files("path/in/your/bucket")
This project is licensed under the MIT License - see the LICENSE.md file for details.