diagrams-js
Version:
A TypeScript port of the diagrams Python library for drawing cloud system architecture diagrams as code
168 lines (118 loc) • 4.67 kB
Markdown
---
name: diagrams-js/provider-nodes
description: >
Using 2000+ pre-built node classes from 17+ cloud providers. Import from diagrams-js/{provider}/{category}
with auto-generated icons. Providers: AWS, Azure, GCP, Kubernetes, On-premises, AlibabaCloud, DigitalOcean,
Elastic, Firebase, Generic, GIS, IBM, OCI, OpenStack, Outscale, Programming, SaaS, C4.
type: core
library: diagrams-js
library_version: "0.5.0"
requires:
- diagrams-js/getting-started
sources:
- "hatemhosny/diagrams-js:docs/docs/guides/providers.mdx"
- "hatemhosny/diagrams-js:docs/docs/guides/node.mdx"
- "hatemhosny/diagrams-js:src/providers/"
---
This skill builds on diagrams-js/getting-started. Read it first for foundational concepts.
Use 2000+ pre-built node classes representing cloud services and infrastructure components. Auto-generated icons embedded in output.
```typescript
import { Diagram } from "diagrams-js";
import { EC2, Lambda } from "diagrams-js/aws/compute";
import { RDS } from "diagrams-js/aws/database";
const diagram = Diagram("AWS Architecture");
const web = diagram.add(EC2("Web Server"));
const api = diagram.add(Lambda("API"));
const db = diagram.add(RDS("Database"));
web.to(api).to(db);
const svg = await diagram.render();
```
```typescript
import { EC2, Lambda, ECS } from "diagrams-js/aws/compute";
import { RDS, DynamoDB } from "diagrams-js/aws/database";
import { S3, EBS } from "diagrams-js/aws/storage";
import { ALB, Route53, VPC } from "diagrams-js/aws/network";
const diagram = Diagram("AWS Stack");
const dns = diagram.add(Route53("DNS"));
const lb = diagram.add(ALB("Load Balancer"));
const web = diagram.add(EC2("Web Server"));
const db = diagram.add(RDS("Database"));
const cache = diagram.add(DynamoDB("Cache"));
const storage = diagram.add(S3("Assets"));
dns.to(lb).to(web);
web.to([db, cache, storage]);
```
```typescript
import { Pod, Deployment, StatefulSet } from "diagrams-js/k8s/compute";
import { Service, Ingress } from "diagrams-js/k8s/network";
import { PV, PVC, StorageClass } from "diagrams-js/k8s/storage";
const diagram = Diagram("K8s Architecture");
const ingress = diagram.add(Ingress("domain.com"));
const svc = diagram.add(Service("svc"));
const pod = diagram.add(Pod("app"));
const pvc = diagram.add(PVC("storage"));
ingress.to(svc).to(pod).to(pvc);
```
```typescript
import { GCE, GKE, AppEngine } from "diagrams-js/gcp/compute";
import { CloudSQL } from "diagrams-js/gcp/database";
import { CloudStorage } from "diagrams-js/gcp/storage";
const diagram = Diagram("GCP Stack");
const app = diagram.add(AppEngine("App"));
const db = diagram.add(CloudSQL("Database"));
const storage = diagram.add(CloudStorage("Storage"));
app.to([db, storage]);
```
```typescript
import { VM, FunctionApps } from "diagrams-js/azure/compute";
import { SQLDatabase } from "diagrams-js/azure/databases";
import { BlobStorage } from "diagrams-js/azure/storage";
const diagram = Diagram("Azure Stack");
const api = diagram.add(FunctionApps("API"));
const db = diagram.add(SQLDatabase("Database"));
const files = diagram.add(BlobStorage("Files"));
api.to([db, files]);
```
Wrong:
```typescript
import { EC2 } from "diagrams-js/aws"; // Missing category
```
Correct:
```typescript
import { EC2 } from "diagrams-js/aws/compute";
```
Provider paths are specific: diagrams-js/{provider}/{category}. Categories: compute, database, storage, network, etc.
Source: migration guide and API reference
Wrong:
```typescript
const web = EC2("Web Server"); // Created but not added!
const db = diagram.add(RDS("Database"));
web.to(db); // Error: Node is not registered with a diagram
```
Correct:
```typescript
const web = diagram.add(EC2("Web Server"));
const db = diagram.add(RDS("Database"));
web.to(db); // Works
```
Unlike Python diagrams, TypeScript requires explicit diagram.add() for each node. The provider function returns a node instance that must be registered.
Source: migration guide from Python
- [AWS Provider Reference](references/aws-categories.md)
- [Azure Provider Reference](references/azure-categories.md)
- [GCP Provider Reference](references/gcp-categories.md)
- [Kubernetes Provider Reference](references/k8s-categories.md)
- diagrams-js/node-connections — Connecting nodes with edges
- diagrams-js/clusters-grouping — Organizing nodes into groups
- diagrams-js/custom-nodes — Using external icons