-
-
Notifications
You must be signed in to change notification settings - Fork 143
AWSでやねうら王
Windows環境 + 将棋所で使う場合について書いています。他の環境で使う場合も、参考になると思います。
🌈 やねうら王チームの勉強会の動画
AWS EC2を借りて起動します。
今回は、Ubuntu 20.04を使います。
⚠ このあとsshで接続するので、キーペアは .pem 形式のほうを選択してください。
コマンドプロンプトから。
ssh -i "保存したpemファイルの名前.pem" ubuntu@【ここにIPアドレス】
⚠ コマンドプロンプトは、保存したpemファイルのある場所で開いてください。
💡 sshコマンドは、Windows 10 RS4(1803)以降、もしくはWindows 11ならば最初から使える状態になっています。
秘密鍵のアクセス権限設定に余計なものが付いていると起きる現象です。
(例: 「NT AUTHORITY\Authenticated Users
: そのコンピュータにログイン出来る人全部」から読み取り可能な場所に秘密鍵ファイルを配置している)
LinuxでSSHを使う場合も、SSH鍵のパーミッションとかが他の一般ユーザーから読み取り可能だったり不適切だと起きるエラーです。
Windowsの場合、Cドライブ直下に掘った、アクセス権限を弄っていない(NT AUTHORITY\Authenticated Users
からのアクセスが許可されている)作業用フォルダを使っていて、そこに秘密鍵を置こうととした時などに起きやすいです。
- Linuxならパーミッションを600に変更。
- Windowsならそのファイルにアクセス可能なユーザーを自分だけに変更する。
- 解決しない時 👉 ユーザーフォルダ (
C:\Users\%USERNAME%\
) の下であれば、変なこと(ユーザーフォルダに他ユーザーからのアクセス権限を追加してしまっている、など)をしていなければ、標準ではそのユーザー(+SYSTEM+Administrators)でしかアクセスできない権限設定になっているので、ユーザーフォルダの下にSSH秘密鍵を格納するためのフォルダを作成して入れるのがお勧め。
- 解決しない時 👉 ユーザーフォルダ (
💡 参考 : SSHでUNPROTECTED PRIVATE KEY FILEと言われたら : https://note.affi-sapo-sv.com/ssh-unprotected-key.php
VSCode + SSH Remoteを用いて、ソースコードや評価関数ファイルなどを転送します。
- makeを使えるようにして、 👉 makeコマンドが使えるまで
- makeコマンドでビルドします。 👉 makeでビルドする場合
例えば、aws-engine.bat というファイルを新規に作成して、以下の内容にします。
ssh -i "保存したpemファイルの名前.pem" ubuntu@【ここにIPアドレス】 ./YaneuraOu-by-gcc
⚠ この .batファイルと同じフォルダに .pemファイルが存在している必要があります。
また初回接続時には、sshコマンドが「知らないホストだけどいいかな?」みたいな確認のメッセージが出てきて面倒なので、このチェックを省略するオプションをつけておいたほうが運用が楽でしょう。これは、以下のように「-o StrictHostKeyChecking=no」と書きます。
あと、一定時間データのやりとりがない場合、ssh接続は自動的に切断されてしまうので、15秒おきに応答の確認をすることで接続を維持するために「-o ServerAliveInterval=15」もつけておくと良いでしょう。
ssh -i "保存したpemファイルの名前.pem" -o StrictHostKeyChecking=no -o ServerAliveInterval=15 ubuntu@【ここにIPアドレス】 ./YaneuraOu-by-gcc
上で作成した.batファイルは、将棋所からエンジンとして登録できます。
AWSを初めて使う時は、大きなスペックのインスタンスを使わせてもらえないかも知れません。その場合は、利用枠を広げる申請が必要になります。
👉 オンデマンドインスタンスの EC2 vCPU 制限引き上げをリクエストをする方法を教えてください。 : https://aws.amazon.com/jp/premiumsupport/knowledge-center/ec2-on-demand-instance-vcpu-increase/
AWSのインスタンスを使い終わったら、AWSのダッシュボードで
- 起動中のインスタンスが0になっているか
- ボリュームの数が0になっているか
- ストレージ容量に対してもわずかだがお金がかかり続ける。
を必ず確認するようにしましょう。