こんにちは、Mashです。
本記事は私自身がAWSをお勉強で触ってみた経験を共有するシリーズ Mash式AWSチュートリアル です。
今回はAmazon EC2編の第1回となります。
EC2はまさにAWSの王道サービス(と勝手に思ってます笑)で、AWSを学習する上で通らない人はいないといっても過言ではなく、「AWSできます!」と言うためには必修科目です。
今回はハンズオンなしですがしっかり習得してください!
それではいきましょう!
What is EC2?
まずはEC2の概要から。
EC2とは
正式名称は Amazon Elastic Compute Cloud で、頭文字をとってEC2と呼ばれます。
EC2はAWSが提供する仮想サーバのサービスです。
AWSなどのクラウドサービスを利用しない場合(オンプレといったりします)、システムを構築するための準備をすべて自分たちで行う必要があります。
かなりざっくりですが、
- サーバ設置場所(データセンター)の選定
- ハードウェアの調達、設置
- ネットワーク結線
- 仮想化基盤(ハイパーバイザ)の構築
- 仮想マシンの構築
- OSインストール、初期設定
このような作業が必要になります。
これらをすべてやりきった上で、ようやっとアプリケーションを稼働させることができるわけなんですね。
事前にシステム負荷を見積もった上でハードウェアを購入する必要がありますし、作業ボリュームも多く、数ヶ月単位で時間もかかります。
そこで登場するのがEC2。
まず、AWSでは1~4まではすでに構築済みでサービスとして提供されています。
そして、EC2を利用すれば残りの5~6を数分で終わらせることができます。

事前にシステム負荷を見積もり、高額なハードウェアを購入する必要はありません。
必要なときに必要な分だけEC2サーバを立ち上げることで、高負荷にも対応し、かつ低負荷時にはコストを抑えることが可能です。
AWSではEC2仮想サーバのことを インスタンス と呼びます。
以降、仮想サーバのことをインスタンスと記載していますのでご留意ください。
利用料金
EC2には課金体系がいくつかあるのですが、ここでは一番基本となる オンデマンドインスタンス について 触れたいと思います。
※他の課金体系については別記事にします
ポイントは2つです。
EC2の起動時間
EC2インスタンスを起動している時間に対して課金されます。
システム負荷が高い時間帯はインスタンスを多く起動し、負荷が低い時間は止めておくという運用をすることで、コストを最適化することが可能です。

オンプレ環境では、システム構築時に資産を一括購入する必要があるため、負荷に応じてコストを抑えるといった運用はできません。
インスタンスタイプ
後述する インスタンスタイプ によって、インスタンスの単価が異なります。
インスタンスタイプは、EC2のCPUとメモリなどのハードウェアスペックセットのようなものです。
適当にいくつか抜粋してみました。
インスタンスタイプ名 | vCPU数 | メモリ (GiB) |
---|---|---|
t2.micro | 1 | 1 |
c4.4xlarge | 16 | 30 |
m5.24xlarge | 96 | 384 |
当然、高スペックなインスタンスタイプで稼働するものは高価格になります。
OSライセンス料
ライセンス料金が不要なOS(CentOS、Ubuntuなど)とWindows Serverでは、同じインスタンスタイプでもWindows Serverを稼働させているインスタンスのほうがより高価になります。
これはOS分のライセンス料が加算されているためです。
試算してみる
EC2の課金は起動時間とインスタンスタイプおよび選択したOSの掛け算です。
AWS公式サイトの価格表を元に、何パターンか試算してみましょう。
OS | インスタンスタイプ | 単価 | 1ヶ月(30日)の料金 |
---|---|---|---|
Amazon Linux | t3.medium | 0.0544USD/時間 | 0.0544USD × 24h × 30d = 39.168USD |
Amazon Linux | t3.2xlarge | 0.4352USD/時間 | 0.4352USD × 24h × 30d = 313.344USD |
Windows Server | t3.2xlarge | 0.5824USD/時間 | 0.5824USD × 24h × 30d = 419.328USD |
スペック増強することでかなり金額に差がでましたね。
EC2ではインスタンスタイプを柔軟に変更することが可能です。
システムリリース後、負荷状況を見ながら適切なインスタンスタイプに変更し、高負荷への対応やコスト最適化を行っていきましょう。
EC2の構成要素
それではここからはEC2インスタンスを技術的に紐解いていきます。
冒頭記載の通りインスタンスは仮想サーバですので、当然CPUやメモリ、ディスク、ネットワークカード、OSが一体となって稼働します。
これらがどのAWS用語と紐付いているかを整理していきましょう。
さきに全体像をご覧ください。

