AWS CDK Construct that creates an Amazon API Gateway HttpApi based on a parameterized OpenAPI 3 Document.
Project description
openapigateway
Create an Amazon API Gateway from an OpenAPI 3 Document.
AWS CDK Construct that creates an Amazon API Gateway HttpApi based on a parameterized OpenAPI 3 Document.
Installation
pip install openapigateway
Usage
Example 1: API backed by Lambda Function
openapi.yaml:
[...]
paths:
/pets:
get:
summary: List all pets
responses:
[...]
x-amazon-apigateway-integration:
uri: "${API_LAMBDA_ARN}"
type: "AWS_PROXY"
httpMethod: "POST"
connectionType: "INTERNET"
payloadFormatVersion: "2.0"
x-amazon-apigateway-request-validator:
validateRequestBody: true
validateRequestParameters: true
[...]
open_api_stack.py:
from aws_cdk import core, aws_iam as iam, aws_lambda as _lambda
from openapigateway import OpenApiGateway
class OpenApiStack(core.Stack):
def __init__(
self, scope: core.Construct, construct_id: str, **kwargs
) -> None:
super().__init__(scope, construct_id, **kwargs)
# function that handles api request(s)
api_lambda = _lambda.Function([...])
# create api from openapi document and replace params
openapi = OpenApiGateway(
self,
"OpenAPI Gateway",
openapi_path="openapi.yaml",
param_value_dict={"API_LAMBDA_ARN": api_lambda.function_arn},
fail_on_warnings=True,
)
# grant HttpApi permission to invoke api lambda function
api_lambda.add_permission(
f"Invoke By {openapi.http_api.node.id} Permission",
principal=iam.ServicePrincipal("apigateway.amazonaws.com"),
action="lambda:InvokeFunction",
source_arn=openapi.http_api_arn,
)
Documentation
Development setup
optional: use virtualenv
# create virtualenv on MacOS and Linux
python3 -m venv .venv
# activate virtualenv
source .venv/bin/activate
install dependencies
To install this package, along with the tools you need to develop and publish it, run the following:
pip install -e ".[dev]"
Contributing
- Fork this repository
- Create your feature branch (
git checkout -b feature/fooBar
) - Commit your changes (
git commit -am 'Add some fooBar'
) - Push to the branch (
git push origin feature/fooBar
) - Create a new Pull Request
License
MIT
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
openapigateway-0.2.1.tar.gz
(5.2 kB
view details)
Built Distribution
File details
Details for the file openapigateway-0.2.1.tar.gz
.
File metadata
- Download URL: openapigateway-0.2.1.tar.gz
- Upload date:
- Size: 5.2 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/3.3.0 pkginfo/1.6.1 requests/2.25.1 setuptools/49.2.1 requests-toolbelt/0.9.1 tqdm/4.55.0 CPython/3.8.6
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | ef23f36ef34fb8f8cb9755bbef3b670ec135331013968c4ff8bb680e7faf6514 |
|
MD5 | bdf35f3479eeefe64c8ff58f9d4a2856 |
|
BLAKE2b-256 | d229c6ab8cb1525aabf938e24ecef85ebe7d0669a5b19c0afdc65388ba709466 |
File details
Details for the file openapigateway-0.2.1-py3-none-any.whl
.
File metadata
- Download URL: openapigateway-0.2.1-py3-none-any.whl
- Upload date:
- Size: 5.6 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/3.3.0 pkginfo/1.6.1 requests/2.25.1 setuptools/49.2.1 requests-toolbelt/0.9.1 tqdm/4.55.0 CPython/3.8.6
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 897a88a95e52252e33a66d40ad2feb665a4c6d650d05e1776d5c6cc3327e2050 |
|
MD5 | a5dd4690cb796d468841bc5a58ec8c62 |
|
BLAKE2b-256 | 2a5966a8a882596b706d76a51701615148f7b8ffca9dfc536bfb4251878a38eb |