Skip to content

Latest commit

 

History

History
139 lines (110 loc) · 9.13 KB

README.md

File metadata and controls

139 lines (110 loc) · 9.13 KB

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!