參考資料:https://diagrams.mingrammer.com/docs/guides/cluster
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_primary = RDS("primary")
db_primary - [RDS("replica1"),
RDS("replica2")]
dns >> web >> db_primary
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")
source >> workers >> queue >> handlers
handlers >> store
handlers >> dw
參考資料:https://diagrams.mingrammer.com/docs/guides/edge
from diagrams import Cluster, Diagram, Edge
from diagrams.aws.network import ELB
from diagrams.aws.compute import EC2
from diagrams.aws.database import RDSPostgresqlInstance
from diagrams.aws.integration import SQS
from diagrams.aws.analytics import ManagedStreamingForKafka as MSK
from diagrams.aws.analytics import Glue
from diagrams.aws.storage import S3
from diagrams.aws.security import Cognito
from diagrams.aws.management import Cloudwatch
with Diagram(name="Advanced Web Service with AWS (colored)", show=False):
ingress = ELB("Load Balancer")
metrics = Cloudwatch("CloudWatch")
metrics << Edge(color="firebrick",
style="dashed") << Cloudwatch("Monitoring")
with Cluster("Service Cluster"):
grpcsvc = [
EC2("grpc1"),
EC2("grpc2"),
EC2("grpc3")]
with Cluster("Sessions HA"):
primary = SQS("SQS Queue")
primary \
- Edge(color="brown", style="dashed") \
- SQS("SQS Queue Replica") \
<< Edge(label="collect") \
<< metrics
grpcsvc >> Edge(color="brown") >> primary
with Cluster("Database HA"):
primary = RDSPostgresqlInstance("RDS Postgres")
primary \
- Edge(color="brown", style="dotted") \
- RDSPostgresqlInstance("RDS Replica") \
<< Edge(label="collect") \
<< metrics
grpcsvc >> Edge(color="black") >> primary
aggregator = Glue("Glue Crawler")
aggregator \
>> Edge(label="parse") \
>> MSK("Kafka (MSK)") \
>> Edge(color="black", style="bold") \
>> S3("S3 Analytics Storage")
ingress \
>> Edge(color="darkgreen") \
<< grpcsvc \
>> Edge(color="darkorange") \
>> aggregator