參考資料: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
