This REST API model has moved to npm install simplify-openapi -g from version 0.1.9.
With new branch of GraphQL Serverless Model at npm install simplify-graphql -g
Initial code based on openapi-codegen
Node.js-based codegen for OpenAPI specs. This project was initially by tailoring from openapi-codegen to use the core code generation functionality to generate the lambda based node projects and AWS CloudFormation stack. There was many tailored code to become a powerful tool nowaday. Thanks to the initial openapi-codegen project that has saved time for developing an initial idea.
Nanofunction: per individual method (/path/rc: GET) as a lambda functionMicrofunction: per some methods (/path/ac: POST, PUT) as a lambda functionKilofunction: per some resources (/path/rc, /path/ac) as a lambda functionMonoapplication: as an application running on a docker-compose service
- BlueGreen deployment: run
latestversion asBluestage orstableversion asGreenstage - Enforcement deployment: specify to run a custom enforcement version (e.g maintenance package mode)
- Canary deployment: run one of [
latest,stable,enforce] version on-request byx-canary-selectionHTTP header
- Production ready code skeleton (sanitizer, unit tests, api tests, coverage)
- Controllable logging verbosity (INFO, WARN, DEBUG, ERROR) using
debugpackage - Local and independant development code run (http://localhost:3000) by node
express
npm install -g simplify-openapi
git clone https://github.com/simplify-framework/openapi.gitcd openapi && npm install && npm link
mkdir pets-projectto create project folder for petscd pets-project && npm link simplify-openapiif you install from githubsimplify-openapi template -i petsampleto create apetsampleOpenAPI 3.0 specssimplify-openapi template -i othernameto create aothernameOpenAPI 3.0 specs
simplify-openapi -i openapi.yamlto generate code in the current foldersimplify-openapi -i openapi.yaml -o other-folderto specify another folder
cd projectPets && docker-compose up -d- List pets at http://localhost/project-pets/pets
- Feed pets at http://localhost/project-pets/pets/1/feed/2
docker-compose downto stop running!
- Create a deployment user in IAM:
simplify-user - Setup IAM Role Policy using:
policy-deployment.json - Setup IAM Role Policy using:
policy-services.json - Setup IAM Role Policy using:
policy-execute-api.json - Configure your machine
aws configure --profile simplify-eu(See Pets Project for more information)
npm installto install project dependancies and toolsnpm run stack-deployto provision code containers (AWS Lambda empty functions)npm run push-codeto deploy and run code as declared in .env variables (ENV_*)- ENV_functionName_DEPLOYMENT_STAGE=(
latest|stable|enfoce|canary) to setup running mode - ENV_functionName_ENFORCEMENT_PACKAGE=specific-package-name-with-version (
enforcemode only)
- ENV_functionName_DEPLOYMENT_STAGE=(
npm run stack-destroyto provision code containers (AWS Lambda empty functions)
- AWS API Gateway REST API
- AWS Lambda function (service #1)
- AWS Secret Manager (key vault)
- Custom resource (external setup)
- Manage Policy Arn (access policy)
- AWS Lambda function (service #2)
- AWS Secret Manager (key vault)
- Custom resource (external setup)
- Manage Policy Arn (access policy)
- AWS Lambda function (service #3)
- AWS Secret Manager (key vault)
- Custom resource (external setup)
- Manage Policy Arn (access policy)
- AWS Lambda function (service #1)
info.version: define software package version, set for initial packagesinfo.title: define software package description, set for initial packagesx-project-name: to define a project which contains other resources (e.gpets-micro-services)x-deployment-name: to define a deployment environment (e.gpets-demo,pets-prod)x-deployment-region: to define where to deploy resources (e.geu-west-1)x-deployment-profile: to define a profile that hold the deployment access (e.gsimplify-eu)x-api-gateway-name: to define an API gateway (Rest API) resource (e.gpets-api-gateway)x-api-authorizer-id: provide an authorizer id that linked to API Authorizer (e.g Cognito Auhtorizer)x-api-burst-limit: The API request burst limit, the maximum rate limit over a time ranging from one to a few secondsx-api-rate-limit: The API request steady-state rate limit.x-api-quota-limit: The maximum number of requests that can be made in a given time period.x-api-quota-unit: The time period in which the limit applies. Valid values are "DAY", "WEEK" or "MONTH".x-[api/event]-service-runtime: specify service runtime to create function (e.g nodejs12.x, python3.8 )x-[api/event]-service-lang: specific runtime language - is one ofjavascriptorpythonx-[api/event]-service-name: to define lambda functions that host the source code (e.gpets-service)x-[api/event]-service-model-name: to redirect the related routing paths into a service group (e.gpets)x-[api/event]-service-public: expose or dispose this service path through API gateway (public or not)x-[api/event]-service-authorizer: enable or disable using API Authorizer (e.g using Cognito Authorizer)x-[api/event]-service-api-key: enable to use API Key withx-api-keyheader to authenticate resourcex-[api/event]-service-key-vault: enable or disable key vault service (SecretManager in AWS)x-[api/event]-service-schedule: if set to value (e.grate(10 minutes)) will schedule every 10 minsx-[api/event]-service-policy: external access policy ARN (e.g Policy ARN to DynamoDB, S3, SNS...)x-[api/event]-service-custom: integrate custom ARN function that trigger for external resource creation/deletionx-[api/event]-service-control: enable or disable service fallen control using hystrix circuit breaker (valid only for docker)x-[api/event]-service-validation: validate request parameters using swagger request validator (parseRequest middleware)x-[api/event]-service-passthrough: passthrough original request from API Gateway to service model for backward compatibilitymethod: define a HTTP Rest API method: (get/put/post/delete)x-control-operation-idor standardoperationId: to define a friendly name for this operation method: e.g getPetByNamex-control-service-timeout: setup circuit break operation timeout (valid only for docker)x-control-service-duration: setup circuit break operation close duration (valid only for docker)x-control-service-threshold: setup circuit break operation threshold (valid only for docker)