OS = AMI
AMIは Amazon Machine Image の略称で、EC2を展開するときに使用するOSテンプレートです。
Windows ServerやRed Hat、Ubuntuなど一般的なOSの各バージョンについて、AMIがひととおり提供されています。
このAMIをもとにEC2インスタンスをどんどん複製していくわけです。

また、Market Placeではサードパーティ製の仮想ソフトウェアがインストール済みのAMIなども提供されていたりします。

なお、一度構築したインスタンスに独自のカスタマイズを行い、そのインスタンスを自分だけのAMIとして保存しておくことも可能になっています。
大規模システムを展開する際には前述のとおりシステム負荷に応じてインスタンスを増減させるわけですが、素のOSからセキュリティパッチを適用して、必要なソフトウェアをインストール/設定して、アプリケーションコードを配置していては、とても時間がかかってしまいます。
必要な設定をすべて済ました状態をAMIとして保持しておけば、すぐにインスタンスとして複製し、利用開始することができます。
CPU + RAM = インスタンスタイプ
EC2のスペックを決めるのが インスタンスタイプ です。
さきほど触れたように、インスタンスタイプによってCPU数やメモリ量を調整するのですが、ネットワークやディスクのパフォーマンスがよくなるものもあったりします。
また、インスタンスタイプはいくつかのファミリーに分かれていて、「汎用的に利用できるもの」「CPU数が多いもの」「メモリ料が多いもの」「GPUを搭載したもの」など、展開するシステム(アプリケーション)に適したインスタンスタイプを選択できるようになっています。

ディスク = EBS
EC2インスタンスのディスク領域を、AWSではEBS(Elastic Block Store)というサービスで提供しています。
インスタンスにはEBSが必ず一つ以上アタッチされていて、ここにOS領域が保存されています。
もちろんEBSを2つ以上アタッチして、OS領域用、アプリケーションインストール領域用、その他データ保存用などと使い分けることも可能です。
またこちらの公式サイトのとおり、EBSでは様々な用途に応じたディスクを提供しています。
「高速な読み書きが可能なディスクが必要」「読み書きのパフォーマンスは不要だが、データ保管用に安価なディスクが必要」など、要件に応じた選択が可能です。

NIC = ENI
最後にENI(Elastic Network Interface)です。
EC2インスタンスはサーバですのでクライアントや他のサーバと通信する必要があります。
この”通信”を行うために必要なAWS コンポーネントが ENI です。
一般的な物理マシンでいうNICに相当します。
ENIも、インスタンスに複数アタッチすることができ、プライベートIPアドレスを複数もたせることが可能です。
実利用では、「ユーザが利用するサービスLAN」「バックアップなどの通信を行う管理LAN」といったように、用途別にNICを分けたりします。
以上がEC2インスタンスを構成するコンポーネントのざっくり概要です。
全体イメージを再掲しておきますね。

まとめ
さて、
今回はざっくりEC2を理解する上では避けて通れない前提知識について学びました。
- EC2はAWSの仮想サーバを提供するサービス名であること
- EC2はインスタンスが起動している分だけ課金されること
- EC2インスタンスはAMI、インスタンスタイプ(CPU、RAM)、EBS、ENIから構成されること
これらをおさえておけば、EC2はもう大丈夫です。笑
次回からはハンズオン形式でEC2について学んでいきたいと思いますので、更新をお楽しみに!
今回は以上です。
それじゃあまたね。