The Things StackをEC2にインストールする(1/2)
この記事と次の記事では,The Things Stack(TTS) Community EditionをAmazon EC2インスタンスにインストールする手順について整理します.
この記事では(何番煎じか分かりませんが)AWS環境で固定IPを振って外部からアクセスできるEC2インスタンスを用意する手順を説明します.次の記事で,用意したEC2インスタンスにTTSをインストールする手順を説明します.EC2はデプロイ環境として使うだけなので,TTS関連についてのみ知りたい場合は,本記事は飛ばして次の記事だけ参照ください.
The Things Stackについて
The Things Stackを含め,The Things Industries社が提供するLoRaWANに関するプロダクトやサービスについてはリンク先の資料等を参照ください1.The Things Stackは,それらのうちOSSで提供されるLoRaWANサーバを指します.
AWS Marketplaceで提供されているThe Things Stack AWS Launcher for LoRaWANを利用すると,AWS環境にプライベートなLoRaWANネットワークを構築することができるようです(手順などはこちら)が,ここでは手動でインスタンスを立ち上げ,TTSをインストールして外部からアクセスする手順をまとめます.
手順
- EC2インスタンスを起動する
- 固定IPを割り振る
- セキュリティグループを設定する
- Amazon Route53でDNSレコードを設定する
1. EC2インスタンスを起動する
初めに,EC2インスタンスを起動します.
左側のペインから,「インスタンス」>「インスタンス」を選択し,右上の「インスタンスを起動」を押下します.
イメージは,無料利用枠で利用できるイメージである「Ubuntu Server 20.04 LTS (HVM)」を利用します.
TTSの推奨動作環境はリンク先の通りですが,以下の説明では動作確認を優先することにして,インスタンスタイプは無料枠で利用できる「t2.micro」を選択します.
ステップ3〜ステップ6は特にデフォルト設定を変更せずに進みます.ステップ6では,sshで接続する際の送信元IPアドレスを制限するように警告が出るので,適宜設定します.
ステップ7で右下の「起動」を押下すると,ssh接続する際の鍵を指定するように要求されます.ここでは,新たに鍵を作成することにします.作成した鍵は適当な場所に保存します.
しばらくするとインスタンスが起動します.
2. 固定IPを割り振る
EC2のペインから「ネットワーク & セキュリティ」>「Elastic IP」を選択し,右上の「Elastic IPアドレスの割り当て」を押下します.次の画面では特に設定は編集せず「割り当て」を押下します.
すると固定IPが割り当てられるので,これを先の手順で作成したインスタンスに関連づけます.
3. セキュリティグループを設定する
この時点では,TTSを立ち上げても外部からアクセスすることができません.外部からアクセスするために,セキュリティグループを設定します.
EC2のペインから「インスタンス」>「インスタンス」を選択し,手順1で作成したインスタンスが所属するセキュリティグループを確認します.
ポート80(HTTP)と443(HTTPS)がアクセスを受け付けるように設定します.アクセス元のIPアドレスを制限する場合は,ソースで「カスタム」を選択し,アクセス元IPアドレスの範囲などを設定します.
4. Amazon Route53でDNSレコードを設定する
ドメインを設定しない場合は不要ですが,以下では独自ドメインをAmazon Route53で管理している前提で,取得したIPアドレスに関連づける手順を整理します.
Route53のペインから,「ホストゾーン」を選択し,TTSのインスタンスに割り当てたいドメイン名を選択します.
「レコードを作成」を押下し,適当なレコード名を入力します.レコードタイプは「A - IPv4アドレスと一部のAWSリソースにトラフィックをルーティングします。」を選択します.「値」のフィールドには,手順2で取得したElastic IP(固定IPアドレス)を入力します.入力後,「レコードを作成」を押下します.
確認
ここまでの手順が期待した通りに設定できているかを確認します.DNSが適切に設定されているか,ポートが期待した通りに開放されているかどうかは,他のサーバからnslookupコマンドやnmapコマンドを使うなどして,適宜確認します.
$ nslookup [your record].[your domain]
(中略)
Non-authoritative answer:
Name: [your record].[your domain]
Address: [your ip address]
$ nmap [your record].[your domain]
(中略)
Not shown: 997 filtered ports
PORT STATE SERVICE
22/tcp open ssh
80/tcp closed http
443/tcp closed https
sshでの接続は,EC2のペインから「インスタンス」>「インスタンス」で作成したインスタンスを選択し,「接続」からアクセス先を確認し,秘密鍵を指定してアクセスできるかどうか確認できます.
次の記事では,TTSのインストール手順を整理します.