[AWS]Amazon EC2
AWSの無料利用枠(アカウント作成から1年)を使って、EC2インスタンスを起動してブラウザからHTTPアクセスするところまでをまとめます。
EC2インスタンスを作成
EC2インスタンスを作成する
EC2 > インスタンス > インスタンスを起動 をクリックして以下の項目を入力・選択します。
インスタンス名、OSイメージ
インスタンス名は任意の名前、OSイメージは自分の扱いやすいOSを選択します。ここではUbuntuを選択しました。
インスタンスタイプ、キーペア
インスタンスタイプ
インスタンスタイプは無料枠で利用可能な t2.micro を選択します。
キーペア
EC2インスタンスの作成後、SSH接続して各種必要ソフトなどのセットアップを行います。その際必要になるのがキーペア(公開鍵と秘密鍵)を作成します。公開鍵はEC2インスタンス内に保存され、秘密鍵はユーザー自身がクライアント端末で管理します。
- キーペア名
任意の名前 - キーペアのタイプ
RSA - プライベートキーファイル形式
.pem
作成するとプライベートキー(.pem)ファイルがダウンロードされるので、ローカルの任意の場所へ保管しておきます。
ネットワーク設定
AWSには既存のセキュリティグループが一つ用意されているので、既存のセキュリティグループを選択します。
インスタンスを起動
インスタンスを起動をクリックして少し待ち、以下のような画面になればひとまずOKです。
アプリケーションセットアップ
作成したEC2インスタンスにSSHで接続し、アプリケーションのセットアップをします。
SSH接続
構文: ssh -i [プライベートキー] [EC2インスタンス]
SSHコマンドは EC2 > インスタンス > [作成したインスタンス] > 接続 > SSH から確認できます。
SSH接続: $ ssh -i "test-key.pem" ubuntu@ec2-xxx-xxx-xxx-xxx.ap-northeast-1.compute.amazonaws.com Are you sure you want to continue connecting (yes/no/[fingerprint])? yes Welcome to Ubuntu 22.04.3 LTS (GNU/Linux 6.2.0-1012-aws x86_64) * Documentation: https://help.ubuntu.com * Management: https://landscape.canonical.com * Support: https://ubuntu.com/advantage (省略) The list of available updates is more than a week old. To check for new updates run: sudo apt update ubuntu@ip-xxx-xxx-xxx-xxx:~$
SSH接続できないとき
Permissionエラー
$ ssh -i "test-key.pem" ubuntu@ec2-xxx-xxx-xxx-xxx.ap-northeast-1.compute.amazonaws.com @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ @ WARNING: UNPROTECTED PRIVATE KEY FILE! @ @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ Permissions 0660 for 'test-key.pem' are too open. It is required that your private key files are NOT accessible by others. This private key will be ignored. Load key "test-key.pem": bad permissions ubuntu@ec2-xxx-xxx-xxx-xxx.ap-northeast-1.compute.amazonaws.com: Permission denied (publickey).
この場合は、ローカルに保存したプライベートキーの権限の問題です。プライベートキーの権限は600(-r--------)にしなくてはいけません。以下コマンドで権限を変更します。
chmod 600 test-key.pem
SSHコマンドが返ってこない、もしくはタイムアウト
ネットワークセキュリティグループのインバウンドルールにSSH接続が許可されているかを確認します。
EC2 > セキュリティグループ から、EC2インスタンスに紐づけたセキュリティグループを開きます(ここではdefault)。インバウンドルールの編集を開き、SSH接続が入っているか、許可IPが自分のPCのグローバルIPが設定されているか等を確認します。
SSHが含まれていない場合は、「ルールを追加」をクリックし、以下のように追加します。
- タイプ
SSH - ソース
接続元IP
CIDER形式で範囲指定可能です。ここではマイIPを選択し、自分のPCのグローバルIPを設定しています。
アプリケーションのセットアップ
WEBサーバーとして実行するためApacheをインストールします。
sudo apt update
sudo apt install apache2
sudo ufw status
sudo systemctl status apache2
Apacheのステータスが、以下のように表示されればOKです。そうでない場合は、Apache操作コマンドで確認してみてください。
Apache操作コマンド
WEBサーバーを停止 |
|
---|---|
WEBサーバーを起動 |
|
WEBサーバーを再起動 |
|
WEBサーバーをリロード | ※設定変更を反映させるときなどに使用する。 |
WEBサーバーを無効化 | ※デフォルトでサーバー起動時に自動的に起動する。 |
WEBサーバーを有効化 | ※デフォルトでサーバー起動時に自動的に起動する。 |
セキュリティグループの設定
インバウンドルールの編集
WEBサーバーとしてブラウザでアクセスできるようにするため、セキュリティグループにHTTP接続を許可する設定を追加します。
EC2のメニューから セキュリティグループ > [EC2インスタンスに紐づいているNSG(ここではdefault)] > インバウンドルール を開き「インバウンドルールの編集」をクリックします。
「ルールを追加」をクリックし、以下のように追加します。
- タイプ
HTTP - ソース
接続元IP
CIDER形式で範囲指定可能です。ここではマイIPを選択し、自分のPCのグローバルIPを設定しています。
パブリックIPの取得
Elastic IP
最後にEC2インスタンスへパブリックIPアドレスを関連付けを行います。パブリックIPアドレスはElastic IPを使用して、取得・紐づけを行います。
本来Elastic IPは課金対象となりますが、一つまでの割り当てであれば無料枠内で使用できます。
Elastic IPの割り当て
EC2メニューから Elastic IP を開き、「Elastic IPを割り当てる」をクリックします。ここでは特に設定する項目はないので、そのまま「割り当て」をクリックします。
Elastic IPの関連付け
割り当てたElastic IPを、EC2インスタンスへの関連付けを行います。Elastic IPアドレスの一覧にチェックを入れて、アクションから「Elastic IPアドレスの関連付け」をクリックします。
以下のようにそれぞれ選択して、「関連付ける」をクリックします。
- リソースタイプ
インスタンス - インスタンス
作成したEC2インスタンスを選択 - プライベートIPアドレス
作成したEC2インスタンスのプライベートIPアドレスを選択
動作確認
EC2 > インスタンス > [作成したインスタンス] から、パブリック IPv4 アドレスへアクセスすると、以下のようにUbuntuのデフォルトページが表示されます。
今後はここで様々なアプリケーションを動かして、まとめていきたいと思います。
コメント
コメントを投稿