どんなシステム?
AWS What's Newで公開される情報を翻訳、要約してWeb公開、希望の方にはメールで配信するWebシステムです。
https://awsnews.kiwi-cloud.com/

なんで作ったの?
AWS What's Newで日本語設定をしていると原文記事(英語)翻訳が完了するまで公式のページで公開されないため、いち早く情報をキャッチアップしたかったのと、毎日ページを見るのが大変だったので、メールで毎日情報を届けてほしかったから。
どんなメールで通知されるのか
以下のように毎日日本時間の8:00に指定のメールアドレスに届きます。
利用サービス
本WebシステムはAWSサービスのみで構成しており、下記の用途で各サービスを利用しています。
| サービス | 用途 |
|---|---|
| Amazon EventBridge | 定期実行トリガー(毎時RSS取得 / 毎日8時メール配信) |
| AWS Lambda | RSS取得・AI要約・API処理・メール配信の各ロジック実行 |
| Amazon Bedrock | Claude Haiku による記事の日本語要約・ポイント抽出 |
| Amazon DynamoDB | 記事・ブックマーク・購読者データの永続化 |
| Amazon API Gateway | フロントエンドからのREST API受付 |
| Amazon Cognito | ユーザー認証・管理 |
| Amazon SES | 購読者へのメール配信・メール認証 |
| Amazon CloudFront | フロントエンド静的コンテンツの配信(CDN) |
| Amazon S3 | フロントエンド静的ファイルのホスティング |
| Amazon Route 53 | カスタムドメインのDNS管理 |
| Amazon CloudWatch | Lambda実行ログの収集・管理 |
| AWS CloudFormation (SAM) | インフラのコード管理・デプロイ |
アーキテクチャ図
本システムのアーキテクチャは以下の図の通りです。
会員機能は変更するかもしれません。
今はブックマーク機能を利用したい場合はメールアドレス、パスワード認証が必要としてますが、cookie管理でもいいかも。と思っているので会員機能は消すかもしれません。
メール配信はメールアドレス入力だけで行えるようにしてます!

どれくらいの利用料がかかっているのか
ほぼ無料枠で収まっています。
記事の要約、翻訳で利用しているClaude Haiku 4.5 (Amazon Bedrock Edition)は一月$0.88でした。
自社専用で作っても月数ドルで収まると思います。
Sonnetだと$5くらいはかかるかもです。Novaは試してないですが、Novaだともっと安いかもしません。
システム作成に使用したAI
Claude Coddeを利用し、Sonnet4.5、Sonnet4.6を利用しました。
システム設計、実装はすべてClaude Codeが行っており、私は要件指示、改善指示のみ実施です。
指示は以下のような指示を行いました。
- システム全体の要件
- AWS What's New のRSSフィードを自動取得したい
- 英語の記事を日本語に要約して見やすくしたい
- Amazon Bedrock(Claude)で要約する
- Webサイトとして公開したい
- インフラは AWS SAM でコード管理したい
- バックエンド要件
- Lambda で RSS を定期取得する
- 取得済み記事は再処理しないよう重複チェックする
- Bedrock で日本語タイトル・要約・キーポイントを3つに絞って記載
- 結果を DynamoDB に保存する
- 記事一覧・詳細を返す REST API を作る
- API は API Gateway + Lambda 構成にする
- フロントエンド要件
- React + TypeScript + Tailwind CSS で作る
- 記事一覧をカード形式で表示する
- カテゴリでフィルターできるようにする
- ブックマーク機能をつける
- レスポンシブ対応する
- フロントエンドは S3 + CloudFront で配信する
- AWS構成などのインフラ要件
- S3 はパブリックアクセスブロック・OAC 経由のみ
- カスタムドメイン(awsnews.kiwi-cloud.com)を設定する
- Route 53 で DNS 管理する
- メールアドレスだけで購読登録できるようにする(Cognito 不要)
- メール配信要件(追加で指示)
- 毎朝8時に前日の新着記事をまとめてメール配信する
- 解除リンクをメールに入れてワンクリックで停止できるようにする
- SES で送信する
運用で注意が必要なこと
- モデルのEOL
- Haiku 3.5を当初利用していましたが、EOLを迎えたことを気づかず、システムが止まっていました。
- 対策としてCloudWatchでLambdaエラーを検知しておくといいかもしれません。
- RSSフィードの仕様変更
- 特にトラブルが合ったわけではないですが、AWS側のRSSフィードのURLが変わると記事読み込みが止まります。
- Lambdaエラー監視でも防げないので数日間記事が0件だったらエラーを吐くなどの仕組みが必要かもしれません。
- DynamoDBの肥大化
- 過去記事は蓄積するようにしていますが、長期運用すると肥大化するため、料金面、性能面で注意が必要です。
- Lambdaタイムアウト
- RSS記事が大量にある状態で実行するとBedrock呼び出しが多数発生してタイムアウトを起こす可能性があります。
- re:Inventなどの大量発表の時は動作がおかしくなるかもしれません。トラブル時は1回の実行で処理する記事数の上限設定など検討します。
