🧩 AWS Update Judge

このサイトのしくみ・使っている技術・運営コスト

DOC / AWS-UPDATE-JUDGE / ARCHITECTURE

このサイトの設計図

AWS What's New の記事に、判定 AI「Strands Decider 2B」で注目度・重要度・カテゴリを 1 日 4 回付けて公開しています。記事を集めて日本語に訳すのは別の仕組み(ニュース収集アプリ)で、このサイトはその記事を読んで判定します。下の図が全体の構成です。

構成
サーバーレス
場所
AWS 東京リージョン
更新
1 日 4 回(日本時間 0:10・6:10・12:10・18:10)
作り方
AWS CDK(TypeScript)
判定済み
読み込み中…
最終更新
読み込み中…
月額
約 $0.6〜0.7(推測・翻訳は別)
FIG.1 システム構成図
システム構成図 AWS クラウドの東京リージョンに、つながっている別の仕組みとこのサイトのスタックがある。別の仕組みでは、ニュース収集アプリが AWS What's New の RSS を読み、Amazon Translate で日本語にして記事 DB に書く。記事 DB はニュース一覧のサイトも読む。このサイトでは EventBridge Scheduler が 1 日 4 回 Step Functions を起動し、選ぶ・判定する・公開するの 3 つの Lambda を順に動かす。選ぶは記事 DB と結果 DB を読む。判定するは記事 DB を読み、Bedrock AgentCore Runtime 上の Strands Decider 2B に問い合わせて、結果 DB に書く。公開するは判定 AI を止め、結果 DB を読んで S3 に JSON を書く。残りがあれば次の実行が Step Functions をもう一度始める。CloudFront が S3 の画面と JSON をブラウザに配信する。判定 AI は Kiro Update Judge と共用。 AWS クラウド(東京リージョン) つながっている別の仕組み(このサイトの費用には含めない) このサイトのスタック(AWS CDK) Kiro Update Judge と共用 AWS Step Functions 3 つの質問 止める AWS What's New RSS(英語の記事) あなたの ブラウザ Translate 英語 → 日本語 ニュース収集アプリ Lambda・1 日 4 回 記事 DB DynamoDB・原文と日本語訳 ニュース一覧 AWS News Dashboard Kiro Update Judge Kiro の更新を判定 Amazon Bedrock AgentCore Runtime Strands Decider 2B(CPU で動く判定 AI) EventBridge Scheduler 1 日 4 回 起動 ① 選ぶ Lambda ② 判定する Lambda 1 件ずつ ③ 公開する Lambda ④ 次の実行 残りがあれば 最初から 結果 DB DynamoDB・注目度・重要度・カテゴリ S3 画面用 JSON CloudFront 配信 凡例 流れ・書く 読む 判定 AI への問い合わせ ④ 次の実行 範囲(点線の枠) システム構成図(縦) 上から順に、AWS What's New、つながっている別の仕組み(ニュース収集アプリ、Translate、記事 DB、ニュース一覧のサイト、Kiro Update Judge)、このサイトのスタック(EventBridge Scheduler、Kiro Update Judge と共用の AgentCore Runtime 上の Strands Decider 2B、Step Functions の中の選ぶ・判定する・公開する・次の実行、CloudFront)、あなたのブラウザ。選ぶは記事 DB と結果 DB を読む。判定するは記事 DB の原文を読み、判定 AI に問い合わせて結果 DB に書く。公開するは判定 AI を止め、結果 DB を全部読んで S3 に JSON を書く。 AWS クラウド(東京リージョン) つながっている別の仕組み(費用は別) このサイトのスタック(AWS CDK) Kiro 版と共用 AWS Step Functions 3 つの質問 判定 AI を止める AWS What's New RSS(英語の記事) ニュース収集アプリ Lambda・1 日 4 回 Translate(翻訳) ニュース一覧のサイト 記事 DB DynamoDB・原文と日本語訳 Kiro Update Judge EventBridge Scheduler 1 日 4 回 起動 AgentCore Runtime Strands Decider 2B ① 選ぶ Lambda 記事 DB を読む 結果 DB を読む ② 判定する Lambda 1 件ずつ 記事 DB の原文を読む 結果 DB に書く ③ 公開する Lambda 結果 DB を全部読む S3(画面用 JSON) ④ 次の実行 残りがあれば 最初から CloudFront S3 の JSON と画面を配信 あなたのブラウザ 流れ・書く 読む ④ 次の実行 判定 AI への問い合わせ 範囲
  1. ① 選ぶ 記事 DB から直近 7 日の What's New の記事を読み、結果 DB でまだ判定していないものだけを選びます(1 回 最大 60 件)。新着が無ければ 0 件で、判定 AI は起こしません。
  2. ② 判定する 1 件ずつ、英語の原文(タイトル・サービス名・要約の先頭 2,000 文字)を Strands Decider 2B に渡し、3 つの質問(注目度・重要度・カテゴリ)の答えを結果 DB に書きます。
  3. ③ 公開する 判定 AI のセッションを止めてから、結果 DB を全部読み、月ごとの画面用 JSON を S3 に書き出します。CloudFront がそれを配信します。
  4. ④ 次の実行 過去分をまとめて判定するときだけ動きます。残りがあれば、同じ条件で Step Functions をもう一度始めます。

TBL.1 使っている技術(部品表)

