AWS 学習記録(3)
EC2
AWSの仮想サーバー
AMI
Amazon Machine Image。サーバーのテンプレートのようなもの。
インスタンスタイプ
サーバーのスペック定義。高性能なスペックのサーバーほど料金が高くなる。
ストレージ
サーバーにくっつけるデータの保存場所。
EBS、インスタンスストアの2種類がある。
EBS(Elastic Block Store)
他のインスタンスにも付け替え可能。
インスタンス再起動でもデータはなくならない。
追加費用あり。
インスタンスストア
他のインスタンスに付け替え不可能。
インスタンス再起動でデータは削除されるため、一時ファイル・キャッシュなどのデータを置く。
追加費用なし。
EC2インスタンスの設置
ネットワーク:配置したいVPCを指定
サブネット:配置したいサブネットを指定
自動割り当てパブリックIP:グローバルIPから接続できるようにしたい場合、「有効」にする
キャパシティー予約:課金が発生するため「なし」を選択する
ネットワークインターフェースのプライマリIP:10.0.10.10(例) を設定する。利用できるサブネットの中でIPを指定すること。
SSH
自分のPCからサーバーを操作する際の仕組み。通信内容が暗号化される。
公開鍵認証
公開鍵は南京錠(だれでもロック可能)、
秘密鍵は南京錠のカギのようなイメージ。
AWSのEC2はSSHログイン時に公開鍵認証を用いており、EC2作成時に作成するpemファイルが秘密鍵となる。そのため、秘密鍵をもっているユーザーだけがサーバーにログイン可能となる。
ポート番号
サーバー上で実行されているプログラムは複数存在する。そのため、クライアントからのリクエストに対して、どのプログラムで処理を行うかはポート番号により識別を行っている。
たとえば、SSHログイン時に実行される処理は ポート番号22 を使ってやりとりするということが決まっている。
他)HTTP:80、SMTP:25、HTTPS:443
sudo lsof -i -n -P
SSHログイン後のコンソールで上記を入力すると
どのプログラムがどのポートで待ち受けているか確認することができる。
Apache
yum をアップデート。-y yesオプション
sudo yum update -y
apacheをインストールして、起動する。その後起動したか確認する。
sudo yum -y install httpd
sudo systemctl start httpd.service
sudo systemctl status httpd.sevice
他にも実行中のプロセスを確認することで確認できる。
ps -axu | grep httpd
サーバー起動時にapacheを自動起動するよう設定する
sudo systemctl enable httpd.service
設定がきちんと行われたか確認する
sudo systemctl is-enabled httpd.service
ファイヤーウォール
不正アクセスを防ぐための通信を遮断する仕組み。
AWSではセキュリティグループがファイヤーウォールの役割を担っている。
セキュリティグループはEC2などインスタンス単位で設定でき、インスタンスには少なくとも一つのセキュリティグループを設定する必要がある。
WEBサーバーを使えるようにするためには、セキュリティグループを作成し、ポート番号80のインバウンド(外部からのサーバーリクエスト)を受け付けるように設定する必要がある。
設定は、適用されているセキュリティグループのインバウンドルールから変えられる。
また、セキュリティグループのインバウンドルールでは、リクエストの受付対象として、ほかのセキュリティグループを設定することもできる。そうすることで、個別のIPアドレスなどを打ち込むより楽に設定できる。
Elastic IPアドレス
EC2インスタンスは再起動するとグローバルIPアドレスが変更されてしまう。そのため、IPアドレスを固定するために Elastic IPアドレス を設定する必要がある。
実際に使う際は、Elastic IPを作成(割り当て)し、インスタンスに紐づけ(関連付け)することで設定できる。
無駄な課金を防ぐ
インスタンスに紐づけない状態で固定IPアドレスの確保すると、料金が発生するため、無駄な料金を発生させないようにするには、インスタンスを停止している場合や学習のための試用が終わったら固定IPアドレスを解放する必要がある。
アクション→アドレスの関連付けの解除→アドレスの解放
また、Elastic IPの解放のほかにインスタンスも起動停止しておく必要がある。
アクション→インスタンス