/itcobkai

Primary LanguageTypeScript

概要

サークルのOB会を大人数で行うために作成したボイスチャット兼Wikiです。

とりあえず試す

  1. Node.jsをインストール
  2. このリポジトリのコードをgit clone又はダウンロード
  3. これを展開して各ディレクトリに配置
  4. src/rtc/viewer/Viewer.tsxの以下の行を編集
// 以下をコメントアウト
ct.init(res.profiles, rtc.message)
rtc.start(ct.player!.profile, ct.player!.id, localAudio.current!, remoteAudio.current!, receive)

// 以下のコメントアウトを解除
ct.init(res.profiles, console.log)
ct.start(5, 4)
ct.join(res.profiles["2Jc4uot"], "2Jc4uot", 6, 7)
ct.join(res.profiles["C3kjj1X"], "C3kjj1X", 6, 6)
  1. 以下のコマンドを実行
$ npm install
$ npm start

デプロイ

AWSの設定

S3

以下の構造でバケットとオブジェクトを作成

itcobkai (公開バケット)
├- assets/
│  ├- favicon.png
│  ├- hakase.jpg
│  ├- map_b.png
│  └- map_t.png
├- build/
└- note/

itcobkai-internal (非公開のバケット)
└- md/

lambda

以下の関数を作成

  • itcobkai
    • AmazonS3FullAccessをアタッチ
    • AmazonDynamoDBFullAccessをアタッチ
    • lambdaディレクトリ直下のにあるPythonファイルを配置(tools/lambda.sh)
    • profiles.pyを配置
    • 以下の形式のkey.pyを作成(kinesisとskywayはどちらか一方のみでOK)
KEYS = {
    "AWS_REGION": 'kinesisのリージョン',
    "AWS_CHANNEL_ARN": 'kinesisのチャンネル',
    "AWS_ACCESS_KEY_ID": 'kinesisのアクセス鍵',
    "AWS_SECRET_ACCESS_KEY": 'kinesisの秘密鍵',
    "AWS_CH_NAME": 'kinesisのチャンネル名',
    "SKYWAY": "skywayのキー"
}

S3_PUBLIC = "itcobkai"
S3_INTERNAL = "itcobkai-internal"
  • itcobkai-requests
    • ここを参考にrequests(外部ライブラリ)をレイヤーとして追加
    • AWSLambdaRoleをアタッチ
    • lambda/discord.pyの内容をlambda_function.pyにコピー
    • 以下の形式のkey.pyを作成
DISCORD = {
    "CLIENT_ID": "Discord APIのID",
    "CLIENT_SECRET": "Discord APIのシークレットキー"
}

DynamoDB

以下のテーブルを作成する。全て「設定をカスタマイズ」からオンデマンドキャパシティーモードを選択する。

テーブル名 パーティションキー ソートキー TTL
itcobkai token (String) expired_at
itcobkai_notes id (String)
itcobkai_unreads user_id (String) note_id (String)
itcobkai_status mode (String)

Amazon API Gateway

以下の2つのエンドポイントを設定デプロイする。ステージからURLを控えておく。

  • POST /
    • lambda統合でitcobkaiと紐付ける
  • POST /discord
    • lambda統合でitcobkai_requestsと紐付ける

Kinesis Video Streams

skywayの方が圧倒的に使いやすい上に無料なので現在は使っていない。

フロント側の設定

  1. AWS SDK for Pythonをインストール
  2. 「とりあえず試す」の項目4以外を全て行う
  3. src/common/Config.jsでLAMBDA_URLS3_URLを設定
  4. 以下のコマンドを実行
$ npm run build

その他

マップの素材はドット絵世界さんからお借りしています。