Skip to main content

Build API with ASGI in AWS Lambda with API Gateway HTTP API or REST API, or with Function URL ✨

Project description

asgi-aws

logo

Test

Build API with ASGI in AWS Lambda with API Gateway HTTP API or REST API, or with Function URL ✨

Installation

pip install asgi_aws

Example

  • Create a file main.py with:
from asgi_aws import Asgi
from typing import Optional
from fastapi import FastAPI

app = FastAPI()

@app.get("/")
def read_root():
    return {"Hello": "World"}

@app.get("/items/{item_id}")
def read_item(item_id: int, q: Optional[str] = None):
    return {"item_id": item_id, "q": q}

entry_point = Asgi.entry_point(app)

Deploy it

  • Let's create for example a yaml file with the following content:
AWSTemplateFormatVersion: "2010-09-09"
Transform: AWS::Serverless-2016-10-31

Resources:
  ExFunctionUrlAPI:
    Type: AWS::Serverless::Function
    Properties:
      Runtime: python3.10
      CodeUri: src/
      Handler: main.entry_point
      MemorySize: 256
      Timeout: 30
      FunctionUrlConfig:
        AuthType: NONE
  • Now, we can deploy the function with the following command:
# deploy HTTP API
sam build -t api.yaml --use-container
sam run deploy

Note: You can also deploy the function under Deployment for Rest API or with a Function URL.

Development 🚧

Setup environment 📦

You should create a virtual environment and activate it:

python -m venv venv/
source venv/bin/activate

And then install the development dependencies:

# Install dependencies
pip install -e .[test,lint]

Run tests 🌝

You can run all the tests with:

bash scripts/test.sh

Format the code 🍂

Execute the following command to apply pre-commit formatting:

bash scripts/format.sh

Execute the following command to apply mypy type checking:

bash scripts/lint.sh

License

This project is licensed under the terms of the MIT license.

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_aws-2.0.0.tar.gz (71.0 kB view details)

Uploaded Source

Built Distribution

asgi_aws-2.0.0-py3-none-any.whl (7.7 kB view details)

Uploaded Python 3

File details

Details for the file asgi_aws-2.0.0.tar.gz.

File metadata

  • Download URL: asgi_aws-2.0.0.tar.gz
  • Upload date:
  • Size: 71.0 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.1 CPython/3.11.2

File hashes

Hashes for asgi_aws-2.0.0.tar.gz
Algorithm Hash digest
SHA256 3cf645efbcb4362361b637dde484e6331899cdff4f10934c5beceedcd0508577
MD5 a8d4a7d222d168be5cbbc8a733d2aae1
BLAKE2b-256 416a4e10fa76eaf635fc5cc1987ec7d530c0e5dd666d0e65df9736cb5c3f5535

See more details on using hashes here.

File details

Details for the file asgi_aws-2.0.0-py3-none-any.whl.

File metadata

  • Download URL: asgi_aws-2.0.0-py3-none-any.whl
  • Upload date:
  • Size: 7.7 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.1 CPython/3.11.2

File hashes

Hashes for asgi_aws-2.0.0-py3-none-any.whl
Algorithm Hash digest
SHA256 69a3a924cf70b07cbf4d6f37e5f558b29b58ce47a976b9bd9387dec16bc9e65c
MD5 06bb502981d9876cad54c832ab3e47fa
BLAKE2b-256 82d4d04cae57cd3e3aaa44a116685e214a94ded6da1ba4f4e5bdc52acfb97a1f

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