Lemon Core Bootloader for Serverless Micro-Service
-
Support
multiple
event sources with single lambda function as below figure. -
Fully support
typescript
types (80%). -
Support Data Synchronization to
Elasticsearch
fromDynomoDB
viaDynamoStream
.
Basic MicroService Architecutre with API
+ SNS
+ SQS
.
-
NextHandler
: basic controller method to handle user service -
NextDecoder
: mapper fromhttpMethod + id + cmd
toNextHandler
-
NextContext
: initial requester's context withidentity
.
-
support inter-communication between micro services
-
execute()
: synchronized call via lambda execution byAPI
Handler. -
notifiy()
: async call bySNS
handler w/ lambda callback. -
enqueue()
: async call bySQS
handler w/ lambda callback. -
broadcast()
: publish message viaSNS
, and handled byNotification
handler.
import $engine, { ProtocolParam, ProtocolService, CallbackParam } from 'lemon-core';
// use the internal instance from $engine.
const service: ProtocolService = $engine.cores.protocol.service;
const protocol: ProtocolParam = service.fromURL(context, 'api://lemon-hello-api/hello/echo', param, body);
const callback: CallbackParam = { type: 'hooks', id: `${id}` };
// queue protocol in 30 seconds delayed.
const queueId = await service.enqueue(protocol, callback, 30);
- install
lemon-core
module (>= 2.1.0).
$ npm install lemon-core --save
TODO - TBD in detail.
Plz, request PR.
See CODE_OF_CONDUCT
MIT - (C) 2019 LemonCloud Co Ltd. - All Rights Reserved.
Version | Description |
---|---|
3.2.10 | updated elastic6-service to fix 400 ILLEGAL ARGUMENT (script parsing). |
3.2.9 | improve elastic6-service w/ latest open-search. |
3.2.8 | updated ttypescript^1.5.15 , and optimized. |
3.2.7 | cleanup log message in AWSS3Service , and optimized. |
3.2.6 | improve listObjects() in AWSS3Service w/ prefix. |
3.2.5 | improve doReportError in lambda-web-handler . |
3.2.4 | updated with [email protected] . |
3.2.3 | support ES7.10 , and improve sync to elastic. |
3.2.1 | improve getIdentityId() w/ env:LOCAL_ACCOUNT . |
3.2.0 | upgrade all packages, and clear audit fix . |
3.1.2 | refactoring with [email protected] for shared types. |
3.1.1 | support ManagerProxy , AbstractProxy and $ES6 . (x-lemon-identity as WebToken) |
3.1.0 | upgrade typescript^4.6.2 , and optimized. |
3.0.2 | support helpers like $T . |
3.0.0 | improve search-client with @elastic/[email protected] to support AWS OpenSearch 1.1 (compartible with ES6.2 ). |
2.2.20 | improve an extra feature from aws-s3-service to 'lemon-images-api' |
2.2.19 | improve search filtering feature for ES6 autocomplete search . |
2.2.18 | support $U.jwt(passcode).encode(...) w/ npm . |
2.2.16 | hot-fix utf8 encoding of json in AWS.S3 . |
2.2.15 | hot-fix Cannot read property 'setIndex' of null in Dynamo . |
2.2.14 | support CacheService , and support appending entry into list in Dynamo . |
2.2.13 | improve LambdaWEBHandler to support custom web-response including headers. |
2.2.12 | improve AWSS3Service to use pure JS image library because of AWS compatibility issue. |
2.2.11 | improve AWSS3Service by adding handy method and metadata+tag handling |
2.2.10 | improve Access-Control-Allow-Origin w/ Access-Control-Allow-Credentials: true . |
2.2.9 | support content-type:application/x-www-form-urlencoded form data. |
2.2.6 | improve search , and support cookie in NextContext. |
2.2.5 | support Access-Control-Allow-Headers for CORS. |
2.2.3 | support x-lemon-language header in identity. |
2.2.0 | support AbstractManager for the template of model managers. |
2.1.17 | support filter() in DynamoStream. |
2.1.16 | improve lock() w/ 404 error, and .aggregations in QueryResult. |
2.1.14 | support hash param for MocksAPIService . |
2.1.13 | support HttpStorage , $U.crypto2 , and /favicon.ico . |
2.1.12 | support userAgent in NextContext. |
2.1.11 | improve syncToElastic6 , and DynamoScanService . |
2.1.10 | support loadProfile() , and lookup-id style. |
2.1.8 | improve express of request-context. |
2.1.7 | improve TypedStorageService w/ save() . |
2.1.5 | support GeneralAPIController along w/ UniqueFieldManager . |
2.1.3 | support asNextIdentityAccess() for access identity. |
2.1.2 | support ProxyStorageService for shared common storage. |
2.1.1 | support enqueue() with delayed-seconds. |
2.1.0 | support ProtocolService for inter communication of micro-services. |
2.0.10 | support to display the current name/version by GET / . |
2.0.9 | improve Elastic6Service + Elastic6QueryService . |
2.0.8 | improve APIService w/ mocks data. |
2.0.7 | improve StorageService along w/ dummy-storage-service. |
2.0.6 | support CoreWEBController , and lambda.cores.web.addController(...) |
2.0.5 | support APIService , and fix engine.initialize() |
2.0.3 | support StorageService along with DynamoStorageService |
2.0.0 | improve lemon-engine , and support typescript fully. |
1.2.15 | improve doReportError with error message |
1.2.12 | support doReportMetric() for saving metric data. |