【AWS】 EC2でWebサーバーを構築してみよう!
はじめに
記事をご覧いただき、ありがとうございます。皆さんはAmazonが提供しているクラウドサービス(AWS)のAmazon Elastic Compute Cloud (Amazon EC2)をご存知でしょうか?これは、AWSクラウド上のインスタンスと呼ばれる仮想サーバーのことです。数分で仮想環境を構築できる上に、必要に応じてスケールアップ(サーバーのスペックを増強)やスケールアウト(サーバーの台数を増やす)することができます。また、OSより上のレイヤについては自由に設定できるため、より柔軟な環境を構築できるようになっています。本記事では、AWS EC2の使い方を順を追って解説していくので、AWSクラウド上に仮想サーバーを構築するところまで一緒にやってみましょう!
サーバー構築・運用の注意点と準備
AWSでサーバーを構築・運用するためには、気を付けるべき点がいくつかあります。
目的の確認
サーバーを構築するにあたって、どのようなサービスをどんな形で提供したいかを明確にしておく必要があります。ここが曖昧になってしまうと作りたかったものと違うサービスになってしまう可能性があります。また、サービスに合った料金システムを選ぶためにも目的を明確にしましょう。
アクセス権
AWSでアクセスを安全にコンソールするためのサービスにAWS IAMがあります。IAMでリースを使用するために認証され権限を持つユーザーを制御することができるのです。リソース、ユーザーごとに様々な権限を付与できます。1つのIAMユーザーを複数人で共有して使用した場合、問題が発生したときに原因の特定が難しくなることがあるので気を付けましょう。
IPアドレス
Elastic IPアドレスは、動的なクラウドコンピューティング向けに設定された静的なパブリックIPv4アドレスです。アカウントのすべてのVPC任意のインスタンスまたはネットワークインタ―フェイスに関連付けることができます。インスタンスに障害が発生しても、アドレスを別のインスタンスに再マッピングするので障害に強いです。EC2の動的グローバルIPは、インスタンスを再起動した場合IPアドレスが変更されてしまいますので、サービスを外部公開する場合はElastic IPを使用するようにしましょう。
データの保存
定期的にバックアップを取るようにしましょう。また、システム障害に備えてインスタンスやEBSのリカバリーできるように手順を確認しておきましょう。
セキュリティ管理
セキュリティの設定のミスや開発時やメンテナンス時の運用ミスなどでセキュリティが危険にさらされる可能性があります。安全に使用するために十分に気を付けましょう。
可用性の確認
実際に障害を発生させて、EC2やデータの可用性が保たれているかを確認しましょう。
構築手順
①AMIの選択
②インスタンスタイプの選択
③ストレージの追加
④タグの追加
⑤セキュリティグループの設定
⑥SSH接続の設定
EC2構築
①AMIの選択
まず、AMIとはAmazon Machine Imageのことで、これはサーバーに必要なビットをパッケージ化したテンプレートのようなものです。AMIを使用することでOSなどをインストールすることなく、インスタンスを起ち上げることができます。AMIはAmazon EBS-BackedまたはInstance Store-Backedのどちらかになります。それぞれ関連するデータの永続性・バックアップ・リカバリーに違いがあるので理解しておきましょう。このAMIはAWSやサードパーティから提供されており、1つのAMIから複数のインスタンスを起動することもできます。また、既存のAMIからインスタンスを起動してカスタマイズすれば、独自のカスタムAMIの作成も可能です。
AMIの使い方(設定方法)
1:AWSのマネジメントコンソールにログインし、サービスタグから「EC2」を選択します。
2:EC2のページが表示されたら、左側のEC2ダッシュボードからインスタンスを選択します。
3:「インスタンス作成ボタン」をクリックするとAMIの選択画面になります。ここではAWSの各サービスと連携するためのツールやライブラリなどが含まれている「Amazon Linux 2 AMI」を選択します。
②インスタンスタイプの選択
インスタンスは、仮想コンピューティング環境のことを指します。AWS EC2のインスタンスタイプとは、簡単に言うとサーバーのスペックを定義したもので、CPU、メモリ、ストレージ、ネットワークがタイプによって異なり、スペックが高いインスタンスタイプほど料金も比例して高くなります。ここで目的などに応じて最適なインスタンスタイプを選択します。
インスタンスの種類
汎用インスタンスは、バランスの取れたコンピューティング、メモリ、ネットワークのリソースを提供してくれます。インスタンスのリソースを同じ割合で使用するアプリケーションに最適のインスタンスになっています。
コンピューティング最適化インスタンスは、機械学習推論やバッチ処理ワークロードなどの高パフォーマンスプロセッサの恩恵を受けるコンピューティングハウンドなアプリケーションに最適なインスタンスです。
メモリ最適化インスタンスは、メモリ内の大きいデータセットを処理するワークロードに対して高速なパフォーマンスを実現するように設計されたインスタンスです。
高速コンピューティングインスタンスは、ハードウェアアクセラレータを使用して、浮動小数点計算やグラフィック処理などの機能をCPU実行中のソフトウェアよりも効率的に実行できるインスタンスです。
ストレージ最適化インスタンスは、数万IOPSもの亭レイテンシーなランダムI/Oオペレーションをアプリケーションに提供するように最適化され他インスタンスです。
EC2では、定常パフォーマンスのインスタンスとバーストパフォーマンスインスタンスを選択することができます。バーストパフォーマンスインスタンスは、ベースラインレベルのCPUパフォーマンスのベースラインを超える能力を備えています。
インスタンスタイプの使い方(設定方法)
1:AMIの選択が終わると、インスタンスタイプ選択画面が表示されるので、ここで無料利用枠の対象になっている「t2.micro」を選択し、画面右下の「インスタンスの詳細の設定」をクリックします。
2:インスタンスの詳細の設定画面で自動割り当てパブリックIPを「有効」にし、キャパシティーの予約を「なし」に設定します。
③ストレージの追加
ストレージとはサーバーのデータの保存場所のことで、EC2の場合「EBS」と「インスタンスストア」と呼ばれる2種類のストレージがあります。1つ目のEBS(Elastic Block Store)の方は高い可用性と耐久性を持つストレージで、他のEC2インスタンスにも付け替えができます。また起動したインスタンスを停止・初期化した場合でも中のデータは保持されます。
しかし、2つ目のインスタンスストアの方は、インスタンス専用の一時的なストレージでEBSのように他のインスタンスに付け替えができず、EC2インスタンスを停止・初期化した場合は中のデータも失われます。また、ハードウェアの障害でもデータが失われるため、インスタンスストアは一時記憶には理想的です。インスタンスタイプにより使用できるインスタンスストアのサイズとインスタンスストアボリュームで使用されるハードウェアの種類が決まります。データを長く保持したい場合やデータを暗号化したい場合にはEBSの方のストレージを使用します。
ストレージの使い方(設定方法)
1:インスタンスの詳細設定完了後、「ストレージの追加」ボタンをクリックすると、ストレージの追加画面が表示されます。
2:ストレージのボリュームタイプが「ルート」になっているので、今回はこれを使用します。このルートはAMIの選択時に設定されるもので、ストレージのタイプは「EBS」になります。他の設定もデフォルトのままで大丈夫です。
④タグの追加
タグとはAWSリソースの整理と識別に使用されるラベルのことで、タグは1つのキーとオプション1つの値で構成されています。同じ型のリソースが多い場合、判別が大変になってしまうことがあります。タグを使用することで、割り当てたタグに基づいて素早くリソースを識別することができます。タグには制限があります。リソースあたりのタグの最大数は50個です。タグのキーと値は大文字小文字が区別され長さにも制限があります。
タグの使い方(設定方法)
1:ストレージの追加設定完了後、「タグの追加」ボタンをクリックすると、タグの追加画面が表示されます。
2:画面左の「タグの追加」ボタンをクリックすると、入力画面になるので今回はキーに「Name」、値に「aws-infra」と入力します。
⑤セキュリティグループの設定
セキュリティグループとはファイアウォールのルールのことで、インスタンスへのアクセスを許可し、トラフィックを制御することができます。1つのセキュリティグループを複数のEC2インスタンスに割り当てることも可能です。逆に複数のセキュリティグループをインスタンスに関連付けた場合、各セキュリティルールを1つにまとめたルールがセットされます。この場合、インスタンスにアクセスするときに問題が発生する可能性があるため、ルールはなるべく簡潔に設定することが望ましいです。セキュリティグループの設定ミスをしてしまうと、セキュリティの危険度が高まってしまうので気を付けましょう。またルール設定は、いつでも変更可能なので、安全なセキュリティグループを設定できているかを確認して安全性を保ちましょう。
セキュリティグループの使い方(設定方法)
1:タグの追加設定完了後、「セキュリティグループの設定」ボタンをクリックすると、セキュリティグループの設定画面が表示されます。
2:今回は新しいセキュリティグループを作成するので、「新しいセキュリティグループを作成する」を選び、セキュリティグループ名を「aws-infra」に設定します。
⑥SSH接続の設定
SSHとは(セキュアシェル)の略称で、暗号化や認証の技術を利用し、ホストPCからリモートPCに安全に接続するための仕組みのことです。
SSH接続の使い方(設定方法)
1:セキュリティグループの設定完了後、「確認と作成」ボタンをクリックします。
2:確認画面が表示されるので、内容を確認し「起動」ボタンをクリックします。
3:キーペアを作成する画面が表示されるので、新しく作成します。これがインスタンスにログインする時の鍵になります。今回は「新しいキーペアの作成」を選択し、キーペア名には「infra-ssh-key」とし、「キーペアのダウンロード」をクリックしデスクトップに保存します。これは1度しかダウンロードできないので、絶対になくさないようにしてください!
4:「インスタンスの作成」ボタンをクリックし、EC2 インスタンスを起動します。
5:起動が完了したら、インスタンス情報のIPv4パブリックIPの値をメモしておいてください。
6:Windowsの場合はSSHクライアントを使用して接続します。今回は「rlogin」を使用します。エントリー欄には「aws-infra」、ホスト名には「メモしておいたIPアドレス」、ログインユーザー名には「ec2-user」と入力し、「SSH認証接続」ボタンをクリックします。ファイル選択画面が表示されるので、ダウンロードしたキーペアファイルを選択します。フォントの設定は「UTF-8」に設定し、OKボタンをクリックし接続します。画面に「Amazon Linux 2 AMI」と表示されればSSH接続成功です。
まとめ
AWS EC2でサーバー構築からSSH接続までの流れを解説してきましたが、理解できたでしょうか。最初は構築するのに時間が掛かるかもしれませんが、慣れれば数分で起動までできるようになります。何回でも作り直すことができるので、色々と自分で触ってみた方が面白く、理解も深まります。また、サーバーにはWordPressを導入しWebサイトを立ち上げることもできるので、是非チャレンジしてみてください!