api-gw-reconciler
AWS API gateway reconciler
AWS API gateway reconciler checks and merges openapi schemas from services. Reconciler is cdk library construct, which could be deployed as part of AWS CDK application
Table of Contents
Installation
npm i @affinidi/api-gw-reconciler
Features
- Merging openapi schemas from different services in one openapi schema and updating single API gateway
- Checking for backwards compatibilty of schema
- schema path authentication for specifc service path prefix
- Pinning 1 schema to provide authorizers
- Generates and publishes json api doc
- Generates and publishes ReDoc HTML documentation
- Token Auth for documentation
Usage
For more complex example, take a look into [examples]
//Create API gw somewhere
const api = new apigateway.RestApi(this, 'api')
api.root.addMethod('ANY')
Create reconciler
//Reference apigateway in reconciler stack
const restApiId = 'fe3sdf4x'
restApiReference = apigateway.RestApi.fromRestApiId(this, 'restApiReference', restApiId)
//Create reconsiler
const reconciler = new APIGWReconciler(this, 'reconciler', {
restAPI: restApiReference
allowedAccounts: [
{
allowedApiPathPrefix: 'service1',
id: '1111111111'
},
{
allowedApiPathPrefix: 'service2',
id: '22222222222'
},
]
})
Upload openapi.json schema in service stack
const oas = {
"openapi": "3.0.0",
"paths:" : [...]
...
}
new BucketDeployment(this, 'openapiSchemaDeployment', {
destinationBucket: this.reconciler.openApiDefinitionBucket,
destinationKeyPrefix: 'service1',
prune: false,
sources: [Source.jsonData('openapi.json', oas)],
})
How it works
Take a look into detailed example
Support
Please open an issue for support.
Contributing
Please contribute using Github Flow. Create a branch, add commits, and open a pull request.
Contributors
Thanks goes to these wonderful people (emoji key):
maratsh |
Robert |
Yiğitcan UÇUM |
Stanislav Demchuk |
yaroslava-kurash |
Dmytro Filipenko |
Vyatcheslav Mogilevsky |
Raja |
Anton Iskryzhytskyi |
kwekmh-affinidi |
Sanjay |
|||
|
|
||||||
This project follows the all-contributors specification. Contributions of any kind welcome!