運用ルール(無人時間帯の配信)¶
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.yml の quiet_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 tag に
expires_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 に記載