【AWS入門④】EC2の構築における基礎の基礎

7 min read読了の目安(約6600字

はじめに

Webサービスに関するインフラの知識不足の解消&クラウドサービスの世界シェア1位であるAWSの学習のため、YouTubeでAWSの学習動画やエンジニアに関する情報を提供している「くろかわこうへい」さんが開催する AWS CloudTech に参加しました。
学習を進める上で習得した技術情報を記載します。

気になる方は以下を参照してください。

注意点

基本的にAWSに関する内容を記載していきます。
ネットワークの基礎的な用語や少し専門的な用語は説明することもあるかもしれませんが、自分が必要と思った際にのみ記載します。
※気になったら調べてみましょう!

EC2

AWSの仮想サーバーサービスのことです。

サーバーについてはこちらでも少し触れていますので参照してみてください↓
【AWS入門①】AWSとは~クラウドサービスについて~

仮想サーバーとは

1台のサーバー上で複数のオペレーションシステム(OS)を構築し、複数のサーバーとして運用できるような仕組みのことです。
本来、物理サーバー1台に対して1つの環境しか構築できませんでしたが、仮想化技術を使うことで1台に複数のサーバーを構築できるようになりました。

本来この仮想サーバーは物理サーバー内に構築されますが、物理的な物品の用意をする必要がなくブラウザ上から操作のみで仮想サーバーを作るサービスがEC2になります。

物理サーバーを構築する際に使用する「OS」「CPU」などは、AWS(EC2)内にそれぞれ対応するサービスとして独立しています。

これらのEC2に関連するサービスを解説していきます。

AMI(Amazon Machine Image)

EC2はインスタンスという単位で、サーバー環境を構築します。
「インスタンスを作成する」などの場合は「EC2で仮想サーバーを作る」と考えてください。

AMIはインスタンスを作成する際に選択する「OSやボリュームの情報をまとめたテンプレート(イメージ)」のことです。
選択できるAMIの種類は豊富でWindows ServerやLinuxなど各システムの使用に適したOSも選択できます。

OSがインストールされているだけではなく、ソフトウェアがインストールされたAMIも選択することができます。

コミュニティAMIは有志がアップしたAMIになります。
公式がアップしている場合もありますが、アップされたAMIに対して厳正な審査などがあるわけではないのでどのAMIが安全でかつ、最適なのか注意が必要になります。

AWS AMI Design

AMIにどの程度まとめさせてインスタンスを作成させるかの資料が公式サイトに存在します。

用途によってどのAMIを選択するべきかが変わり、運用面などを考慮した場合どのAMIが最適かを判断する必要があります。

  • Fully Baked AMI
    アプリケーションまで全てが含まれているAMI。
    素早く起動させることを目的としており、規模が小さいシステムに向いています。

  • JeOS(Just Enough Operating System) AMI
    OSなどの必要最低限に留めたAMI。
    最初の起動時に、必要なすべてのソフトウェアをダウンロードと設定作業まで行います。
    サーバーとしての要件が増えた際に柔軟に対応できます。

  • Hybrid AMI
    上記2つの中間に位置するAMIです。
    どちらの要素も必要となり、システムの要件によって比重を振り分けた場合に選択されます。

インスタンスタイプ

CPU、メモリ、ストレージ、ネットワークキャパシティーの様々な組み合わせの構成をインスタンスタイプと呼びます。
もちろんスペックなどが上がれば発生料金は加算されますが、システムの要件や目的に合わせたインスタンスタイプを選択することで安定したシステムの構築、運用が可能になります。

例)t2.micro

インスタンスタイプで有名な「t2.micro」を例として解説します。

  • ファミリー名
    ファミリー名は〇〇系と分かれており、用途によって適したインスタンスを構築できます。代表的なのが
    • T系:CPUバースト可能な汎用インスタンス
    • M系:汎用インスタンス
    • C系:コンピューティング最適化インスタンス
      「処理の多いWebサーバー」「科学的なモデリング」「機械学習/深層学習」に向いています
    • R系:メモリ最適化インスタンス
      「高いパフォーマンスのDB」「ビッグデータ処理」に向いています
  • 世代番号
  • インスタンスサイズ

以下のように選択することができます。

※インスタンスタイプに「a」が付与した形式はCPUがAMDになります。「a」が付与しないのはIntelになります。

EBS(Elastic Block Store)

EC2に対して使用するブロックストレージサービスです。
イメージとしては外付けディスクです。

EBSの種類

性能によって以下の4種類に分けることができます。

SSDタイプ

  • 汎用SSD(gp2)
    EC2構築時にデフォルトでアタッチされるEBSになります。名前の通り様々な用途で使用できます。

  • プロビジョンドIOPS SSD(io1)
    汎用SSDより性能が良く、データ容量に加えてIOPSを設定できるSSDタイプのEBSになります。用途としては主にRDBやNoSQLデータベースのサーバーへ使用することが多いです。

