AWS SAP 模擬試験

システム構成(アーキテクチャ)の紹介

アーキテクチャ図

本アプリは AWS CDK(TypeScript)で構築した 2 つのスタックでデプロイしています。 CloudFront に設定する ACM 証明書は us-east-1 リージョンでの発行が必須のため、 証明書だけを別スタック(SapExamAppCertStack)に分離しています。

AWS SAP 模擬試験アプリの構成図。利用者のブラウザから、Route 53・CloudFront・S3 による静的配信、Cognito による認証、API Gateway・Lambda・DynamoDB による回答履歴 API の 3 つの流れを示す。ACM 証明書は us-east-1 の別スタックで発行し CloudFront から参照する。

実線はリクエストの流れ(青: 静的配信、緑: 認証、茶: 履歴 API)、グレーの破線は設定上の参照・検証の関係を表します。 図は AWS 公式アイコン(diagrams パッケージ)で生成しています。

構成要素

サービス 役割
Amazon Route 53 パブリックホストゾーン sstosh.people.aws.dev を管理。exam.sstosh.people.aws.dev のエイリアス A/AAAA レコードで CloudFront へ名前解決します。
Amazon CloudFront ACM 証明書を使った HTTPS 配信(HTTP/2・HTTP/3 対応、HTTP は HTTPS へリダイレクト)。オリジンは S3 です。
Amazon S3 HTML/JS/CSS・問題データ・図などの静的サイト一式を格納。パブリックアクセスは全ブロックし、CloudFront からの OAC(Origin Access Control)経由でのみ取得できます。
Amazon Cognito User Pool によるログイン認証。ブラウザから USER_PASSWORD_AUTH フローで ID トークン(JWT)を取得します。
Amazon API Gateway HTTP API として GET /history と POST /answers を提供。JWT オーソライザーで Cognito のトークンを検証します。
AWS Lambda Node.js で回答履歴 API を実装しています。
Amazon DynamoDB ユーザーごと・問題ごとの回答履歴(直近5回分)を保存。PK: userId、SK: questionId のオンデマンド課金テーブルです。
AWS Certificate Manager exam.sstosh.people.aws.dev のパブリック証明書を DNS 検証で発行。CloudFront 用証明書は us-east-1 での発行が必須のため、別スタック(SapExamAppCertStack)で管理しています。

データの流れ

スタート画面へ戻る