AWSで使う用語の説明①

 AWSの理解を深める目的でAWSに関連する知識を整理してみました。あくまでも自己満足ですし、まだ勉強不足であるため解釈に間違いがある可能性もあります。今回整理する知識は以下のものです。

 

  1. EC2インスタンス
  2. AMI
  3. キーペア
  4. パブリックIP
  5. Elastic IP
  6. ssh
  7. プロトコルのレイヤー
  8. ポート
  9. セキュリティグループ
  10. インスタンスのログイン方法
  11. yumコマンド
  12. Node.js
  13. Yarn
  14. 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とは、通信の「ルール」であるプロトコルの一種であり、このプロトコルの種類は階層ごとに分類されています。過去の記事でも言及しました。

kim-shun.hatenablog.com

 ではこのプロトコルの階層構造をもう少し詳しく説明します。最も上層部にアプリケーション層(レイヤー4)があり、その下にトランスポート層(レイヤー3)、さらにその下にインターネット層(レイヤー2)、そして最下部にネットワークインターフェース層(レイヤー1)があります。

 そしてアプリケーション層にHTTPSMTPFTPなどのプロトコルがあり、トランスポート層TCPUDPインターネット層に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ユーザーを使ってログインする方法は下記のコマンドを実行することです。

 

ターミナル

% cd ~
% mkdir ~/.ssh
% mv Downloads/鍵の名前.pem .ssh/
% cd .ssh/
% chmod 600 鍵の名前.pem
% ssh -i 鍵の名前.pem ec2-user@Elastic IP
% ssh -i aws_key.pem ec2-user@52.68.~~~~~~

 「.ssh」というディレクトリを作成し、ダウンロードしたpemファイルを.sshディレクトリに移動させます。そして最後の行のssh接続を実行した場合は「yes」と入力してログインが完了します。

 

11. yumコマンド

 yumコマンドとは、サーバに元々あるプログラムをアップデートできる、Linuxにおけるソフトウェア管理の「仕組み」です。MacOSにとってのHomebrewと同じ役割を果たす、「パッケージ」と言えます。パッケージとは、LinuxOS下における、ある機能を持った「プログラムの集合」のことです。

 以下のようなコマンドを実行してパッケージをアップデートできます。

 

ターミナル

[ec2-user@ip-172-31-25-189 ~]$ sudo yum -y update
[ec2-user@ip-172-31-25-189 ~]$ sudo yum -y install git make gcc-c++ patch
libyaml-devel libffi-devel libicu-devel zlib-devel readline-devel
libxml2-devel libxslt-devel ImageMagick ImageMagick-devel openssl-devel libcurl
libcurl-devel curl

 このyumコマンドの中で使われている「-y」はyumコマンドのオプションです。このオプションをつけることで、全ての問いに「Yes」と自動的に答える設定ができます。

 

12. Node.js

 Node.jsとは、本来ブラウザで動くはずのJavaScriptをサーバーサイドで動かす「パッケージ」のことです。

 

ターミナル

[ec2-user@ip-172-31-25-189 ~]$ sudo curl -sL https://rpm.nodesource.com/setup_10.x |
sudo bash -
[ec2-user@ip-172-31-25-189 ~]$ sudo yum -y install nodejs

 このようなコマンドでEC2にNode.jsをインストールできます。

 

13. Yarn

 Railsに搭載されているJavaScriptのパッケージを管理するための「パッケージマネージャー」です。

 

ターミナル

[ec2-user@ip-172-31-25-189 ~]$ sudo yum -y install wget
[ec2-user@ip-172-31-25-189 ~]$ sudo wget https://dl.yarnpkg.com/rpm/yarn.repo -O
/etc/yum.repos.d/yarn.repo
[ec2-user@ip-172-31-25-189 ~]$ sudo yum -y install yarn

 このようなコマンドでEC2にYarnをインストールできます。

 

14. EC2でRubyを使えるようにする

 以下のようなコマンドでRubyのバージョンを管理するツールとRubyをEC2にインストールできます。

ターミナル

[ec2-user@ip-172-31-25-189 ~]$ git clone https://github.com/sstephenson/rbenv.git ~/
.rbenv
[ec2-user@ip-172-31-25-189 ~]$ echo 'export PATH="$HOME/.rbenv/bin:$PATH"' >>
~/.bash_profile
[ec2-user@ip-172-31-25-189 ~]$ echo 'eval "$(rbenv init -)"' >> ~/.bash_profile
[ec2-user@ip-172-31-25-189 ~]$ source .bash_profile
[ec2-user@ip-172-31-25-189 ~]$ git clone https://github.com/sstephenson/ruby-build.git
~/.rbenv/plugins/ruby-build
[ec2-user@ip-172-31-25-189 ~]$ rbenv rehash
[ec2-user@ip-172-31-25-189 ~]$ rbenv install 2.6.5
[ec2-user@ip-172-31-25-189 ~]$ rbenv global 2.6.5
[ec2-user@ip-172-31-25-189 ~]$ rbenv rehash
[ec2-user@ip-172-31-25-189 ~]$ ruby -v

 これらのコマンドで、gitからクローンした「rbenv」や「ruby-build」といったRubyのバージョン管理ツールをインストールしています。また「パスを通す」作業もしています。PATHとは、複数の絶対パスの情報が保存されている環境変数のことです。パスを通すとは、どのディレクトリからでもアプリを呼び出せる状態にすることです。

 「source .bash_profile」は設定したパスを読み込むことであり、「rbenv rehash」は、使用しているRubyのコマンドで、gemのコマンドを使えるようにするためのコマンドです。

 またこのコマンドではRubyの「2.6.5」をインストールしています。

 

 

以上です。