HDDタイプ

  • スループット最適化HDD(st1)
    SSDタイプに比べると書き込み速度は遅くなりますが、HDDタイプの中では性能が高いEBSになります。バッチ処理、ビッグデータのようにデータを多く貯め込むような使い方に向いています。

  • Cold HDD (sc1)
    4つのボリュームの種類の中でストレージ1GBあたりの料金が最も低いEBSになります。ただし、4つの中で最も性能は低くなります。用途としてはアクセス頻度の低いアーカイブデータのためのボリュームとして使用します。

EBSのアタッチ

EC2に対して作成したEBSをアタッチすることで使用できますが、以下のように制限もあります。

  1. これは通常のEC2へEBSのアタッチになります。
  2. EC2へアタッチできるEBSは1つだけとは限らず、複数同時にアタッチできます。
  3. 1つのEC2へアタッチ状態のEBSは別のEC2へアタッチすることはできません。
  4. AZが違うEC2へEBSはアタッチできません。

EBSのバックアップ

EBSはデータをため込むためのサービスになるので、EBSのバックアップを取得しておくことは重要になります。

スナップショットでバックアップ

差分バックアップと呼ばれるスナップショットをS3に格納してバックアップとして保管することができます。

ただし、通常使うS3とは違ったAWSが管理する保管領域のS3に格納されるので、バックアップを確認することはできません。

AMIでバックアップ

  1. EC2と連携したEBSの状態をテンプレート(イメージ)として使用できるようAMIとしてバックアップすることができます。
  2. バックアップとして作成されたAMIを復元することで、バックアップ時の環境を作成できます。また同じ状態の環境を複数作ることも可能です。

User data(ユーザーデータ)

EC2が初回起動時に実行されるスクリプトのことです。

本来であればEC2を起動後、SSHなどで接続して様々なソフトウェアをインストールしますが、ユーザーデータを設定することで初回起動時にインストールしてくれるなど利点があります。

ユーザーデータは以下の記載方法が可能です。

  • シェルスクリプト形式
  • cloud-init形式

以下はシェルスクリプト形式の例です。

#!/bin/bash
echo "===yum -y install httpd==="
yum -y install httpd 
echo "===systemctl start httpd.service==="
systemctl start httpd.service
echo "===systemctl enable httpd.service==="
systemctl enable httpd.service
echo "===ID=$(curl http://169.254.169.254/latest/meta-data/instance-id)==="
echo $(curl http://169.254.169.254/latest/meta-data/instance-id) >> /tmp/test

この処理の中身としては

  • 1行目:シェルスクリプトの先頭に書くお決まりコード
  • 3行目:Apacheのインストール
  • 5行目:Apacheのサービス開始
  • 7行目:Apacheのサービス自動起動有効
  • 8行目:インスタンスの中に埋め込まれたメタデータ(インスタンスID)を表示
  • 9行目:インスタンスの中に埋め込まれたメタデータ(インスタンスID)を出力
    となります。

インスタンスメタデータ

起動中のインスタンス内で以下のURIを指定することでメタデータを取得できます。

http://169.254.169.254/latest/meta-data/    

実際にコマンドを実行すると以下のようにメタデータが表示されます。

[ec2-user ~]$ curl http://169.254.169.254/latest/meta-data/    
ami-id
ami-launch-index
ami-manifest-path
block-device-mapping/
events/
hostname
iam/
instance-action
instance-id
instance-type
local-hostname
local-ipv4
mac
metrics/
network/
placement/
profile
public-hostname
public-ipv4
public-keys/
reservation-id
security-groups
services/

表示されたメタデータをコマンドに付与することでメタデータの内容を取得できます。
例えば「ami-id」を取得します。

[ec2-user ~]$ curl http://169.254.169.254/latest/meta-data/ami-id
ami-xxxxxxxxxxxxxxxxxxxxxxxxxx

Key Pair(キーペア)

EC2へログインするために使用する秘密鍵公開鍵のペアのことです。
作成したEC2へ誰でもログインできないよう管理します。

EC2インスタンスを作成後、マネジメントコンソールであれば以下の画面が表示されます。

この画面で「キーペアのダウンロード」をクリックするとtest.pemというファイルをダウンロードできます。
そのファイルはEC2へ接続する際に必要となる重要なファイルですので外部に漏らしたり、なくしたりしないよう注意しましょう。

まとめ

仮想サーバーであるEC2の基礎知識に関してまとめました。
恐らくAWSを利用する人の大半が使用するサービスだと思います。
EC2の構築に関する知識さえあれば、自分でサーバーを構築しシステムの構築が可能になります。

前回の記事

【AWS入門③】VPCの構築~基礎知識を詰め込もう~

次回の記事

【AWS入門⑤】IAMを使って権限管理&セキュリティ強化