npm.io
1.1.0 • Published 2 years ago

@affinidi/api-gw-reconciler

Licence
Apache-2.0
Version
1.1.0
Deps
5
Size
12.1 MB
Vulns
0
Weekly
0
Stars
6

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

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
maratsh

Robert
Robert

Yiğitcan UÇUM
Yiğitcan UÇUM

Stanislav Demchuk
Stanislav Demchuk

yaroslava-kurash
yaroslava-kurash

Dmytro Filipenko
Dmytro Filipenko

Vyatcheslav Mogilevsky
Vyatcheslav Mogilevsky

Raja
Raja

Anton Iskryzhytskyi
Anton Iskryzhytskyi

kwekmh-affinidi
kwekmh-affinidi

Sanjay
Sanjay

Add your contributions

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

Keywords