競技開催者マニュアル Preview
未公開の統合 candidate の手順です。ローカルの大会・チーム運用は実装されていますが、クラウド基盤の配置や全カタログのプレイ確認が完了した公開版ではありません。
ローカル host を準備する
はじめにに従って make local を実行します。非公開のデータディレクトリにつき一つのプロセスだけを起動し、主催者キーだけでログインします。ユーザー名・パスワード・ローカル SAML は不要です。対話ターミナルで make local を起動するたびに新しい主催者キーを一度だけ表示します。起動中の再発行は、別の対話ターミナルで同じデータディレクトリを指定して make local-reset を実行します。どちらも古い主催者キーとログインを失効させますが、大会・得点・進捗・参加者キー・問題のデータを保持します。非対話起動と public/container 起動では既存のキーを保持し、ログにキーを出力しません。
大会を運営する
チームと問題を選び、停止状態の Docker jobs の準備結果を確認して Schedule から開始します。Docker 環境は参加者が必要なときに起動します。AWS の配置は別の操作です。参加者 URL とチームキーは対象チームだけに渡します。正答、誤答、ヒント、得点、一つのチームの障害、再起動、撤収までリハーサルしてください。End Event は採点を止めますが、リソース削除の完了を意味しません。
旧ローカル 106 問はすべて Challenge 形式の競技にする方針です。汎用カタログと workbench は実装済みです。実 Docker とブラウザで SQL へのアクセス、PostgreSQL terminal の 3 checkpoints、チーム分離、データを保持した再起動を確認しました。他の問題と terminal の全種類は未確認です。問題が選択欄に出ることだけで大会に使えると判断しないでください。
AWS 問題はクラウド開催へ
AWS サービスを使う問題はクラウド開催専用です。ローカル開催では旧 AWS リージョン指定を拒否します。クラウド開催は Lambda・Cognito と選択した Turso / DynamoDB で、汎用 CloudFormation 配置、flag / multi-flag・定期採点、参加者の Console / CLI アクセス、Cryptography Battle などの組み込み coordination を実行します。Docker / Compose 問題はローカル開催専用で、クラウドのカタログには表示しません。初回アカウント設定では、IAM 設定手順で標準 CDK の権限を確認します。既存 CDKToolkit は再利用し、未作成の場合だけ make deploy 内で対象と権限を表示して自動 bootstrap します。配置担当者の権限は同じアカウントの TenkaCloud 環境を横断するため、環境名は IAM の分離境界になりません。実 AWS への配置は未検証です。実 AWS・hosted Turso での大会性能は未検証です。ローカルのコマンドで代用しないでください。既存の AWS リソースは作成時の確認済み手順で片付ける必要があるため、所有情報を保持します。
AWS 資源を使う問題には、競技者アカウントを登録・検証します。自分で行う自己検証では、イベント作成画面で開催用アカウントのリスクを確認してから、イベントとログインキーを作成できます。同意はそのイベントだけに保存します。問題用・参加者用ロールが開催基盤の設定やデータへアクセス・変更できる可能性があり、別リージョンでも隔離は保証されません。第三者が参加する本格開催には別アカウントを推奨します。作成済みイベントは「スケジュール」の配置操作でリスクを確認できます。同意を保存してから配置を続け、キャンセル時はイベントを変更しません。作り直しやキーの再発行は不要です。イベントに所属しない単独・composite 配置では開催用アカウントを引き続き拒否します。別の競技者アカウント内で複数チームに異なる region を割り当てる機能は使えますが、global IAM は共有され、catalog の IAM 監査には未解決事項があります。完全な分離や全問題の最小権限を証明するものではありません。
確認した ac26-crypto-battle の native profile は defaultScoreStealEnabled=false で、Docker や競技者 AWS アカウントを必要としません。得点を奪う機能のパラメーターを true にすると AWS を使う版を維持し、別の競技者アカウントが必要です。
catalog pin のない旧 Lite を更新する前に、配置済みの版ですべての大会を完了し、進行中の大会がないことの事前確認を明示的に満たしてください。通常の --yes や legacy catalog key では省略できず、過去のデータは自動移行しません。
データベースと停止
ローカルのデータベースは SQLite です。キーを含む非公開ディレクトリ全体を整合した状態でバックアップします。make down は大会データと停止した Docker の状態を保持します。再開には同じディレクトリを使います。新しいオンデマンドの Docker 環境は make local 後も停止したままで、参加者が再開します。AWS リソースの削除や大会時刻のリセットは行いません。環境を所有している保存領域を先に消さないでください。
Cloud は Lambda と選択した Turso / DynamoDB で開催します。make deploy は権限設定の事前確認が必要です。make destroy は対象を確認して基盤とデフォルトの所有データを削除します。外部 Turso の行は残し、make destroy-all で明示的にリセットします。問題環境は基盤を削除する前に大会の Teardown で撤収します。クラウド開催は Lambda・Cognito と選択した Turso / DynamoDB で、汎用 CloudFormation 配置、flag / multi-flag・定期採点、参加者の Console / CLI アクセス、Cryptography Battle などの組み込み coordination を実行します。Docker / Compose 問題はローカル開催専用で、クラウドのカタログには表示しません。実 AWS・hosted Turso での大会性能は未検証です。固定費ゼロのクラウド基盤は確立していません。AWS 問題の費用は別に確認します。
make local-clear は host を停止してから、確認後に競技データと所有する Docker 問題データを消去します。主催者キーと host 設定は保持します。make down はデータを保持して停止し、make local-reset は主催者アクセスを再発行します。
新しい Docker 大会は、停止状態のチーム・問題 jobs を大会ごとに最大 512 件準備します。参加者が Start / resume と Stop (keep data) を使います。停止は既存の書き込みレイヤーと volume を保持しますが、RAM は保持しません。自動退避や初期化は行いません。既存大会は従来の lifecycle を維持します。
デフォルトの同時起動上限はチームごとに 3 環境、host 全体で 12 環境です。さらに、コンテナに設定されたメモリー上限の合計を 4096 MiB までに制限します。これは起動の受付制限であり、実測使用量や必要な機器の保証ではありません。新しい Compose 計画は作問者の上限を保持し、未指定の項目に 512 MiB、1 CPU、256 PIDs を補います。必要な負荷を確認したうえで make local LOCAL_ARGS="--max-active-per-team 3 --max-active-environments 12 --container-memory-mib 4096" から受付制限を指定できます。
40 個の gateway 枠は起動中の環境だけに使います。必要な数だけ割り当てた runtime port は停止後も保持します。20 問 × 5 チームの synthetic テストでは 100 jobs と 105 runtime ports を割り当てました。これは割り当てと lifecycle の確認であり、実 Docker の同時実行性能を示しません。測定項目は docs/local-play-requirements.md を参照してください。
復旧した基盤は --drain-events を拒否します。基盤を削除する前に大会の Teardown で問題環境を撤収してください。