NodeCloud
NodeCloud is a standard library to get a single API on the open cloud with multiple providers. Making open cloud easily accessible and managed.
🚀 Install
npm install nodecloud
or
yarn add nodecloud
📘 Service Providers
- AliCloud
- Amazon Web Services (AWS)
- Azure
- DigitalOcean
- Google Cloud Platform (GCP)
📟 Service Types
- *yet to be implemented
Service Category | Service | AWS | GCP | Azure | DigitalOcean | AliCloud |
---|---|---|---|---|---|---|
Compute | IaaS | EC2 | Compute Engine | Virtual Machine | Droplets | ECS |
Faas | AWS Lambda* | Cloud Functions* | Azure Functions* | - | Function Compute* | |
Containers | ECS, EKS* | Google Kubernetes Engine* | AKS*, Azure Service Fabric* | DO Kubernetes* | Container Service*, Container Service for Kubernetes* | |
Containers (without infrastructure) | AWS Fargate* | Cloud Run* | - | - | ECI* | |
Paas | AWS Elastic Beanstalk* | App Engine* | App Service* | - | Simple Application Server* | |
Storage | Object Storage | S3 | Cloud Storage | Azure Blob Storage | Spaces* | Bucket (OSS) |
Block Storage | EBS | Persistent Disks | Disk Storage | Volumes | NAS* | |
Networking | Load Balancer | ELB | Cloud Load Balancing* | Azure Load Balancer* | DO Load Balancer | SLB |
Peering/Dedicated Interconnect | Direct Connect | Cloud Interconnect* | ExpressRoute* | - | Express Connect* | |
DNS | Route53 | Google Domains, Cloud DNS* | Azure DNS* | DO DNS* | Alibaba Cloud DNS* | |
Databases | RDBMS | RDS, Amazon Aurora*, Amazon Redshift* | Cloud SQL*, Cloud Spanner* | SQL Database, Azure Database for MySQL*, Azure Database for PostgreSQL* | Managed Databases(PostgreSQL* and MySQL*) | ApsaraDB (MySQL, MariaDB TX, SQL Server, PostgreSQL) |
NoSQL: key-value | DynamoDB | Cloud Firestore*, Cloud Bigtable* | Table Storage | Managed Databases(Redis)* | ApsaraDB for Redis* | |
NoSQL: indexed | Amazon SimpleDB* | Cloud Firestore* | Cosmos DB* | - | ApsaraDB for MongoDB* | |
Security/ Authorization | Identity Access Management | AWS IAM | Cloud IAM* | Azure Active Directory*, Azure Role Based Access Control* | - | Resource Access Management* |
✌️ How to setup
Make sure you have .nc.config.js
file in the project root.
Content of .nc.config.js
file is assumed as the following structure.
It is an array of supported providers.
name
: Provider identifier, this can be used to identify the plugin at a glance.tag
: Tag name that will be used to load the given provider internally.plugin
: Plugin module
This config file can contain array of objects for all providers and all will be loaded.
Supported values for name
: aws, azure, alicloud, digitalocean, google
const nodeCloudAwsPlugin = ; const providers = name: "aws" tag: "aws" plugin: nodeCloudAwsPlugin ; moduleexports = providers;
Supported providers
📣 Usage
const nodeCloud = ;const optionsProvider = overrideProviders: false;const ncProviders = nodeCloud;const options = apiVersion: "2016-11-15"; const params = ImageId: "ami-10fd7020" // amzn-ami-2011.09.1.x86_64-ebs InstanceType: "t1.micro" KeyName: "nodeCloud" // key name of Key pair MinCount: 1 MaxCount: 1;const instanceParams = Key: "Name" Value: "Node Cloud demo"; const ec2 = ncProvidersaws;ec2 ;
Override providers
NodeCloud officialy supports AWS, GCP, Azure, DigitalOcean and AliCloud. If you want to use a community driven plugin override the providers list as follows.
const nodeCloud = ;const options = overrideProviders: true;const ncProviders = nodeCloud;
💻 Development setup
$ git clone https://github.com/cloudlibz/nodecloud
$ cd nodecloud
$ yarn install
✒️ Run unit tests
$ yarn test
📜 License
MIT