サマリ

プロジェクトglamping-map.com
ステータス公開稼働中
掲載施設数約 4,800 件(グランピング 約 2,200 / キャンプ場 約 2,000 / 公的データ補完含む)
カバレッジ47 都道府県、特集記事 28 本(ガイド系 7 / ランキング系 21)
静的ページ数約 4,170(施設詳細 + 都道府県 + 記事 + 索引)
月額運用費$2 〜 $5(約 ¥300 〜 ¥800)+ ドメイン更新料 ¥1,800/年
構成方針Next.js 15 (App Router, Static Export) + S3 + CloudFront (OAC) + DynamoDB + Lambda + Terraform フル IaC

全体アーキテクチャ

構成図は drawio (AWS 公式アイコン v2026 系) で作成しています。下のビューアは .drawio ファイルを 直接レンダリングしています。zoom / pan / 編集ボタンが使えます。

ソース: /diagrams/glamping-map/architecture.drawio (drawio で開けば編集可能)

A. AWS 構成

カテゴリAWS サービス役割
配信CloudFront + S3静的サイト配信(OAC で S3 直接アクセス遮断)
ドメイン / TLSRoute 53 + ACMglamping-map.com + TLS 証明書
問合せフォームAPI Gateway (HTTP API) + Lambda + SES受信 → メール通知
データ取込EventBridge + Lambda + DynamoDB月次バッチで Rakuten / OSM から取得・upsert
ヘルスチェックEventBridge + Lambda + CloudWatch月次でサイト疎通確認
シークレットSecrets ManagerAPI キー・通知メールアドレス保管
認可IAM (GitHub OIDC)CI から短命クレデンシャルでデプロイ
観測CloudWatch Logs / Alarms全 Lambda + API Gateway のログ集約

B. データフロー

公開サイト (read path)

  1. ユーザー → Route 53 (DNS) → CloudFront (CDN)
  2. CloudFront → S3 (HTML/CSS/JS/画像 = Next.js Static Export 出力物)

問合せフォーム (write path)

  1. ブラウザ → CloudFront 配下の /api/contact → API Gateway (HTTP API)
  2. API Gateway → Lambda (contact) → Secrets Manager (送信先取得)
  3. Lambda → SES → 通知メール

データ取込 + デプロイ

  1. EventBridge (月次 cron) → Lambda (ingest)
  2. Lambda → Rakuten Travel API + OpenStreetMap Overpass API
  3. Lambda → DynamoDB に upsert(約 4,800 items)
  4. GitHub Actions (push to main) → DynamoDB を scan → Next.js build
  5. aws s3 sync out/ s3://... → CloudFront キャッシュ無効化

C. 技術スタック

レイヤ技術
フロントエンドNext.js 15 (App Router, Static Export), TypeScript, Tailwind CSS
地図 UILeaflet + OpenStreetMap タイル
バックエンドNode.js 20 + AWS SDK v3 (Lambda, DynamoDB, SES, Secrets Manager)
インフラTerraform(modules: site / lambda-stack / iam-deploy / monitor
CI / CDGitHub Actions(OIDC で AWS にデプロイ、長期 secret なし)
品質Biome (lint + format), tsc (型検査)
観測GA4 + Google Search Console + CloudWatch

D. データソース

ソースライセンス / 利用条件用途
Rakuten Travel OpenAPI v2楽天 Web Service 利用規約(API キー要登録)施設名・住所・写真・料金・レビュー
OpenStreetMap (Overpass API)© OpenStreetMap contributors, ODbL公的キャンプ場・座標補完
WikidataCC0施設説明補完

帰属表記はサイト内 /about/ に明記。

E. 月額運用費(実績)

AWS サービス内訳月額目安
Route 53Hosted zone × 1$0.50
S3約 150 MB 標準ストレージ + リクエスト$0.10 〜 $0.30
CloudFront配信(Asia エッジ、低トラフィック)$0.50 〜 $2.00
Lambda3 関数 × 月数十回実行$0.00(無料枠内)
API GatewayHTTP API 月数件$0.00(無料枠内)
DynamoDBOn-Demand, 約 4,800 items, 月次書込中心$0.10 〜 $0.50
EventBridgeスケジュールルール × 2$0.00(無料枠内)
Secrets Managersecret × 2$0.80
CloudWatch Logsretention 14 日, 軽負荷$0.10 〜 $0.50
ACM証明書(CloudFront 用)$0.00(無料)
合計$2 〜 $5 / 月(約 ¥300 〜 ¥800)

F. セキュリティ・コンプライアンス

  • HTTPS only — ACM 発行の TLS 証明書 + CloudFront で強制
  • S3 直接公開なし — CloudFront Origin Access Control (OAC) で S3 を private に
  • 長期 AWS キー不使用 — GitHub Actions は OIDC で短命クレデンシャル取得
  • シークレット集約管理 — API キー・通知先メールは Secrets Manager
  • 最小権限 IAM — Lambda は関数ごとに必要最小のロール
  • 個人情報の最小保持 — 問合せフォームは SES 送信のみ、永続化なし