EC2の概要
0:EC2とは?
Elastic Compute Cloudの略でAWSクラウド上の仮想サーバー。
インスタンスはEC2から立てられたサーバーのことです。
特徴は数分で起動し、1時間又は秒単位の従量課金。
サーバーの追加・削除、マシンスペック変更も数分で可能
OSより上のレイヤについては自由に設定できます。
1:AMIとは?
Amazon Machine Image:インスタンス起動に必要な情報が入った、OSのイメージサーバーのテンプレみたいなもの
特徴
AWSやサードパーティがAMIを提供。
自前のカスタムAMIも作成可能です。
カスタムAMIから何台でもEC2インスタンスを起動可能です。
インスタンスタイプとは?
サーバーのスペックを定義したもの
タイプにより、CPU,メモリ,ストレージ、ネットワーク帯域が異なります。
スペックが高ければ料金も高い、アクセス数などに応じてインスタンスタイプを選択します。
↓インスタンス世代
m5.xlarge ←インスタンスサイズ
↑ インスタンスファミリー
ストレージとは?
サーバーに接続するdataの保存場所。
EC2のストレージには2種類あリます。
EBS(Elastic Block Store) インスタンスストア OSやDBなど永続性と耐久性が必要なデータを置く なくなっても問題ないデータを置く 費用がかかるが高い可用性と耐久性 インスタンス専用の一時的なストレージ スナップショットを取得しS3に保存できる 無料,一時ファイル、キャッシュなど置く 他のインスタンスに付け替え可能 他のインスタンスに付け替えできない EC2インスタンスをStop/Terminateしても↓ EC2インスタンスをStop/Terminateすると EBSは保持可能 クリアされる
1:EC2インスタンスを構築する
最終的な構築イメージ
「EC2」で検索→「EC2」をクリックします。
EC2ダッシュボードの「インスタンス」をクリックして、「インスタンスを起動」をクリックします。
Amazon Linux 2 AMIの「選択」をクリックします。
t2.microを選択して「インスタンスの詳細の設定」をクリックします。
インスタンス数: 1 ネットワーク: 自分で作ったVPCを選択(my-portfolio-vpc) サブネット : my-portfolio-pubulic-subnet-1a 自動割り当てパブリックIP: 有効 キャパシティー予約: なし(※なし以外だと料金が発生します) 終了保護の有効化 なし(※本番などで削除する予定がない場合はありにします。) 後は特に変更しない
テナンシー:共有を選択 ネットワークインターフェイスからプライマリIPに10.10.0.10を選択
上記の設定をしてから「ストレージの追加」をクリックします。
ストレージの追加は特に変更なしで「タグの追加」をクリックします。
タグの追加キー:Name 値:my-portfolio-web
「セキュリティーグループの設定」をクリックします。
セキュリティグループ名:my-portfolio-web
警告がありますが、あとで設定します。「確認と作成」をクリックします。
設定に間違いがないか確認して「起動」をクリックします。
新しいキーペアの作成 my-portfolio-sshkey 「キーペアのダウンロード」をクリック
「保存」をクリックします。
キーペアをダウンロードしてから「インスタンスの作成」をクリックします。
「インスタンスの表示」をクリックします。
しばらく待って「2/2チェックに合格しました」「実行中」が確認できたらOKです。
サーバーにログインする
誰でもサーバーに入れると困るのでサーバーの作成者本人だけがログインできるようEC2ではSSHログイン時に公開鍵認証を行っています。
公開鍵認証とは?
公開鍵と秘密鍵を用いて、サーバーへのログイン時に認証を行う仕組みです。
ユーザ名とパスワードでログインするよりセキュアな仕組みです。
SSHとは?
公開鍵認証により通信内容が暗号化された遠隔ログインシステム
つまりサーバーと自分のパソコンの間をセキュアにつなぐサービスのこと。
サーバーにログインしてApacheをインストール
「EC2」で検索→「EC2」をクリックします。
EC2ダッシュボードから「インスタンス」をクリックして、インスタンスIDをクリックします。
パブリックIPv4アドレスをコピーします。175.41.208.84
Launchpadをクリックして、ターミナルを起動します。
chmod 600 ~/Desktop/my-portfolio-sshkey.pem ssh -i ~/Desktop/my-portfolio-sshkey.pem ec2-user@175.41.208.84 接続を続けていいか聞かれるのでyesと入力 exit
SSHでログインしてサーバーを操作できるのはなぜか?
サーバー上でSSH接続を受け入れ、ユーザーからのコマンドを受け付けるプログラム(sshd)が動いてるからです。
ポート番号について学ぼう
ポート番号はプログラムのアドレス。同一コンピューター内で通信を行うプログラムを識別するときに利用されます。
ポート番号を決める方法は
標準で決められている番号と動的に決まる番号があります。
ウェルノウンポート番号と呼ばれます。0〜1023までの整数値 SSH接続はポート番号22 HTTPサーバーポート番号80 SMTPサーバーポート番号25 というように決まっています。
動的に割り当てる番号は49142〜6553号までのいずれかの整数値を取ります。
クライアントのポート番号は、OSが他のポート番号とかぶらないように、ランダムに決めます。
ssh -i ~/Desktop/my-portfolio-sshkey.pem ec2-user@175.41.208.84 sudo lsof -i -n -P
どのポート番号でどのプログラムが待ち受けているかわかります。
sshd 3238 root 3u IPv4 19478 0t0 TCP *:22 (LISTEN) sshd 3238 root 4u IPv6 19487 0t0 TCP *:22 (LISTEN)
sshdというプログラムがPort番号22で待ち受けているよという意味です。
sshd 3249 root 3u IPv4 97831 0t0 TCP 10.10.0.10:22->14.11.197.224:29320 (ESTABLISHED) sshd 3268 ec2-user 3u IPv4 97831 0t0 TCP 10.10.0.10:22->14.11.197.224:29320 (ESTABLISHED) sshd 3361 root 3u IPv4 98737 0t0 TCP 10.10.0.10:22->14.11.197.224:21134 (ESTABLISHED) sshd 3379 ec2-user 3u IPv4 98737 0t0 TCP 10.10.0.10:22->14.11.197.224:21134 (ESTABLISHED)
(ESTABLISHED):相手と現在通信中のポートです。
Apacheのインストール
以下をコマンドします。 sudo yum update -y sudo yum -y install httpd
完了しましたと出ればOKです。
httpdを起動 sudo systemctl start httpd.service sudo systemctl status httpd.service
active (running)となってればOK
サーバーが起動した時httpdが自動で起動するようにする。 sudo systemctl enable httpd.service sudo systemctl is-enabled httpd.service
enabledとなっていればOKです。
ファイアウォールを設定しよう
通してよい通信だけを通してそれ以外は弾くようにします。
AWSではセキュリティグループがファイアウォールの役割を担ってい
て、
サーバーへ入ってくる通信(インバウンド)のポートは必要なものだけ開けるようにします。
サーバーから出ていく通信(アウトバウンド)のポートは多くの場合全てあいています。
ファイアウォールを設定してポート80番を開ける
EC2ダッシュボードから「インスタンス」をクリックして、インスタンスIDをクリックします。
パブリックIPv4アドレスをコピーします。175.41.208.84
ブラウザのURLに175.41.208.84と入力して実行します
アクセスが拒否されてしましました。これはセキュリティーグループで許可していないためです。
EC2ダッシュボードの「セキュリティーグループ」をクリックして、「セキュリティグループを作成」をクリックします。
「インバウンドルールを編集」をクリックします。
「ルールを追加」をクリックします。
タイプ:HTTP リソースタイプ:任意の場所 ソース:0.0.0.0/0
上記の設定をしたら「ルールを保存」をクリックします。
設定が間違っていないか確認したらOKです。
ブラウザで175.41.208.84にアクセスして以下のような表示になればOKです。
ElasticIPアドレスでIPアドレスを固定しよう!
ElasticIPアドレスとは?
インターネット経由でアクセス可能な固定グローバルIPアドレスを取得でき、インスタンスに付与できるサービスです。
EC2インスタンスのパブリックIPは起動停止すると別のIPアドレスが割り当てられるので、パブリックIPアドレスを固定したいのでElastic IPを使います。
※ElasticIPアドレスは、EC2インスタンスに関連付けられていて、そのインスタンスが起動中であれば無料。逆にそうでないと課金されるので注意してください。
Elastic IPアドレスを紐付ける
EC2ダッシュボードから「Elastic IP」をクリック
「Elastic IP アドレスの割り当て」をクリック
「割り当て」をクリックします。
正常に割り当てられましたとなっていればOKです!
ElasticIPアドレスを選択してアクションから「Elastic IP アドレスの関連付け」をクリックします。
インスタンス:自分で作成したEC2インスタンスを選択
プライベートIPアドレス:10.10.0.10
「関連付ける」をクリックします。
ブラウザでElastic IPアドレスにアクセスしてこのような表示になっていればOKです。
EC2インスタンスを停止したいとき
ElasticIP関連付け削除とElasticアドレスの開放
EC2ダッシュボードの「Elastic IP」をクリック、「Elastic IP アドレスの関連付けの解除」をクリックします。
「関連付け解除」をクリックします。
「Elastic IP アドレスの開放」をクリックします。
「Elastic IP アドレスが解放されました。」を確認します。
EC2の停止
EC2ダッシュボードの「インスタンス」をクリックして、「インスタンスの停止」をクリックします。
正常に停止しましたとなっていればOKです!