1.0.3 • Published 4 months ago

@affinidi/api-gw-reconciler v1.0.3

Weekly downloads
-
License
Apache-2.0
Repository
github
Last release
4 months ago

api-gw-reconciler

All Contributors

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

:books: Table of Contents

:package: Installation

npm i @affinidi/api-gw-reconciler

:battery: 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

:rocket: 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)],
})

:carpentry_saw: How it works

Take a look into detailed example

:hammer_and_wrench: Support

Please open an issue for support.

:memo: 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):

This project follows the all-contributors specification. Contributions of any kind welcome!