<mxfile host="lab.iigtn.com" modified="2026-04-26T13:00:00.000Z" agent="iigtn-platform" version="24.0.0">
  <diagram name="Overall Architecture" id="overall">
    <mxGraphModel dx="1600" dy="1100" grid="1" gridSize="10" guides="1" tooltips="1" connect="1" arrows="1" fold="1" page="1" pageScale="1" pageWidth="1200" pageHeight="900" math="0" shadow="0">
      <root>
        <mxCell id="0" />
        <mxCell id="1" parent="0" />

        <!-- Top row: actors -->
        <mxCell id="user" value="🌐 訪問者" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#f5f5f5;strokeColor=#666;fontSize=12;" vertex="1" parent="1">
          <mxGeometry x="60" y="40" width="160" height="50" as="geometry" />
        </mxCell>

        <mxCell id="dev" value="👨‍💻 git push" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#f5f5f5;strokeColor=#666;fontSize=12;" vertex="1" parent="1">
          <mxGeometry x="980" y="40" width="160" height="50" as="geometry" />
        </mxCell>

        <!-- Row 2 -->
        <mxCell id="dns" value="Squarespace DNS" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#fff8e1;strokeColor=#ffa726;fontSize=11;" vertex="1" parent="1">
          <mxGeometry x="60" y="140" width="160" height="40" as="geometry" />
        </mxCell>

        <mxCell id="gha" value="GitHub Actions" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#0969da;strokeColor=#000;fontColor=#fff;fontSize=11;" vertex="1" parent="1">
          <mxGeometry x="980" y="140" width="160" height="40" as="geometry" />
        </mxCell>

        <!-- Row 3: TLS & CDN -->
        <mxCell id="acm" value="ACM (us-east-1)" style="sketch=0;points=[[0,0,0],[0.25,0,0],[0.5,0,0],[0.75,0,0],[1,0,0],[0,1,0],[0.25,1,0],[0.5,1,0],[0.75,1,0],[1,1,0],[0,0.25,0],[0,0.5,0],[0,0.75,0],[1,0.25,0],[1,0.5,0],[1,0.75,0]];outlineConnect=0;fontColor=#232F3E;fillColor=#DD344C;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.certificate_manager_3;" vertex="1" parent="1">
          <mxGeometry x="60" y="240" width="78" height="78" as="geometry" />
        </mxCell>

        <mxCell id="cf" value="CloudFront" style="sketch=0;points=[[0,0,0],[0.25,0,0],[0.5,0,0],[0.75,0,0],[1,0,0],[0,1,0],[0.25,1,0],[0.5,1,0],[0.75,1,0],[1,1,0],[0,0.25,0],[0,0.5,0],[0,0.75,0],[1,0.25,0],[1,0.5,0],[1,0.75,0]];outlineConnect=0;fontColor=#232F3E;fillColor=#8C4FFF;strokeColor=#ffffff;dashed=0;verticalLabelPosition=bottom;verticalAlign=top;align=center;html=1;fontSize=12;fontStyle=0;aspect=fixed;shape=mxgraph.aws4.resourceIcon;resIcon=mxgraph.aws4.cloudfront;" vertex="1" parent="1">
          <mxGeometry x="291" y="240" width="78" height="78" as="geometry" />
        </mxCell>

        <mxCell id="iam" value="IAM Role (OIDC)" style="sketch=0;outlineConnect=0;fontColor=#232F3E;gradientColor=none;fillColor=#DD344C;strokeColor=none;dashed=0;verticalLabelPosition=bottom;verticalAlign=top;align=center;html=1;fontSize=11;fontStyle=0;aspect=fixed;pointerEvents=1;shape=mxgraph.aws4.role;" vertex="1" parent="1">
          <mxGeometry x="1001" y="260" width="78" height="44" as="geometry" />
        </mxCell>

        <!-- Row 4: app layer -->
        <mxCell id="s3" value="S3&#xa;静的ファイル" style="sketch=0;points=[[0,0,0],[0.25,0,0],[0.5,0,0],[0.75,0,0],[1,0,0],[0,1,0],[0.25,1,0],[0.5,1,0],[0.75,1,0],[1,1,0],[0,0.25,0],[0,0.5,0],[0,0.75,0],[1,0.25,0],[1,0.5,0],[1,0.75,0]];outlineConnect=0;fontColor=#232F3E;fillColor=#7AA116;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="161" y="470" width="78" height="78" as="geometry" />
        </mxCell>

        <mxCell id="apigw" value="API Gateway&#xa;HTTP API" style="sketch=0;points=[[0,0,0],[0.25,0,0],[0.5,0,0],[0.75,0,0],[1,0,0],[0,1,0],[0.25,1,0],[0.5,1,0],[0.75,1,0],[1,1,0],[0,0.25,0],[0,0.5,0],[0,0.75,0],[1,0.25,0],[1,0.5,0],[1,0.75,0]];outlineConnect=0;fontColor=#232F3E;fillColor=#E7157B;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.api_gateway;" vertex="1" parent="1">
          <mxGeometry x="421" y="470" width="78" height="78" as="geometry" />
        </mxCell>

        <mxCell id="lambda" value="Lambda&#xa;Node.js 20" style="sketch=0;points=[[0,0,0],[0.25,0,0],[0.5,0,0],[0.75,0,0],[1,0,0],[0,1,0],[0.25,1,0],[0.5,1,0],[0.75,1,0],[1,1,0],[0,0.25,0],[0,0.5,0],[0,0.75,0],[1,0.25,0],[1,0.5,0],[1,0.75,0]];outlineConnect=0;fontColor=#232F3E;fillColor=#ED7100;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.lambda;" vertex="1" parent="1">
          <mxGeometry x="681" y="470" width="78" height="78" as="geometry" />
        </mxCell>

        <!-- Row 5: storage / observability -->
        <mxCell id="ddb" value="DynamoDB" style="sketch=0;points=[[0,0,0],[0.25,0,0],[0.5,0,0],[0.75,0,0],[1,0,0],[0,1,0],[0.25,1,0],[0.5,1,0],[0.75,1,0],[1,1,0],[0,0.25,0],[0,0.5,0],[0,0.75,0],[1,0.25,0],[1,0.5,0],[1,0.75,0]];outlineConnect=0;fontColor=#232F3E;fillColor=#C925D1;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.dynamodb;" vertex="1" parent="1">
          <mxGeometry x="421" y="700" width="78" height="78" as="geometry" />
        </mxCell>

        <mxCell id="ses" value="SES" style="sketch=0;points=[[0,0,0],[0.25,0,0],[0.5,0,0],[0.75,0,0],[1,0,0],[0,1,0],[0.25,1,0],[0.5,1,0],[0.75,1,0],[1,1,0],[0,0.25,0],[0,0.5,0],[0,0.75,0],[1,0.25,0],[1,0.5,0],[1,0.75,0]];outlineConnect=0;fontColor=#232F3E;fillColor=#DD344C;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.simple_email_service;" vertex="1" parent="1">
          <mxGeometry x="611" y="700" width="78" height="78" as="geometry" />
        </mxCell>

        <mxCell id="cw" value="CloudWatch&#xa;Logs + Alarms" style="sketch=0;points=[[0,0,0],[0.25,0,0],[0.5,0,0],[0.75,0,0],[1,0,0],[0,1,0],[0.25,1,0],[0.5,1,0],[0.75,1,0],[1,1,0],[0,0.25,0],[0,0.5,0],[0,0.75,0],[1,0.25,0],[1,0.5,0],[1,0.75,0]];outlineConnect=0;fontColor=#232F3E;fillColor=#E7157B;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="831" y="700" width="78" height="78" as="geometry" />
        </mxCell>

        <mxCell id="sns" value="SNS&#xa;通知" style="sketch=0;points=[[0,0,0],[0.25,0,0],[0.5,0,0],[0.75,0,0],[1,0,0],[0,1,0],[0.25,1,0],[0.5,1,0],[0.75,1,0],[1,1,0],[0,0.25,0],[0,0.5,0],[0,0.75,0],[1,0.25,0],[1,0.5,0],[1,0.75,0]];outlineConnect=0;fontColor=#232F3E;fillColor=#E7157B;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="1031" y="700" width="78" height="78" as="geometry" />
        </mxCell>

        <!-- Edges -->
        <mxCell id="e_user_dns" style="endArrow=classic;html=1;fontSize=11;" edge="1" parent="1" source="user" target="dns">
          <mxGeometry relative="1" as="geometry" />
        </mxCell>
        <mxCell id="e_dns_cf" style="endArrow=classic;html=1;fontSize=11;" edge="1" parent="1" source="dns" target="cf">
          <mxGeometry relative="1" as="geometry" />
        </mxCell>
        <mxCell id="e_acm_cf" style="endArrow=classic;dashed=1;html=1;fontSize=10;" edge="1" parent="1" source="acm" target="cf">
          <mxGeometry relative="1" as="geometry" />
        </mxCell>
        <mxCell id="e_cf_s3" value="/*" style="endArrow=classic;html=1;fontSize=11;" edge="1" parent="1" source="cf" target="s3">
          <mxGeometry relative="1" as="geometry" />
        </mxCell>
        <mxCell id="e_cf_apigw" value="/api/*" style="endArrow=classic;html=1;fontSize=11;" edge="1" parent="1" source="cf" target="apigw">
          <mxGeometry relative="1" as="geometry" />
        </mxCell>
        <mxCell id="e_apigw_lambda" style="endArrow=classic;html=1;fontSize=11;" edge="1" parent="1" source="apigw" target="lambda">
          <mxGeometry relative="1" as="geometry" />
        </mxCell>
        <mxCell id="e_lambda_ddb" style="endArrow=classic;html=1;fontSize=11;" edge="1" parent="1" source="lambda" target="ddb">
          <mxGeometry relative="1" as="geometry" />
        </mxCell>
        <mxCell id="e_lambda_ses" style="endArrow=classic;dashed=1;html=1;fontSize=11;" edge="1" parent="1" source="lambda" target="ses">
          <mxGeometry relative="1" as="geometry" />
        </mxCell>
        <mxCell id="e_lambda_cw" style="endArrow=classic;html=1;fontSize=11;" edge="1" parent="1" source="lambda" target="cw">
          <mxGeometry relative="1" as="geometry" />
        </mxCell>
        <mxCell id="e_cw_sns" style="endArrow=classic;html=1;fontSize=11;" edge="1" parent="1" source="cw" target="sns">
          <mxGeometry relative="1" as="geometry" />
        </mxCell>
        <mxCell id="e_dev_gha" style="endArrow=classic;html=1;fontSize=11;" edge="1" parent="1" source="dev" target="gha">
          <mxGeometry relative="1" as="geometry" />
        </mxCell>
        <mxCell id="e_gha_iam" value="OIDC AssumeRole" style="endArrow=classic;dashed=1;html=1;fontSize=10;" edge="1" parent="1" source="gha" target="iam">
          <mxGeometry relative="1" as="geometry" />
        </mxCell>
        <mxCell id="e_iam_s3" style="endArrow=classic;dashed=1;html=1;fontSize=11;" edge="1" parent="1" source="iam" target="s3">
          <mxGeometry relative="1" as="geometry" />
        </mxCell>
        <mxCell id="e_iam_cf" style="endArrow=classic;dashed=1;html=1;fontSize=11;" edge="1" parent="1" source="iam" target="cf">
          <mxGeometry relative="1" as="geometry" />
        </mxCell>

      </root>
    </mxGraphModel>
  </diagram>
</mxfile>
