<mxfile host="viewer">
  <diagram id="cc-aws-resources" name="AWS resources">
    <mxGraphModel dx="1000" dy="700" grid="0" gridSize="10" guides="1" tooltips="1" connect="1" arrows="1" fold="0" page="0" pageScale="1" math="0" shadow="0">
      <root>
        <mxCell id="0" />
        <mxCell id="1" parent="0" />

        <mxCell id="account" value="Institution AWS account - one per institution" style="points=[[0,0],[0.25,0],[0.5,0],[0.75,0],[1,0],[1,0.25],[1,0.5],[1,0.75],[1,1],[0.75,1],[0.5,1],[0.25,1],[0,1],[0,0.75],[0,0.5],[0,0.25]];outlineConnect=0;gradientColor=none;html=1;whiteSpace=wrap;fontSize=13;fontStyle=1;container=0;pointerEvents=0;shape=mxgraph.aws4.group;grIcon=mxgraph.aws4.group_aws_cloud_alt;strokeColor=#232F3E;fillColor=none;verticalAlign=top;align=left;spacingLeft=30;fontColor=#232F3E;dashed=0;" vertex="1" parent="1">
          <mxGeometry x="80" y="190" width="1380" height="1250" as="geometry" />
        </mxCell>

        <mxCell id="vpc" value="VPC 10.0.0.0/16 - 2 availability zones" style="points=[[0,0],[0.25,0],[0.5,0],[0.75,0],[1,0],[1,0.25],[1,0.5],[1,0.75],[1,1],[0.75,1],[0.5,1],[0.25,1],[0,1],[0,0.75],[0,0.5],[0,0.25]];outlineConnect=0;gradientColor=none;html=1;whiteSpace=wrap;fontSize=12;fontStyle=0;container=0;pointerEvents=0;shape=mxgraph.aws4.group;grIcon=mxgraph.aws4.group_vpc2;strokeColor=#8C4FFF;fillColor=none;verticalAlign=top;align=left;spacingLeft=30;fontColor=#8C4FFF;dashed=0;" vertex="1" parent="1">
          <mxGeometry x="120" y="360" width="1300" height="520" as="geometry" />
        </mxCell>

        <mxCell id="pub" value="Public subnets" style="rounded=0;whiteSpace=wrap;html=1;fillColor=#F2F6E8;strokeColor=#7AA116;fontColor=#248814;verticalAlign=top;align=left;spacingLeft=10;spacingTop=4;fontSize=12;dashed=0;" vertex="1" parent="1">
          <mxGeometry x="160" y="405" width="1220" height="150" as="geometry" />
        </mxCell>

        <mxCell id="priv" value="Private subnets - no public IPs" style="rounded=0;whiteSpace=wrap;html=1;fillColor=#E6F2F8;strokeColor=#147EBA;fontColor=#147EBA;verticalAlign=top;align=left;spacingLeft=10;spacingTop=4;fontSize=12;dashed=0;" vertex="1" parent="1">
          <mxGeometry x="160" y="590" width="1220" height="260" as="geometry" />
        </mxCell>

        <mxCell id="ecs" value="ECS cluster - AWS Fargate · web &amp;amp; worker autoscale with load" style="rounded=0;whiteSpace=wrap;html=1;fillColor=none;strokeColor=#ED7100;fontColor=#ED7100;verticalAlign=top;align=left;spacingLeft=10;spacingTop=4;fontSize=12;dashed=1;" vertex="1" parent="1">
          <mxGeometry x="200" y="625" width="530" height="180" as="geometry" />
        </mxCell>

        <mxCell id="regional" value="Application services - regional, outside the VPC" style="rounded=0;whiteSpace=wrap;html=1;fillColor=none;strokeColor=#7D8998;fontColor=#5A6B86;verticalAlign=top;align=left;spacingLeft=10;spacingTop=4;fontSize=12;dashed=1;" vertex="1" parent="1">
          <mxGeometry x="120" y="930" width="1300" height="140" as="geometry" />
        </mxCell>

        <mxCell id="obslayer" value="Observability layer - logs, metrics, traces &amp;amp; audit across everything above" style="rounded=0;whiteSpace=wrap;html=1;fillColor=none;strokeColor=#DD3B7B;fontColor=#B0084D;verticalAlign=top;align=left;spacingLeft=10;spacingTop=4;fontSize=12;dashed=1;" vertex="1" parent="1">
          <mxGeometry x="120" y="1090" width="1300" height="145" as="geometry" />
        </mxCell>

        <mxCell id="seclayer" value="Security &amp;amp; compliance layer - guards everything above · AWS WAF sits at the edge (top of the diagram)" style="rounded=0;whiteSpace=wrap;html=1;fillColor=none;strokeColor=#D13212;fontColor=#B02A0F;verticalAlign=top;align=left;spacingLeft=10;spacingTop=4;fontSize=12;dashed=1;" vertex="1" parent="1">
          <mxGeometry x="120" y="1255" width="1300" height="150" as="geometry" />
        </mxCell>

        

        <mxCell id="iam" value="IAM&lt;br&gt;least-privilege task &amp;amp; deploy roles" style="sketch=0;outlineConnect=0;fontColor=#232F3E;gradientDirection=north;gradientColor=#F54749;fillColor=#BC1356;strokeColor=#ffffff;dashed=0;verticalLabelPosition=bottom;verticalAlign=top;align=center;html=1;fontSize=11;fontStyle=0;aspect=fixed;shape=mxgraph.aws4.resourceIcon;resIcon=mxgraph.aws4.identity_and_access_management;" vertex="1" parent="1">
          <mxGeometry x="480" y="1300" width="56" height="56" as="geometry" />
        </mxCell>

        <mxCell id="users" value="Campus users &amp;&lt;br&gt;public visitors" style="sketch=0;outlineConnect=0;fontColor=#232F3E;gradientColor=none;fillColor=#232F3E;strokeColor=#ffffff;dashed=0;verticalLabelPosition=top;verticalAlign=bottom;align=center;html=1;fontSize=11;fontStyle=0;aspect=fixed;pointerEvents=1;shape=mxgraph.aws4.users;" vertex="1" parent="1">
          <mxGeometry x="560" y="52" width="68" height="68" as="geometry" />
        </mxCell>

        <mxCell id="dns" value="DNS - your domain or&lt;br&gt;env.campuscoreai.com&lt;br&gt;&lt;i&gt;(optional, by SSL mode)&lt;/i&gt;" style="sketch=0;outlineConnect=0;fontColor=#232F3E;gradientColor=none;fillColor=#232F3E;strokeColor=#ffffff;dashed=0;labelPosition=right;verticalLabelPosition=middle;align=left;verticalAlign=middle;spacingLeft=6;html=1;fontSize=11;fontStyle=0;aspect=fixed;pointerEvents=1;shape=mxgraph.aws4.internet_alt1;" vertex="1" parent="1">
          <mxGeometry x="850" y="56" width="60" height="60" as="geometry" />
        </mxCell>

        <mxCell id="r53probe" value="Route 53 health check&lt;br&gt;external /readiness probe" style="sketch=0;outlineConnect=0;fontColor=#232F3E;gradientColor=none;fillColor=#8C4FFF;strokeColor=#ffffff;dashed=0;labelPosition=right;verticalLabelPosition=middle;align=left;verticalAlign=middle;spacingLeft=6;html=1;fontSize=11;fontStyle=0;aspect=fixed;shape=mxgraph.aws4.resourceIcon;resIcon=mxgraph.aws4.route_53;" vertex="1" parent="1">
          <mxGeometry x="1120" y="56" width="60" height="60" as="geometry" />
        </mxCell>

        <mxCell id="e_r53probe" value="readiness probes" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;strokeColor=#545B64;fontColor=#232F3E;fontSize=10;labelBackgroundColor=#FFFFFF;endArrow=block;endFill=1;entryX=0.75;entryY=0;" edge="1" parent="1" source="r53probe" target="alb">
          <mxGeometry relative="1" as="geometry" />
        </mxCell>

        <mxCell id="providers" value="AI model providers&lt;br&gt;OpenAI · Google · Cohere &lt;i&gt;(planned)&lt;/i&gt;" style="sketch=0;outlineConnect=0;fontColor=#232F3E;gradientColor=none;fillColor=#232F3E;strokeColor=#ffffff;dashed=0;verticalLabelPosition=bottom;verticalAlign=top;align=center;html=1;fontSize=11;fontStyle=0;aspect=fixed;pointerEvents=1;shape=mxgraph.aws4.internet_alt2;" vertex="1" parent="1">
          <mxGeometry x="1540" y="436" width="64" height="64" as="geometry" />
        </mxCell>

        <mxCell id="waf" value="AWS WAF&lt;br&gt;managed rule sets + per-IP rate limit" style="sketch=0;outlineConnect=0;fontColor=#232F3E;gradientDirection=north;gradientColor=#F54749;fillColor=#BC1356;strokeColor=#ffffff;dashed=0;labelPosition=right;verticalLabelPosition=middle;align=left;verticalAlign=middle;spacingLeft=6;html=1;fontSize=11;fontStyle=0;aspect=fixed;shape=mxgraph.aws4.resourceIcon;resIcon=mxgraph.aws4.waf;" vertex="1" parent="1">
          <mxGeometry x="564" y="240" width="60" height="60" as="geometry" />
        </mxCell>

        <mxCell id="alb" value="Application Load Balancer&lt;br&gt;HTTPS listener + certificate &lt;i&gt;(optional)&lt;/i&gt;" style="sketch=0;outlineConnect=0;fontColor=#232F3E;gradientColor=none;fillColor=#8C4FFF;strokeColor=#ffffff;dashed=0;labelPosition=right;verticalLabelPosition=middle;align=left;verticalAlign=middle;spacingLeft=6;html=1;fontSize=11;fontStyle=0;aspect=fixed;pointerEvents=1;shape=mxgraph.aws4.application_load_balancer;" vertex="1" parent="1">
          <mxGeometry x="566" y="440" width="56" height="56" as="geometry" />
        </mxCell>

        <mxCell id="nat" value="NAT gateway(s)&lt;br&gt;shared, or one per AZ &lt;i&gt;(optional)&lt;/i&gt;" style="sketch=0;outlineConnect=0;fontColor=#232F3E;gradientColor=none;fillColor=#8C4FFF;strokeColor=#ffffff;dashed=0;verticalLabelPosition=bottom;verticalAlign=top;align=center;html=1;fontSize=11;fontStyle=0;aspect=fixed;pointerEvents=1;shape=mxgraph.aws4.nat_gateway;" vertex="1" parent="1">
          <mxGeometry x="1252" y="440" width="56" height="56" as="geometry" />
        </mxCell>

        <mxCell id="web" value="Web service&lt;br&gt;1-5 tasks" style="sketch=0;outlineConnect=0;fontColor=#232F3E;gradientDirection=north;gradientColor=#F78E04;fillColor=#D05C17;strokeColor=#ffffff;dashed=0;labelPosition=right;verticalLabelPosition=middle;align=left;verticalAlign=middle;spacingLeft=6;html=1;fontSize=11;fontStyle=0;aspect=fixed;shape=mxgraph.aws4.resourceIcon;resIcon=mxgraph.aws4.fargate;" vertex="1" parent="1">
          <mxGeometry x="250" y="680" width="56" height="56" as="geometry" />
        </mxCell>

        <mxCell id="worker" value="Worker service&lt;br&gt;1-10 tasks" style="sketch=0;outlineConnect=0;fontColor=#232F3E;gradientDirection=north;gradientColor=#F78E04;fillColor=#D05C17;strokeColor=#ffffff;dashed=0;labelPosition=right;verticalLabelPosition=middle;align=left;verticalAlign=middle;spacingLeft=6;html=1;fontSize=11;fontStyle=0;aspect=fixed;shape=mxgraph.aws4.resourceIcon;resIcon=mxgraph.aws4.fargate;" vertex="1" parent="1">
          <mxGeometry x="420" y="680" width="56" height="56" as="geometry" />
        </mxCell>

        <mxCell id="jobs" value="On-demand tasks&lt;br&gt;crawl · ops · domain reconciler &lt;i&gt;(optional)&lt;/i&gt;" style="sketch=0;outlineConnect=0;fontColor=#232F3E;gradientDirection=north;gradientColor=#F78E04;fillColor=#D05C17;strokeColor=#ffffff;dashed=0;verticalLabelPosition=bottom;verticalAlign=top;align=center;html=1;fontSize=11;fontStyle=0;aspect=fixed;shape=mxgraph.aws4.resourceIcon;resIcon=mxgraph.aws4.ecs_task;" vertex="1" parent="1">
          <mxGeometry x="590" y="680" width="56" height="56" as="geometry" />
        </mxCell>

        <mxCell id="rds" value="RDS PostgreSQL + pgvector&lt;br&gt;encrypted; read replica &lt;i&gt;(optional)&lt;/i&gt;" style="sketch=0;outlineConnect=0;fontColor=#232F3E;gradientDirection=north;gradientColor=#4D72F3;fillColor=#3334B9;strokeColor=#ffffff;dashed=0;verticalLabelPosition=top;verticalAlign=bottom;align=center;html=1;fontSize=11;fontStyle=0;aspect=fixed;shape=mxgraph.aws4.resourceIcon;resIcon=mxgraph.aws4.rds;" vertex="1" parent="1">
          <mxGeometry x="830" y="650" width="56" height="56" as="geometry" />
        </mxCell>

        <mxCell id="cache" value="ElastiCache Serverless Valkey&lt;br&gt;sessions &amp;amp; coordination" style="sketch=0;outlineConnect=0;fontColor=#232F3E;gradientDirection=north;gradientColor=#4D72F3;fillColor=#3334B9;strokeColor=#ffffff;dashed=0;verticalLabelPosition=top;verticalAlign=bottom;align=center;html=1;fontSize=11;fontStyle=0;aspect=fixed;shape=mxgraph.aws4.resourceIcon;resIcon=mxgraph.aws4.elasticache;" vertex="1" parent="1">
          <mxGeometry x="1030" y="650" width="56" height="56" as="geometry" />
        </mxCell>

        <mxCell id="vpce" value="VPC endpoints&lt;br&gt;5 interface + S3 gateway" style="sketch=0;outlineConnect=0;fontColor=#232F3E;gradientColor=none;fillColor=#8C4FFF;strokeColor=#ffffff;dashed=0;verticalLabelPosition=top;verticalAlign=bottom;align=center;html=1;fontSize=11;fontStyle=0;aspect=fixed;pointerEvents=1;shape=mxgraph.aws4.endpoints;" vertex="1" parent="1">
          <mxGeometry x="1230" y="650" width="56" height="56" as="geometry" />
        </mxCell>

        <mxCell id="s3" value="4 S3 buckets&lt;br&gt;app · uploads · logs · audit" style="sketch=0;outlineConnect=0;fontColor=#232F3E;gradientDirection=north;gradientColor=#60A337;fillColor=#277116;strokeColor=#ffffff;dashed=0;verticalLabelPosition=bottom;verticalAlign=top;align=center;html=1;fontSize=11;fontStyle=0;aspect=fixed;shape=mxgraph.aws4.resourceIcon;resIcon=mxgraph.aws4.s3;" vertex="1" parent="1">
          <mxGeometry x="180" y="975" width="56" height="56" as="geometry" />
        </mxCell>

        <mxCell id="sqs" value="SQS queues&lt;br&gt;interactive + bulk, each with a dead-letter queue" style="sketch=0;outlineConnect=0;fontColor=#232F3E;gradientDirection=north;gradientColor=#F34482;fillColor=#BC1356;strokeColor=#ffffff;dashed=0;verticalLabelPosition=bottom;verticalAlign=top;align=center;html=1;fontSize=11;fontStyle=0;aspect=fixed;shape=mxgraph.aws4.resourceIcon;resIcon=mxgraph.aws4.sqs;" vertex="1" parent="1">
          <mxGeometry x="390" y="975" width="56" height="56" as="geometry" />
        </mxCell>

        <mxCell id="ecr" value="ECR repositories&lt;br&gt;web + worker images" style="sketch=0;outlineConnect=0;fontColor=#232F3E;gradientDirection=north;gradientColor=#F78E04;fillColor=#D05C17;strokeColor=#ffffff;dashed=0;verticalLabelPosition=bottom;verticalAlign=top;align=center;html=1;fontSize=11;fontStyle=0;aspect=fixed;shape=mxgraph.aws4.resourceIcon;resIcon=mxgraph.aws4.ecr;" vertex="1" parent="1">
          <mxGeometry x="600" y="975" width="56" height="56" as="geometry" />
        </mxCell>

        <mxCell id="sched" value="EventBridge schedules&lt;br&gt;nightly jobs + reconcilers" style="sketch=0;outlineConnect=0;fontColor=#232F3E;gradientDirection=north;gradientColor=#F34482;fillColor=#BC1356;strokeColor=#ffffff;dashed=0;verticalLabelPosition=bottom;verticalAlign=top;align=center;html=1;fontSize=11;fontStyle=0;aspect=fixed;shape=mxgraph.aws4.resourceIcon;resIcon=mxgraph.aws4.eventbridge_scheduler;" vertex="1" parent="1">
          <mxGeometry x="810" y="975" width="56" height="56" as="geometry" />
        </mxCell>

        <mxCell id="obs" value="CloudWatch + CloudTrail&lt;br&gt;logs · metrics · alarms · dashboard · audit" style="sketch=0;outlineConnect=0;fontColor=#232F3E;gradientDirection=north;gradientColor=#F34482;fillColor=#BC1356;strokeColor=#ffffff;dashed=0;verticalLabelPosition=bottom;verticalAlign=top;align=center;html=1;fontSize=11;fontStyle=0;aspect=fixed;shape=mxgraph.aws4.resourceIcon;resIcon=mxgraph.aws4.cloudwatch_2;" vertex="1" parent="1">
          <mxGeometry x="1020" y="1130" width="56" height="56" as="geometry" />
        </mxCell>

        <mxCell id="sns" value="Alarm notifications&lt;br&gt;email · Slack &lt;i&gt;(optional)&lt;/i&gt;" style="sketch=0;outlineConnect=0;fontColor=#232F3E;gradientDirection=north;gradientColor=#F34482;fillColor=#BC1356;strokeColor=#ffffff;dashed=0;verticalLabelPosition=bottom;verticalAlign=top;align=center;html=1;fontSize=11;fontStyle=0;aspect=fixed;shape=mxgraph.aws4.resourceIcon;resIcon=mxgraph.aws4.sns;" vertex="1" parent="1">
          <mxGeometry x="1230" y="1130" width="56" height="56" as="geometry" />
        </mxCell>

        <mxCell id="guardduty" value="Amazon GuardDuty&lt;br&gt;threat detection · S3 malware scan &lt;i&gt;(optional)&lt;/i&gt;" style="sketch=0;outlineConnect=0;fontColor=#232F3E;gradientDirection=north;gradientColor=#F54749;fillColor=#BC1356;strokeColor=#ffffff;dashed=0;verticalLabelPosition=bottom;verticalAlign=top;align=center;html=1;fontSize=11;fontStyle=0;aspect=fixed;shape=mxgraph.aws4.resourceIcon;resIcon=mxgraph.aws4.guardduty;" vertex="1" parent="1">
          <mxGeometry x="180" y="1300" width="56" height="56" as="geometry" />
        </mxCell>

        <mxCell id="sechub" value="Security Hub · Inspector · Config&lt;br&gt;security posture · image scanning &lt;i&gt;(optional)&lt;/i&gt;" style="sketch=0;outlineConnect=0;fontColor=#232F3E;gradientDirection=north;gradientColor=#F54749;fillColor=#BC1356;strokeColor=#ffffff;dashed=0;verticalLabelPosition=bottom;verticalAlign=top;align=center;html=1;fontSize=11;fontStyle=0;aspect=fixed;shape=mxgraph.aws4.resourceIcon;resIcon=mxgraph.aws4.security_hub;" vertex="1" parent="1">
          <mxGeometry x="790" y="1300" width="56" height="56" as="geometry" />
        </mxCell>

        <mxCell id="encryption" value="Encryption at rest&lt;br&gt;RDS: AWS-managed KMS · S3/SQS: service-managed SSE" style="sketch=0;outlineConnect=0;fontColor=#232F3E;gradientDirection=north;gradientColor=#F54749;fillColor=#BC1356;strokeColor=#ffffff;dashed=0;verticalLabelPosition=bottom;verticalAlign=top;align=center;html=1;fontSize=11;fontStyle=0;aspect=fixed;shape=mxgraph.aws4.resourceIcon;resIcon=mxgraph.aws4.key_management_service;" vertex="1" parent="1">
          <mxGeometry x="1120" y="1300" width="56" height="56" as="geometry" />
        </mxCell>

        <mxCell id="e1" value="web requests" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;strokeColor=#545B64;fontColor=#232F3E;fontSize=10;labelBackgroundColor=#FFFFFF;endArrow=block;endFill=1;" edge="1" parent="1" source="users" target="waf">
          <mxGeometry relative="1" as="geometry" />
        </mxCell>
        <mxCell id="e2" value="filtered requests" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;strokeColor=#545B64;fontColor=#232F3E;fontSize=10;labelBackgroundColor=#FFFFFF;endArrow=block;endFill=1;" edge="1" parent="1" source="waf" target="alb">
          <mxGeometry relative="1" as="geometry" />
        </mxCell>
        <mxCell id="e3" value="resolves to" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;strokeColor=#545B64;fontColor=#232F3E;fontSize=10;labelBackgroundColor=#FFFFFF;endArrow=block;endFill=1;dashed=1;exitX=0.5;exitY=1;entryX=0.75;entryY=0;" edge="1" parent="1" source="dns" target="alb">
          <mxGeometry relative="1" as="geometry">
            <Array as="points">
              <mxPoint x="880" y="390" />
              <mxPoint x="608" y="390" />
            </Array>
          </mxGeometry>
        </mxCell>
        <mxCell id="e4" value="port 8000" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;strokeColor=#545B64;fontColor=#232F3E;fontSize=10;labelBackgroundColor=#FFFFFF;endArrow=block;endFill=1;exitX=0.5;exitY=1;entryX=0.5;entryY=0;" edge="1" parent="1" source="alb" target="web">
          <mxGeometry relative="1" as="geometry">
            <Array as="points">
              <mxPoint x="594" y="572" />
              <mxPoint x="278" y="572" />
            </Array>
          </mxGeometry>
        </mxCell>
        <mxCell id="e5" value="" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;strokeColor=#545B64;fontColor=#232F3E;fontSize=10;labelBackgroundColor=#FFFFFF;endArrow=block;endFill=1;exitX=0.35;exitY=1;entryX=0.35;entryY=1;" edge="1" parent="1" source="web" target="rds">
          <mxGeometry relative="1" as="geometry">
            <Array as="points">
              <mxPoint x="270" y="812" />
              <mxPoint x="850" y="812" />
            </Array>
          </mxGeometry>
        </mxCell>
        <mxCell id="e6" value="" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;strokeColor=#545B64;fontColor=#232F3E;fontSize=10;labelBackgroundColor=#FFFFFF;endArrow=block;endFill=1;exitX=0.65;exitY=1;entryX=0.5;entryY=1;" edge="1" parent="1" source="web" target="cache">
          <mxGeometry relative="1" as="geometry">
            <Array as="points">
              <mxPoint x="286" y="836" />
              <mxPoint x="1058" y="836" />
            </Array>
          </mxGeometry>
        </mxCell>
        <mxCell id="e7" value="stores &amp;amp; serves files" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;strokeColor=#545B64;fontColor=#232F3E;fontSize=10;labelBackgroundColor=#FFFFFF;endArrow=block;endFill=1;exitX=0.2;exitY=1;entryX=0.5;entryY=0;" edge="1" parent="1" source="web" target="s3">
          <mxGeometry x="0.6" relative="1" as="geometry">
            <Array as="points">
              <mxPoint x="261" y="848" />
              <mxPoint x="208" y="848" />
            </Array>
          </mxGeometry>
        </mxCell>
        <mxCell id="e8" value="queues ingest jobs" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;strokeColor=#545B64;fontColor=#232F3E;fontSize=10;labelBackgroundColor=#FFFFFF;endArrow=block;endFill=1;exitX=0.8;exitY=1;entryX=0.25;entryY=0;" edge="1" parent="1" source="web" target="sqs">
          <mxGeometry x="0.75" relative="1" as="geometry">
            <Array as="points">
              <mxPoint x="295" y="864" />
              <mxPoint x="404" y="864" />
            </Array>
          </mxGeometry>
        </mxCell>
        <mxCell id="e9" value="delivers jobs" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;strokeColor=#545B64;fontColor=#232F3E;fontSize=10;labelBackgroundColor=#FFFFFF;endArrow=block;endFill=1;exitX=0.75;exitY=0;entryX=0.65;entryY=1;" edge="1" parent="1" source="sqs" target="worker">
          <mxGeometry x="0.1" relative="1" as="geometry">
            <Array as="points">
              <mxPoint x="432" y="870" />
              <mxPoint x="456" y="870" />
            </Array>
          </mxGeometry>
        </mxCell>
        <mxCell id="e10" value="" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;strokeColor=#545B64;fontColor=#232F3E;fontSize=10;labelBackgroundColor=#FFFFFF;endArrow=block;endFill=1;exitX=0.5;exitY=1;entryX=0.65;entryY=1;" edge="1" parent="1" source="worker" target="rds">
          <mxGeometry relative="1" as="geometry">
            <Array as="points">
              <mxPoint x="448" y="824" />
              <mxPoint x="866" y="824" />
            </Array>
          </mxGeometry>
        </mxCell>
        <mxCell id="e11" value="keeps original files" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;strokeColor=#545B64;fontColor=#232F3E;fontSize=10;labelBackgroundColor=#FFFFFF;endArrow=block;endFill=1;exitX=0.25;exitY=1;entryX=0.75;entryY=0;" edge="1" parent="1" source="worker" target="s3">
          <mxGeometry relative="1" as="geometry">
            <Array as="points">
              <mxPoint x="434" y="858" />
              <mxPoint x="222" y="858" />
            </Array>
          </mxGeometry>
        </mxCell>
        <mxCell id="e12" value="launches crawl &amp;amp; admin runs" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;strokeColor=#545B64;fontColor=#232F3E;fontSize=10;labelBackgroundColor=#FFFFFF;endArrow=block;endFill=1;exitX=0.5;exitY=0;entryX=0.5;entryY=0;" edge="1" parent="1" source="web" target="jobs">
          <mxGeometry relative="1" as="geometry">
            <Array as="points">
              <mxPoint x="278" y="655" />
              <mxPoint x="618" y="655" />
            </Array>
          </mxGeometry>
        </mxCell>
        <mxCell id="e13" value="launches nightly tasks" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;strokeColor=#545B64;fontColor=#232F3E;fontSize=10;labelBackgroundColor=#FFFFFF;endArrow=block;endFill=1;exitX=0.5;exitY=0;entryX=0.85;entryY=1;" edge="1" parent="1" source="sched" target="ecs">
          <mxGeometry x="-0.3" relative="1" as="geometry">
            <Array as="points">
              <mxPoint x="838" y="918" />
              <mxPoint x="650" y="918" />
            </Array>
          </mxGeometry>
        </mxCell>
        <mxCell id="e14" value="task images" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;strokeColor=#545B64;fontColor=#232F3E;fontSize=10;labelBackgroundColor=#FFFFFF;endArrow=block;endFill=1;exitX=0.5;exitY=0;entryX=0.7;entryY=1;" edge="1" parent="1" source="ecr" target="ecs">
          <mxGeometry x="-0.4" relative="1" as="geometry">
            <Array as="points">
              <mxPoint x="628" y="945" />
              <mxPoint x="571" y="945" />
            </Array>
          </mxGeometry>
        </mxCell>
        <mxCell id="e15" value="" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;strokeColor=#545B64;fontColor=#232F3E;fontSize=10;labelBackgroundColor=#FFFFFF;endArrow=block;endFill=1;exitX=0.9;exitY=0;entryX=0;entryY=0.5;" edge="1" parent="1" source="ecs" target="nat">
          <mxGeometry relative="1" as="geometry">
            <Array as="points">
              <mxPoint x="677" y="572" />
              <mxPoint x="1200" y="572" />
              <mxPoint x="1200" y="468" />
            </Array>
          </mxGeometry>
        </mxCell>
        <mxCell id="e16" value="outbound only:&lt;br&gt;model &amp;amp;&lt;br&gt;embedding APIs" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;strokeColor=#545B64;fontColor=#232F3E;fontSize=10;labelBackgroundColor=#FFFFFF;endArrow=block;endFill=1;exitX=1;exitY=0.5;entryX=0;entryY=0.5;" edge="1" parent="1" source="nat" target="providers">
          <mxGeometry x="-0.55" relative="1" as="geometry" />
        </mxCell>
        <mxCell id="e17" value="logs &amp;amp; metrics" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;strokeColor=#545B64;fontColor=#232F3E;fontSize=10;labelBackgroundColor=#FFFFFF;endArrow=block;endFill=1;exitX=0.5;exitY=1;entryX=0.5;entryY=0;" edge="1" parent="1" source="ecs" target="obs">
          <mxGeometry x="0.6" relative="1" as="geometry">
            <Array as="points">
              <mxPoint x="465" y="910" />
              <mxPoint x="1048" y="910" />
            </Array>
          </mxGeometry>
        </mxCell>
        <mxCell id="e18" value="alarm notifications" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;strokeColor=#545B64;fontColor=#232F3E;fontSize=10;labelBackgroundColor=#FFFFFF;endArrow=block;endFill=1;exitX=1;exitY=0.5;entryX=0;entryY=0.5;" edge="1" parent="1" source="obs" target="sns">
          <mxGeometry relative="1" as="geometry" />
        </mxCell>
      </root>
    </mxGraphModel>
  </diagram>
</mxfile>
