EC2でWebRTC Ayameサーバー立ち上げ

#この記事について
3令和12月頃で、Ayame Signaling ServerをMRTK-WebRTC-Ayameのため利用するつもりでしたが、残念ですが接続が全然できなかった。いつもこんな感じで、結構悔しくって、Tarukosuさんのコードを他のdllで試しても全く結果が変わりませんでした。もしかしたら、接続ができる前にTimeout短い過ぎて、接続が切れる可能性を考えました。それで、自分のサーバーでAyame Signaling Serverを立ち上がったほうがいいじゃないかなと思っていました。

![MicrosoftTeams-image (2).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1156398/cf4e3b0b-4407-14bf-43e1-d3bfd71e2143.png)



#環境構築 

###アプリ 

Windows 10
AWSアカウント
Unity 2019.4.x

[WebRTC Signalling Server Ayame](https://github.com/OpenAyame/ayame/releases)
[Ayame YAMLファイル](https://github.com/OpenAyame/ayame/blob/develop/ayame.yaml.example) - WebRTCが繋がりにくい時、このファイルが重要です。

[MRTK-WebRTC-Ayame](https://github.com/tarukosu/MixedReality-WebRTC-ayame/releases)

#設定

* まず新しいEC2インスタンスを作成してください。AWSダッシュボードの左のタブウインドウで、インスタンスを開けます。
<img width="400" alt="tempsnip.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1156398/05e622c5-06a7-12a3-6a62-acc6c561982a.png">


* インスタンスを起動します。今回は、Windowsインスタンスを選びました。
<img width="400" alt="tempsnip.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1156398/6fa7b113-d327-18c5-8c83-5cd9a818cd8f.png">

* 無料版を選びまして、「確認と作成ボタン」と残りの設定はAWSに任せます。
<img width="800" alt="tempsnip.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1156398/74709ccc-e493-14c6-9768-e687d823a508.png">

* 作成したインスタンスを開けて、セキュリティタブを選んで、設定します。
<img width="400" alt="tempsnip.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1156398/71e65eef-7d7f-d0a5-6b98-867dc0b07423.png">


* インバウンドルールを編集します。カスタムTCPポート3000を追加します。保存します。
![tempsnip.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1156398/76289823-a864-c250-594c-9cd5da3e637c.png)

* インスタンスと接続して、RDPを選んでください。

#サーバー立ち上げ
* Windows 10でリモートデスクトップ接続アプリを開いてください。
オプションの表示を開いてください。接続設定はRDPファイルから開いてください。
<img width="400" alt="tempsnip.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1156398/b1f6c635-df6c-ec67-64e4-da890f6dafda.png">

* 接続前に、ファイル転送をできるためローカルソースを開いてください。
ローカルデバイスとリソースで詳細を開いてください。後、ドライブでチェック入れてください。
<img width="400" alt="tempsnip.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1156398/b4f569db-b5fe-23ba-9d72-4257e85bf5f2.png">

* 終わったら、接続してください。
Ayameサーバーをダウンロードしてください。EC2のOSを対応できる、一つ選択してください。今回の記事はWindows OSを使いましたので、ayame_windows_amd64.exe.gzをダウンロードしました。
![キャプチャ.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1156398/24307686-cfc1-d05f-9cdb-afaa94841378.png)

* exeファイルを引き抜くして、YAMLファイルと一緒のフォルダーで入れました。
EC2でエクスプローラーのNetworkを開いて、tsclientでダウンロードしたAyameサーバーのフォルダーをEC2へコピーしてください。今回の記事でAyameサーバーのフォルダーはデスクトップへコピーしました。
![tempsnip.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1156398/31a398ea-1929-38c1-4009-d147770234d4.png)


* Command Prompt (CMD)を開いて、Ayameフォルダーへ移動して、ayame_windows_amd64.exeを発生します。
![キャプチャ.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1156398/ea1e319b-6394-7caa-f5ab-6ba54b0185f7.png)

* 繋がりにくい時、EC2のFirewallを消してください。まだ繋がりにくい場合は、yamlファイルでwebhook_request_timeoutをちょっと上げてください。


#Unityプロジェクトの設定
* 新しいいUnityプロジェクトを作成してください。このサンプルで、Unity 2019.4.16を使います。
* こちらのリンクで、Tarukosuさんが説明したプロジェクト設定を従いください。

https://zenn.dev/tarukosu/articles/20210220-webrtc-ayame

* 最後はUnityProjectでAyameConnectionSettingsでServer URLを変更してください。
フォーマット　→　wss://「EC2のPublic IP」:「ポート」/signaling
例：　wss://12.34.56.78:3000/signaling
<img width="400" alt="tempsnip.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1156398/18a54baf-bdd4-505c-3604-a76bfdbdbaa5.png">

* 「wss」と接続できなかった場合は「wss」から「ws」に変更してください。「wss」と「ws」は「https」と「http」の違いと同じです。

* EC2のPublic IPはEC2のウォールペーパーで書いておりました。
![aaa.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1156398/92932392-1013-7107-9f41-a067b03327ab.png)