コンテンツにスキップ

運用ルール(無人時間帯の配信)

AWS Lambda + EventBridge ベースの自動配信は 担当者不在でも動く。ただし「動くこと」と「失敗に気付けること」は別。本ページでは無人時間帯の配信に対する運用ルールを定義する。

前提の確認

どのコンピュータで動くのか

処理 実行ホスト
Webhook 受信 AWS API Gateway HTTP API
dispatch / 配信 / scan AWS Lambda (Node 20 / arm64)
配信時刻トリガ AWS EventBridge Scheduler
AI 生成 Claude Platform on AWS (IAM 認証)
通知 CloudWatch Alarms + SNS Topic automedia-alarms

spin-dd 側で用意するコンピュータはゼロ。サーバも担当者の PC も不要。詳細は Claude Code ランタイムモデル

それでも決めるべきこと

  • 週末・深夜・祝日でも EventBridge / Lambda は動く(AWS のクラウドで完結)
  • ただし 失敗時に誰がどう気付くか は別途決める必要がある — 以下のルールで対処する

ルール

R1. 配信時刻のガードレール

ルール
通常配信の許容時刻帯 8:00〜21:00 JST
静粛時間帯 22:00〜翌 8:00 JST(quiet_hours 既定値)
静粛時間帯の起票 dispatcher が警告コメントを返し、配信しない
例外的に深夜配信が必要 project.ymlquiet_hours.enabled: false で個別解除

R2. 配信失敗時の通知ルート

失敗を 誰が・どの経路で・いつまでに 気付くかを業務クラス別に定義する。

業務クラス 通知先 対応期限
A: 即時対応(重大障害) トークン失効で全配信停止 / API Gateway 障害 SNS Topic automedia-alarms (email: admin@spin-dd.com) 平日業務時間内、休日は翌営業日朝
B: 後追い対応(個別失敗) 単一配信が 422 で失敗 Backlog 課題コメント 翌営業日
C: 情報通知 配信成功 / 配信通数等の集計 Backlog 課題コメント 通知のみ

「即時対応」が真の意味のオンコール(24/365 即時)ではない。spin-dd の現体制では「翌営業日朝までに気付ければ OK」というレベル感。それ以上の SLA が必要なら別途定義。

R3. オンコール / 当番

MVP (Minimum Viable Product) では当番制を敷かない

理由:

  • 顧客サイトの SNS 配信が 1 時間遅れたとして、ビジネス影響は限定的
  • 重大な配信障害が発生する頻度(想定): 月 0〜1 回
  • 当番制のコストが見合わない

ただし以下のいずれかが満たされたら当番制を導入:

  • 重要配信(プレスリリース等)の頻度が増える
  • 顧客から「失敗時即時対応」を SLA として求められる
  • 障害頻度が増える

R4. 配信時刻精度

EventBridge Scheduler は 秒精度の at(投稿日時) で動的 schedule を作るため、業務上の遅延は実質ない (実測 数秒)。

R5. 投稿日時の入力規約

  • 入力は JST(Backlog UI 既定)
  • frontmatter schedule: yyyy-MM-ddTHH:mm:ss+09:00 形式で記載

R6. 配信失敗のリトライ規則

  • EventBridge → Lambda invoke 失敗: EventBridge の retry_policy (max 2 retries, max age 1h) で自動リトライ
  • deliver Lambda 内部失敗 (Claude / LINE / HubSpot): lock を release してリトライ余地を残す。次の scan (rate=1day) で救済 (frontmatter approval=true かつ dispatched コメント無し)
  • SQS DLQ: deliver が 3 連続失敗 (visibility timeout 905s × 3) で DLQ 入り → CloudWatch Alarm automedia-deliver-dlq-not-empty 発火
  • 人手介入: Backlog コメントで /automedia send template=<id> を入れて再 invoke、もしくは Backlog 課題本文の dispatched コメントを削除して scan の救済を待つ

R7. CloudWatch コストの監視

  • AWS Cost Explorer で月次のサービス別コストをチェック
  • Lambda + CloudWatch Logs + Secrets Manager 合算が想定 (~月 $20〜30) を超えたら確認

R8. シークレットの期限管理

  • LINE / HubSpot / Backlog のトークン期限を AWS Secrets Manager の secret tagexpires_at として記載
  • CloudWatch Custom Metric で期限残日数を計算 → Alarm 発火 (Phase 1c で実装予定)

R9. 障害時のフェイルセーフ

automedia が完全停止しても、各 SNS のマニュアル運用に戻せる体制を維持:

  • LINE OA Manager の手動配信は誰でもログインして使える(Wiki Hubspot/サイト別 OA 参照)
  • リッチメニュー設定も Manager から手動操作可能
  • 「automedia が動いていないと配信できない」依存を作らない

ルール一覧(チェックリスト)

実装着手前に以下が確定していること:

  • 配信時刻ガードレール(R1)の値が project.yml 既定値として実装可能
  • Slack #automedia-alerts チャンネルが作成され通知統合が可能
  • R2 の業務クラス分類が運用者と合意済み
  • R5 の投稿日時規約が Backlog 課題テンプレに記載
  • R8 のシークレット期限管理シートが存在
  • R9 のフェイルセーフ手順が手元 Wiki に記載