概要
Amazon EC2 (Amazon Elastic Compute Cloud) とは、クラウド上にOS付きの仮想マシン (VM) を作成できるサービスである。
クラウド上に自身または自社専用のサーバを構築することができる。
このように、クラウド上でOSありの仮想マシン環境を提供するサービスをIaaS (Infrastructure as a Service )と呼ぶ。
Amazon EC2はIaaSの中でも最も広く使用されているサービスであり、AWSの主要サービスの1つである。
Amazon EC2のようなIaaSをオンプレミスサーバと比較したメリットとして、物理的なハードが不要である事によるスペースや初期費用のメリットが挙げられる。
また、それ以外にも以下に示すメリットが得られる。
- 従量制(使用した分)だけ過不足なく料金が請求される。(コストの変動費化)
- 障害への耐性を簡単な設定で確保できる。(可用性)
- 適切な設定により柔軟に性能を向上できる。(パフォーマンス)
- アクセス権限を簡単に設定できる。(セキュリティ)
また、より機能を限定したSaaSやPaaSと比較した場合の特徴としては、「様々なことができるが、何かをするためには自身で逐次設定が必要である」ことが挙げられる。
ただし、近年ではサーバーレス技術を用いて設定管理を簡略化できるFargateやLambda等のサービスに置き換えられることも増えている。
様々なことができ、かつ、料金が安いというAmazon EC2の特徴は多くの企業にとって魅力的である。
EC2の構造
Amazon EC2は大きく分けて、3つの構成要素から成り立っている。
| 名称 | 一般的なPCにおける役割 |
|---|---|
| AMI (OS) | OS (Linux, Windows等) + 一部のミドルウェア |
| インスタンスタイプ | CPU + メモリ (+ ストレージ + GPU) |
| ストレージ (EBS) | ストレージ |
AMI (OS)
AMI (Amazon Machine Images) とは、インスタンスの起動時に実行するOSイメージを表す。
また、ミドルウェアがインストールされたAMIもあり、用途に応じて選択することができる。
AWSがデフォルトで提供するAMI以外にも、サードパーティ製のAMIやユーザが独自に作成できるカスタムAMIと呼ばれる仕組みが存在しており、環境構築の簡略化やバックアップ用途等で使用されている。
AWSがデフォルトで提供するAMIを下表に示す。
また、アーキテクチャも同時に選択できるが、アーキテクチャとインスタンスタイプのアーキテクチャを揃える必要がある。
| 名称 | 分類 | 概要 |
|---|---|---|
| Amazon Linux | Linux | RHEL派生のAmazonがカスタマイズしたLinux |
| SLES | Linux | Slackware派生のLinux |
| RHEL | Linux | RHEL |
| Ubuntu Pro | Linux | Debian派生のLinux |
| Windows Server | Windows | - |
初めて使用する場合は、Amazon Linuxを選択することが推奨される。
ミドルウェア
一般的なのWebサーバ等の用途であれば、OSのみがインストールされたAMIでよい。
以下に示すような特殊用途を想定して、一部ミドルウェアがインストールされたAMIも提供されている。
| AMIの名称 | 概要 | 用途 |
|---|---|---|
| Deep Learning AMI | TensorFlowおよびPyTorchの実行環境(CUDA, GPUドライバ等) | Deep LearningによるAI開発 |
| with SQL Server | SQL Serverがインストールされている | データベースサーバ |
| with .NET 6 | .NETの開発環境やMATEによるデスクトップ環境 | .NETを使用した開発 (Unityを使用したゲーム開発等) |
インスタンスタイプ
サーバ上で処理を実行する装置(CPU, RAM等)を選択する。
CPUおよびRAM等を選択するために一意に付与されたIDをインスタンスタイプと呼び、t2.microのような名称で表される。
名称の解釈を以下に示す。
- 先頭の文字
- インスタンスの種類(ファミリー)
- 用途と対応
- 先頭から2つ目の数字
- 世代
- 数字が大きいほど高スペック
- nano、micro
- サイズを表す。
- 基本的に大きいほど高スペック
| 名称 | 概要 |
|---|---|
| vCPU | 仮想CPUの個数 (詳細なCPUの種類は、Amazon EC2の公式ドキュメントを参照すること) |
| メモリ | 仮想メモリの容量 |
| ネットワーク帯域幅 | EC2外部と通信する際の帯域幅 (通信速度) |
| ストレージ | インスタンスストア(後述)の容量 (EBSではないことに注意する) 通常は0 |
| GPU | GPUの個数 (一般的なサーバ用途では0でよいが、Deep Learningをする場合は必要となる)
|
また、用途とインスタンスタイプの関係の詳細を知りたい場合は、公式ドキュメントを参照すること。
例えば、学習用途の場合は、t2.microを選択してよい。