-
Notifications
You must be signed in to change notification settings - Fork 3
Home
Lambdora is a serverless implementation of the Fedora Repository API, based on AWS tools (specifically API Gateway, Lambda and DynamoDB). Its name is derived via a combination of Lambda and Fedora.
This project is in active development. It is not yet production-ready, as not all features of the Fedora Repository API have been implemented.
The purpose of the Lambdora project was to attempt a serverless implementation of Fedora that could be used by Hyku and/or hosted Hyku solutions (like HykuDirect). Therefore, currently, it concentrates on implementation of Fedora API features that are actively used by the Samvera software platform (on which Hyku is based).
If this implementation is found to be of interest to others, it may be plausible to extend it to support all features of the Fedora Repository API specification.
The code is written in Java, and the build/compilation process is managed by Gradle. See our build.gradle
file for more info.
The deployment process is entirely managed by the Serverless.com toolkit. See our serverless.yml
configuration file for more info. More information on using the Serverless Toolkit + AWS can be found at https://serverless.com/framework/docs/providers/aws/guide/quick-start/
Everything is spun up by the Serverless.com toolkit. See our serverless.yml
configuration file.
- API Gateway provides the RESTful API interface
- It sends requests to Lambda functions (written in Java)
- Data sent to Fedora is stored in DynamoDB. Our DynamoDB schema is defined in the serverless.yml config. It is a single table (with two indexes) having 5 columns:
resource_name
,rdf_triple
,rdf_subject
,rdf_predicate
,rdf_object
A basic-test.sh
shell script is provided which performs some basic Fedora-level tests (via curl
). This script can be used to test that very basic Fedora requests are functioning properly.
This project began as a sprint conducted by DuraSpace technical staff which took place October 23 - November 3, 2017. The purpose of the project is to create an implementation of the Fedora API Specification which is cloud-native (that cloud being AWS) and that can be used to provide a performant back-end for Hyku deployments.
As of the latest commit the application can be built (using Gradle) and deployed (using Serverless) to AWS. When deployed, the API endpoint supports the POST operation to add a resource and the GET and HEAD operations to retrieve information about a resource. The exception to this is that binary content is not yet supported. The creation of containers has been tested and shown to work with some caveats (see tickets). The creation of resources which point to external binary is close, but not quite ready. Required response headers and content type handling is not yet in place.
- GET, HEAD, and POST on basic Fedora containers.
- When Hyku is hooked up to Lambdora, creation of the "default" AdminSet works (via rake task only).
- The LDP specified "Link" headers are not returned on GET and HEAD requests.
- Direct and Indirect containers
- Authorization, authentication, Versioning, Resource DELETE, Resource PUT, and PATCH.
- Autocreation of non-existent parent containers on resource creation.
- Creation of (Hyku) AdminSets from the Hyku UI, see https://github.com/duraspace/lambdora/issues/59