Skip to main content

No project description provided

Project description

powertools-oas-validator


PyPI version Release CI

Introduction

Powertools for AWS Lambda (Python) is an awesome set of tools for supercharging your lambdas. Powertools supports validating incoming requests (or event in PT lingo) against JSONSchema which is not ideal if you are using OpenAPI schemas to define your API contracts.

The Powertools OAS Validator adds a decorator that you can use with your lambda handlers and have the events validated against an OpenAPI schema instead.

Usage

Decorate your functions with @validate_request(oas_path="openapi.yaml") and your request (and schema) will be validated on a request.

Schema validation is enabled per default but can be disabled if you already validate your schema (perhaps as part of a pipeline)

Minimal Example

from typing import Dict
from aws_lambda_powertools.event_handler import APIGatewayRestResolve, Rresponse
from aws_lambda_powertools.utilities.typing import LambdaContext
from aws_lambda_powertools.middleware import validate_request


app = APIGatewayRestResolver()

@app.post("/example")
def example() -> Response:
  ...

@validate_request(oas_path="openapi.yaml")
def lambda_handler(event: Dict, context: LambdaContext) -> Dict:
    response = app.resolve(event, context)

    return response

Extended Example

from typing import Dict
from aws_lambda_powertools.event_handler import APIGatewayRestResolve, Rresponse
from aws_lambda_powertools.utilities.typing import LambdaContext
from aws_lambda_powertools.middleware import validate_request


app = APIGatewayRestResolver()

@app.post("/example")
def example() -> Response:
  ...

@validate_request(
  oas_path="openapi.yaml",
  validate_spec=True,  # default True, disable to not validate OpenAPI Schema
  validate_body=True,  # default True, disable to not validate event["body"]
  validate_headers=True,  # default True, disable to not validate event["headers"]
  validate_query=True,  # default True, disable to not validate event["rawQueryString"]
  validate_path=True,  # default True, disable to not validate path parameters
  validate_cookies=True, # default True, disable to not validate cookies

)
def lambda_handler(event: Dict, context: LambdaContext) -> Dict:
    response = app.resolve(event, context)

    return response

Contributions

Please make a pull request and I will review it ASAP.

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

powertools_oas_validator-0.4.0.tar.gz (7.1 kB view hashes)

Uploaded Source

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