ASGI S3 storage
Project description
asgi-s3
Static file management tools and ASGI middleware support for Amazon S3.
Work in Progress: A lot of what is here currently will be changing, not recommended for any serious usage at this point.
Requirements: Python 3.6+
Installation
pip install asgi-s3
...but you probably just want to clone the master
branch for the moment.
CLI
s3 create-bucket Create a new S3 bucket.
s3 list-buckets List all S3 buckets.
s3 sync-bucket Sync a bucket with a local static file directory.
...todo
Middleware
The middleware is designed to work with any ASGI application. Here is raw ASGI example:
from asgi_s3.middleware import S3StorageMiddleware, s3_url_for
AWS_ACCESS_KEY_ID = "access-key-id"
AWS_SECRET_ACCESS_KEY = "secret-access-key"
BUCKET_NAME = "my-bucket"
REGION_NAME = "region-name"
STATIC_DIR = "path/to/static/files"
async def app(scope, receive, send):
await send(
{
"type": "http.response.start",
"status": 200,
"headers": [[b"content-type", b"text/html; charset=utf-8"]],
}
)
html_content = f"""
<!DOCTYPE html>
<html>
<head>
<title>ASGI S3 example</title>
<link rel="stylesheet" href="{s3_url_for('style.css')}">
</head>
<body>
Hello, world.
</body>
</html>
"""
await send({"type": "http.response.body", "body": html_content.encode()})
app = S3StorageMiddleware(
app,
bucket_name=BUCKET_NAME,
static_dir=STATIC_DIR,
region_name=REGION_NAME,
aws_access_key_id=AWS_ACCESS_KEY_ID,
aws_secret_access_key=AWS_SECRET_ACCESS_KEY,
)
And here is an example using Starlette:
from starlette.applications import Starlette
from starlette.templating import Jinja2Templates
from asgi_s3.middleware import S3StorageMiddleware, s3_url_for
templates = Jinja2Templates("templates")
app = Starlette()
@app.route("/")
def homepage(request):
return templates.TemplateResponse(
"index.html", {"request": request, "s3_url_for": s3_url_for}
)
AWS_ACCESS_KEY_ID = "access-key-id"
AWS_SECRET_ACCESS_KEY = "secret-access-key"
BUCKET_NAME = "my-bucket"
REGION_NAME = "region-name"
STATIC_DIR = "path/to/static/files"
app.add_middleware(
S3StorageMiddleware,
bucket_name=BUCKET_NAME,
static_dir=STATIC_DIR,
region_name=REGION_NAME,
aws_access_key_id=AWS_ACCESS_KEY_ID,
aws_secret_access_key=AWS_SECRET_ACCESS_KEY,
)
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
asgi-s3-0.0.3.tar.gz
(6.7 kB
view details)
File details
Details for the file asgi-s3-0.0.3.tar.gz
.
File metadata
- Download URL: asgi-s3-0.0.3.tar.gz
- Upload date:
- Size: 6.7 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/1.13.0 pkginfo/1.5.0.1 requests/2.22.0 setuptools/40.6.2 requests-toolbelt/0.9.1 tqdm/4.32.2 CPython/3.6.8rc1
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | fb6c3dbf83136b9f424d63a75ae66218349c2fc217a7e3dcdf73c69931bbf4c3 |
|
MD5 | 8f369f72a2dcf1d846f3bc9557e43e3e |
|
BLAKE2b-256 | c3ddae950e795429cf1b1c2693edbf77400a64387fe8271c02e56ebee18758f8 |