Keyboard shortcuts

Press or to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

現行構成とサービス一覧

現行の AWS 構成(管理境界・環境分離・利用サービス)を整理する章です。ハイブリッド構成に至った経緯と改善候補は 設計ふりかえり § 6 を参照してください。

現行の管理境界

Amplify Gen 2 がアプリ層、Terraform が非同期プローバー基盤を担う 2 系統管理になっています。

管理系現行の役割残る制約
Amplify Gen 2Web ホスティング、API(Lambda)、データ(AppSync + DynamoDB)、認証基盤(Cognito + IAM)branch override、環境変数同期、Amplify 管理リソース名への依存が残る
TerraformECS Fargate、Step Functions、SQS、S3、ECR、CodeBuild、SSM Parameter Store、VPC、IAMAmplify 側リソース ARN を入力として受け取るため、完全な単独 IaC にはなっていない

環境分離

developmain の 2 環境を運用し、主要なアプリケーション実行系リソースは Terraform ワークスペースと Amplify ブランチデプロイで分離しています。両環境とも証明モードは実 STARK 証明(代表実測はECS Fargate タスク仕様参照)で、RISC0_DEV_MODE=1 / USE_MOCK_ZKVM=true はローカル同期実行用の設定です。

項目developmain
S3 ライフサイクル7 日30 日
ログ保持期間7 日14 日
CloudTrail無効有効(90 日保持)

ただし全リソースが環境ごとに二重化されているわけではなく、RISC Zero ツールチェーン用の ECR リポジトリと CodeBuild プロジェクトは aws.shared provider で共有されます。環境別に分かれるのは prover 用 ECR、証明バンドル S3、prover image metadata S3、SSM current metadata parameter、SQS、Step Functions、ECS、CloudTrail などの実行系リソースです。

全体構成図

AWS 全体構成図 図: STARK Ballot Simulator の AWS 全体構成。現行では Amplify 管理領域(上)と Terraform 管理領域(下)に分かれている。

サービス一覧

本システムで使用する主要な AWS サービスと、その役割の概要です。

Amplify 管理

サービスリソース役割
Amplify HostingWeb アプリNext.js のビルド・ホスティング
API Gateway (HTTP API)stark-ballot-simulator-hono-api/api/* ルートのプロキシ
Lambdahono-apiHono フレームワークによる API 処理
Lambdaprover-dispatch-proxySQS 受信 → input.json を S3 保存 → Step Functions 起動
Lambdafinalize-callback-runnerStep Functions コールバック → セッション更新
Lambdaverifier-service-runnerSTARK レシート検証の実行
AppSync + DynamoDBデータモデルセッション・投票・集計結果の永続化
DynamoDBRateLimitEvents / RateLimitCountershono-api の API レート制限状態
CognitoIdentity Pool / User Pool認証基盤(未認証 ID 無効)

Terraform 管理

サービスリソース役割
ECS FargateプローバータスクzkVM ホストバイナリによる STARK 証明生成
Step Functionsプローバーディスパッチャーイメージ署名検証 → ECS 実行 → コールバック
SQSワークキュー + DLQ非同期証明リクエストのバッファリング
S3証明バンドルバケット / prover metadata入力・実行成果物・検証用バンドル、prover image metadata の保存
ECRイメージリポジトリプローバーコンテナイメージの管理
CodeBuild環境別プローバー + 共有 toolchain builderDocker イメージのビルド、ARM64 ImageID / methodVersion metadata の抽出と公開
SSM Parameter Storecurrent metadata pointer現行 prover image metadata candidate JSON の保持
Lambdacheck-image-signatureECR イメージ署名の実行前検証
VPCパブリックサブネットECS タスクのネットワーク
CloudWatchログ群ECS / Step Functions / CodeBuild などのログ
CloudTrail監査証跡(main のみ)API 呼び出しの監査ログ

これらのサービスに紐づく IAM ロール / ポリシーも同じ Terraform 管理下にあります。詳細は Terraform > IAM 設計 を参照してください。

Amplify と Terraform の境界

2 つのインフラ管理ツール間の連携は、ARN と環境変数によって行われます。

flowchart TB
  subgraph TF["Terraform 管理"]
    OUT["Amplify 同期出力<br/>SFN ARN / SQS ARN / SQS URL / 証明バンドル S3 名"]
    OPS["運用出力<br/>metadata S3 名 / SSM parameter 名"]
    IN["入力変数<br/>finalize_callback_lambda_arn"]
  end

  subgraph AMP["Amplify Gen 2 管理"]
    ENV["環境変数"]
    CB["finalize-callback-runner<br/>Lambda ARN"]
  end

  OUT -.対応する値.-> ENV
  CB -.ARN を入力変数へ設定.-> IN

Terraform の出力値(Step Functions ARN、SQS ARN、SQS URL、S3 バケット名など)は Amplify の環境変数に手動で反映する運用で、PROVER_STATE_MACHINE_ARNPROVER_WORK_QUEUE_ARN は Amplify backend のデプロイ時にも必須(未設定で fail-closed)です。同期手順と一覧は Terraform > Amplify との連携ポイント を参照してください。

なお、prover image metadata bucket 名と current metadata SSM parameter 名は CodeBuild / 運用確認向けの Terraform 出力であり、Amplify 環境変数へ同期する実行時契約ではありません。

関連する章