Phase 2-2: 高頻度Mutationリゾルバーの実装

目的

高頻度データ更新とイベント通知のリゾルバーを実装します(reportDataByNode, fireEventByNode)。

性能要件

  • データ更新: 15回/秒/グループ
  • イベント通知: 2回/秒/グループ
  • 全体書き込み負荷: 170 TPS

タスク

reportDataByNode Mutation (DynamoDB直結)

  • リクエストハンドラー (AppSync JavaScript) の実装
    • NodeStatus更新 (PutItem)
    • タイムスタンプ自動付与
    • SensorData配列のDynamoDB List形式変換
  • レスポンスハンドラーの実装
    • Subscription トリガー用データ返却
  • Resolverの登録

fireEventByNode Mutation (None DataSource)

  • None DataSourceの定義
  • リクエストハンドラー (AppSync JavaScript) の実装
    • ペイロードのパススルー
  • レスポンスハンドラーの実装
    • Event型への整形
    • タイムスタンプ自動付与
  • Resolverの登録

テスト

  • reportDataByNode動作確認
  • fireEventByNode動作確認
  • 性能テスト (15回/秒達成確認)

成果物

  • JSリゾルバーファイル
    • js/resolvers/Mutation.reportDataByNode.req.js
    • js/resolvers/Mutation.reportDataByNode.res.js
    • js/resolvers/Mutation.fireEventByNode.req.js
    • js/resolvers/Mutation.fireEventByNode.res.js
  • CDK Resolver定義コード

技術仕様

reportDataByNode リクエスト例

{
  operation: 'PutItem',
  key: { pk: {S: 'GROUP#${groupId}'}, sk: {S: 'NODE#${nodeId}'} },
  item: {
    nodeId: {S: nodeId},
    groupId: {S: groupId},
    data: {L: ...},
    timestamp: {S: util.time.nowISO8601()}
  }
}

関連

🤖 Generated with Claude Code

Co-Authored-By: Claude noreply@anthropic.com