# using pip (pip3) $ pip install diagrams # using pipenv $ pipenv install diagrams # using poetry $ poetry add diagrams
快速上手
# diagram.py from diagrams import Diagram from diagrams.aws.compute import EC2 from diagrams.aws.database import RDS from diagrams.aws.network import ELB
with Diagram("Web Service", show=False): ELB("lb") >> EC2("web") >> RDS("userdb")
from diagrams import Diagram from diagrams.aws.compute import EC2
with Diagram("Simple Diagram"): EC2("web")
在上面的例子中,EC2 是由 aws 提供者提供的计算资源类型的节点。
可以以类似的方式使用其他节点对象,例如:
# aws 资源 from diagrams.aws.compute import ECS, Lambda from diagrams.aws.database import RDS, ElastiCache from diagrams.aws.network import ELB, Route53, VPC ...
# azure 资源 from diagrams.azure.compute import FunctionApps from diagrams.azure.storage import BlobStorage ...
# 阿里云 资源 from diagrams.alibabacloud.compute import ECS from diagrams.alibabacloud.storage import ObjectTableStore ...
# gcp 资源 from diagrams.gcp.compute import AppEngine, GKE from diagrams.gcp.ml import AutoML ...
# k8s 资源 from diagrams.k8s.compute import Pod, StatefulSet from diagrams.k8s.network import Service from diagrams.k8s.storage import PV, PVC, StorageClass ...
# oracle 资源 from diagrams.oci.compute import VirtualMachine, Container from diagrams.oci.network import Firewall from diagrams.oci.storage import Filestorage, Storagegateway
数据流
你可以通过使用以下运算符:
>>、<< 和 -
连接节点来表示数据流。
>>:从左到右连接节点。
<<:从右向左连接节点。
-:无方向连接节点。无方向的。
from diagrams import Diagram from diagrams.aws.compute import EC2 from diagrams.aws.database import RDS from diagrams.aws.network import ELB from diagrams.aws.storage import S3
from diagrams import Diagram from diagrams.aws.compute import EC2 from diagrams.aws.database import RDS from diagrams.aws.network import ELB
with Diagram("Workers", show=False, direction="TB"): lb = ELB("lb") db = RDS("events") lb >> EC2("worker1") >> db lb >> EC2("worker2") >> db lb >> EC2("worker3") >> db lb >> EC2("worker4") >> db lb >> EC2("worker5") >> db
from diagrams import Cluster, Diagram from diagrams.aws.compute import ECS from diagrams.aws.database import RDS from diagrams.aws.network import Route53
with Diagram("Simple Web Service with DB Cluster", show=False): dns = Route53("dns") web = ECS("service")
with Cluster("DB Cluster"): db_master = RDS("master") db_master - [RDS("slave1"), RDS("slave2")]
dns >> web >> db_master
嵌套集群
嵌套集群也是可以使用的。
from diagrams import Cluster, Diagram from diagrams.aws.compute import ECS, EKS, Lambda from diagrams.aws.database import Redshift from diagrams.aws.integration import SQS from diagrams.aws.storage import S3
with Diagram("Event Processing", show=False): source = EKS("k8s source")
with Cluster("Event Flows"): with Cluster("Event Workers"
): workers = [ECS("worker1"), ECS("worker2"), ECS("worker3")]
queue = SQS("event queue")
with Cluster("Processing"): handlers = [Lambda("proc1"), Lambda("proc2"), Lambda("proc3")]
store = S3("events store") dw = Redshift("analytics")
from diagrams import Cluster, Diagram, Edge from diagrams.onprem.analytics import Spark from diagrams.onprem.compute import Server from diagrams.onprem.database import PostgreSQL from diagrams.onprem.inmemory import Redis from diagrams.onprem.logging import Fluentd from diagrams.onprem.monitoring import Grafana, Prometheus from diagrams.onprem.network import Nginx from diagrams.onprem.queue import Kafka
with Diagram(name="Advanced Web Service with On-Premise (colored)", show=False): ingress = Nginx("ingress")