Skip to main content

No project description provided

Project description

powertools-oas-validator


PyPI version CI Coveralls

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.

Installation

Poetry: poetry add powertools-oas-validator

Pip: pip install powertools-oas-validator

Usage

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

Minimal Example

from typing import Dict
from aws_lambda_powertools.event_handler import APIGatewayRestResolver, Response
from aws_lambda_powertools.utilities.typing import LambdaContext
from powertools_oas_validator.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

Error Handling

If the validation fails, the decorator throws a SchemaValidatonError with relevant information about the failed validation.

Example of a SchemaValidatonError:

from aws_lambda_powertools.utilities.validation import SchemaValidationError

SchemaValidatonError(
  name="test-path.test-endpoint.requestBody[param_1]",
  path=["test-path", "test-endpoint", "requestBody", "param_1"],
  validation_message="'not an integer' is not of type 'integer'.",
  message="'not an integer' is not of type 'integer'",
  rule="int",
  rule_definition="type",
  value="'not an integer'"
)

Articles

Know Issues

While all validation errors are caught, there is only limited information about the various errors. The decorator will try its best to throw a SchemaValidatonError (same as the Powertools validator would), with as many of the optional attributes as possible.

In summary, it is possible that not all SchemaValidationErrors's will have the correct name and path attributes.

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.6.4.tar.gz (7.9 kB view details)

Uploaded Source

File details

Details for the file powertools_oas_validator-0.6.4.tar.gz.

File metadata

  • Download URL: powertools_oas_validator-0.6.4.tar.gz
  • Upload date:
  • Size: 7.9 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/1.5.1 CPython/3.10.12 Linux/6.2.0-1019-azure

File hashes

Hashes for powertools_oas_validator-0.6.4.tar.gz
Algorithm Hash digest
SHA256 401f6761f55fba4647848d170234dbc5a1c1785cb0fdb4696acb9646d69407eb
MD5 b3c61f8c38fb9ee98c4eec03f1b886bb
BLAKE2b-256 56af3544004ccb4461d66c7deebf2aae1b8a8b6866907790c1ab568d906619cc

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