サービス・技術このサイトでの役割料金のかかり方
Amazon Bedrock AgentCore Runtime+ Strands Decider 2B(hobson-v21)判定 AI を動かす実行環境。小型の意思決定モデルを int8 にして、GPU なしで 2 vCPU・8 GB の arm64 の CPU だけで動かす。このサイトが持ち、Kiro Update Judge と共用動いている時間だけ(判定後すぐ止める)
Amazon ECR判定 AI のコンテナイメージ(約 0.31 GB)の保存。モデルの重みはイメージに入れず、起動のたびに取ってくる保存している量
AWS Step Functions①〜④ の順番・1 件ずつの判定・判定 AI の読み込み待ち・失敗時のやり直し。判定に失敗した記事は飛ばし、次の回に(7 日以内なら)やり直します状態の移り変わり 1 回ごと
AWS LambdaPython 3.13・arm64・外部ライブラリなし選ぶ・判定する・公開するの 3 つの処理呼ばれた回数と実行時間
Amazon EventBridge Scheduler1 日 4 回の起動(日本時間 0:10・6:10・12:10・18:10。記事の収集の 10 分後)起動 1 回ごと
Amazon DynamoDB判定結果を入れる結果 DB(オンデマンド)。記事 DB はニュース収集アプリのもので、このサイトは読むだけ読み書きした回数
Amazon S3画面のファイルと JSON(非公開。CloudFront からだけ読める)保存量と読み書きの回数
Amazon CloudFront画面の配信。セキュリティ用のヘッダー(HSTS など)も付ける配信量とリクエスト数
AWS CDK(TypeScript)上のサービスをまとめてコードで作る—
HTML・CSS・JavaScript画面。フレームワークや外部のスクリプトを使わず、期間・並び順・サービスの絞り込みはブラウザの中で行う—(操作しても料金はかからない)
Amazon Translateニュース収集アプリが使う記事のタイトル・要約を英語から日本語へ。このサイトは訳された記事を読むだけ訳した文字数(このサイトの費用には含めない)

サーバーレス: 上の表に、常に動かしているサーバーはありません。どれも呼ばれたときだけ動き、使った分だけ料金がかかります。新着が無い回は約 6〜7 秒で終わり、判定 AI は起こしません(2026-11-02 時点の実測)。判定 AI の起動は約 70 秒(2026-11-01 実測)、1 件の判定は約 20 秒です(2026-11-02 時点)。

CALC.1 毎月の運営コストの目安

判定 AI

判定にかかった時間 × 約 $0.25 / 時間

$0.5〜0.6

そのほか

ECR・Lambda・Step Functions・DynamoDB・S3・CloudFront・Scheduler

約 $0.1 以下

合計(月)

推測

$0.6〜0.7

翻訳

ニュース収集アプリの費用(参考 月 約 $1.0〜1.1・推測)

含めない

月額の幅($0〜$1)

新着が月 240 件・新着のある回が月 70 回なら左端、月 270 件・90 回なら右端に近づきます。ほとんどが判定 AI の料金です。

ONE-TIME約 $5.1最初の 1 回だけ(2026-10-31 実測): 過去分 3,281 件と試運転 55 件、あわせて 3,336 件の一括判定 $5.06 + そのほか 約 $0.03。翻訳は $0(訳された記事を読むだけ)。

NOTE.1 工夫している点(設計メモ)

  1. M-01

    新着が無ければ起こさない

    判定済みかどうかを結果 DB で確かめてから選ぶので、何度動いても同じ記事を 2 回判定しません。新着が 0 件の回は判定 AI を呼ばずに終わります。

    判定済みを除く / 0 件なら呼ばない
  2. M-02

    判定 AI はすぐ止める

    公開の前にセッションを止め、何もしない時間が 5 分続いたときも止まります。1 回の実行の中では同じセッションを使い回し、起動済みの判定 AI に続けて聞きます。

    StopRuntimeSession / 待ち 5 分で停止
  3. M-03

    GPU なしで動かす

    2B の小型モデルを int8 にして、CPU だけで動かします。モデルの重みは版を固定し、いつも同じモデルで判定します。

    int8 / arm64 / 2 vCPU・8 GB
  4. M-04

    原文で判定、日本語で表示

    判定 AI には英語の原文を渡し、画面には日本語訳を出します。件数や HIGH の集計は、表示件数で切る前の全件で数えます。

    英語で判定 / 全件で集計
  5. M-05

    過去分は 300 件ずつ連鎖

    1 回の実行の記録が Step Functions の上限を超えないように、300 件ずつに分けて自分で次の実行を始めます。未判定が減らないときと 30 回目には止まります。

    上限 25,000 イベント / 最大 30 回
  6. M-06

    1 件の失敗で止めない

    判定 AI の読み込み中は 30 秒おきに待ちます。それでも失敗した記事は飛ばし、次の回に(7 日以内なら)やり直します。

    30 秒 × 10 回 / 失敗は飛ばす
  7. M-07

    境目はデータの分布から

    重要度の答えは真ん中に寄るため、全件の上位・下位 約 5% を HIGH・LOW の境目にしました(2026-10-31 決定)。

    HIGH ≥ 1.3 / LOW < 1.03
  8. M-08

    開けすぎない

    記事 DB は読むだけ、S3 は非公開で画面用の JSON の場所にだけ書く、というように各処理には必要な権限だけを与えています。

    最小権限