Skip to main content

ASGI S3 storage

Project description

asgi-s3

Package version Build Status

Staticfile management tools and ASGI middleware support for Amazon S3.

Work in Progress: A lot of what is here currently will be changing.

CLI

s3 sync

...todo

Middleware

The middleware is designed to work with any ASGI application. Here is raw ASGI example:

from asgi_s3.middleware import S3StorageMiddleware

async def app(scope, receive, send):
    url_for = scope["asgi_s3"]["url_for"]
    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="{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="my-bucket",
    static_dir="path/to/static/files",
)

And here is an example using Starlette:

from starlette.applications import Starlette
from starlette.templating import Jinja2Templates

from asgi_s3.middleware import S3StorageMiddleware

templates = Jinja2Templates("templates")
app = Starlette()

@app.route("/")
def homepage(request):
    s3_url_for = request.scope["asgi_s3"]["s3_url_for"]
    return templates.TemplateResponse(
        "index.html", {"request": request, "s3_url_for": s3_url_for}
    )


app.add_middleware(
    S3StorageMiddleware,
    bucket_name="my-bucket",
    static_dir="path/to/static/files",
)

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

asgi-s3-0.0.1.tar.gz (4.5 kB view details)

Uploaded Source

File details

Details for the file asgi-s3-0.0.1.tar.gz.

File metadata

  • Download URL: asgi-s3-0.0.1.tar.gz
  • Upload date:
  • Size: 4.5 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

Hashes for asgi-s3-0.0.1.tar.gz
Algorithm Hash digest
SHA256 88d016026c524f11c8c2d6147b442b0117b04fd024821a409d1e68c5b1b6ceac
MD5 0384069b9d6121e8bf346e828c7aa183
BLAKE2b-256 46387b0767f52c3b1a4c90b85022392909d5f0b004f8d884f616e8312c48df17

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