AWSで使う用語の説明①
AWSの理解を深める目的でAWSに関連する知識を整理してみました。あくまでも自己満足ですし、まだ勉強不足であるため解釈に間違いがある可能性もあります。今回整理する知識は以下のものです。
- EC2インスタンス
- AMI
- キーペア
- パブリックIP
- Elastic IP
- ssh
- プロトコルのレイヤー
- ポート
- セキュリティグループ
- インスタンスのログイン方法
- yumコマンド
- Node.js
- Yarn
- EC2でRubyを使えるようにする
1. EC2インスタンス
EC2インスタンスとは「仮想マシン」です。AWSがこのソフトウェアを利用して、仮想的に1つのLinuxサーバーを利用できる仕組みを使えるようにします。
2. AMI(Amazon Machine Image)
AMIとはサーバーのデータを丸ごと保存した「データ」のことです。この中には事前にインストールされた「OS」があるため、自分で1からインストールしなくても済みます。インスタンス起動時に「Amazon Linux 2 AMI」といったAMIを選択できます。
3. キーペア
インスタンスへログインする際に必要となる「秘密鍵」のことです。
4. パブリックIP
「EC2インスタンス」作成時に自動で割り振られるIPアドレスです。このパブリックIPはサーバーを再起動させるたびに変わってしまいます。
5. Elastic IP
サーバーを再起動させるたびにパブリックIPが変わってしまうという問題を解決する、AWSから割り振られる「固定のパブリックIPアドレス」のことです。このElastic IPをEC2インスタンスに紐づけることで、インスタンスの起動や停止に関係なく同じIPアドレスで通信ができます。
6. ssh(Secure Shell)
EC2インスタンスにアクセスするための「通信手段」です。暗号や認証の技術を利用して、離れた場所にあるリモートサーバーと安全に通信できます。しかしアプリケーション層のHTTPのように他の接続は一切つながりません。
7. プロトコルのレイヤー
アプリケーション層のHTTPと言いましたが、このHTTPとは、通信の「ルール」であるプロトコルの一種であり、このプロトコルの種類は階層ごとに分類されています。過去の記事でも言及しました。
ではこのプロトコルの階層構造をもう少し詳しく説明します。最も上層部にアプリケーション層(レイヤー4)があり、その下にトランスポート層(レイヤー3)、さらにその下にインターネット層(レイヤー2)、そして最下部にネットワークインターフェース層(レイヤー1)があります。
そしてアプリケーション層にHTTP、SMTP、FTPなどのプロトコルがあり、トランスポート層にTCP、UDP、インターネット層にIP、ICMP、ネットワークインターフェース層にWi-Fi、イーサネットなどがあります。
アプリケーション層はアプリごとの役割を規定し、トランスポート層はデータの分割や品質保証を規定します。そしてインターネット層はネットワーク間の通信を規定し、ネットワークインターフェース層は、コネクタ形状や周波数といったハードウェアに関する規定をします。
8. ポート
「ssh」で「EC2インスタンス」にアクセスする際に、EC2インスタンスがHTTPと繋がるように開放する必要がある「仕組み」です。IPアドレスを住所の番地に例えた際に、部屋番号に該当するのがポート番号であり、このポート番号は「0~65535」まで使用できます。リクエスト時にこのポート番号を指定することで1つのサーバーとクライアントが繋がります。
9. セキュリティグループ
EC2インスタンスが属する「まとまり」です。このセキュリティグループで複数のEC2インスタンスのネットワーク設定を一括で行うことができます。またこのセキュリティグループでポートの設定を行います。
設定時に出てくる「0.0.0.0」や「::/0」は「全てのアクセスを許可する」という意味です。
10. インスタンスのログイン方法
EC2インスタンスを作成すると「ec2ユーザー」というユーザーと対応する「ssh秘密鍵」が生成されます。このec2ユーザーを使ってログインする方法は下記のコマンドを実行することです。
ターミナル
「.ssh」というディレクトリを作成し、ダウンロードしたpemファイルを.sshディレクトリに移動させます。そして最後の行のssh接続を実行した場合は「yes」と入力してログインが完了します。
11. yumコマンド
yumコマンドとは、サーバに元々あるプログラムをアップデートできる、Linuxにおけるソフトウェア管理の「仕組み」です。MacOSにとってのHomebrewと同じ役割を果たす、「パッケージ」と言えます。パッケージとは、LinuxOS下における、ある機能を持った「プログラムの集合」のことです。
以下のようなコマンドを実行してパッケージをアップデートできます。
ターミナル
このyumコマンドの中で使われている「-y」はyumコマンドのオプションです。このオプションをつけることで、全ての問いに「Yes」と自動的に答える設定ができます。
12. Node.js
Node.jsとは、本来ブラウザで動くはずのJavaScriptをサーバーサイドで動かす「パッケージ」のことです。
ターミナル
このようなコマンドでEC2にNode.jsをインストールできます。
13. Yarn
Railsに搭載されているJavaScriptのパッケージを管理するための「パッケージマネージャー」です。
ターミナル
このようなコマンドでEC2にYarnをインストールできます。
14. EC2でRubyを使えるようにする
以下のようなコマンドでRubyのバージョンを管理するツールとRubyをEC2にインストールできます。
ターミナル
これらのコマンドで、gitからクローンした「rbenv」や「ruby-build」といったRubyのバージョン管理ツールをインストールしています。また「パスを通す」作業もしています。PATHとは、複数の絶対パスの情報が保存されている「環境変数」のことです。パスを通すとは、どのディレクトリからでもアプリを呼び出せる状態にすることです。
「source .bash_profile」は設定したパスを読み込むことであり、「rbenv rehash」は、使用しているRubyのコマンドで、gemのコマンドを使えるようにするためのコマンドです。
またこのコマンドではRubyの「2.6.5」をインストールしています。
以上です。