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.json:
[...]
"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_json_path="openapi.json",
param_value_dict={"API_LAMBDA_ARN": api_lambda.function_arn},
fail_on_warnings=True,
)
# get arn of createad HttpApi resource
http_api = openapi.http_api
http_api_arn = (
f"arn:{self.partition}:execute-api:"
f"{http_api.env.region}:{http_api.env.account}:"
f"{http_api.http_api_id}/*/*/*"
)
# grant HttpApi permission to invoke api lambda function
api_lambda.add_permission(
f"Invoke By {http_api.node.id} Permission",
principal=iam.ServicePrincipal("apigateway.amazonaws.com"),
action="lambda:InvokeFunction",
source_arn=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.1.4.tar.gz
(5.1 kB
view hashes)
Built Distribution
Close
Hashes for openapigateway-0.1.4-py3-none-any.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 41c884c3b99d16e56be7f711b17d59cdf0d25e7c35db18719f1d7738bd9fb568 |
|
MD5 | 467062676a93416b74724b524c848224 |
|
BLAKE2b-256 | df4ea64e32cc605598488b830d9478215ec290646d2945a81736a9adbc0f031a |