CTC 教育サービス
[IT研修]注目キーワード Python UiPath(RPA) 最新技術動向 Microsoft Azure Docker Kubernetes
こんにちは。今回は、Amazon EC2("Amazon Elastic Compute Cloud"、以下 "EC2")を使ったサーバ構築について取り上げてみます。
EC2(リンク[1])は、AWS においてクラウドベースの計算機環境を提供するサービスです。用途に応じた様々な環境を選択できますが、本稿では Amazon Linux ベースのサーバの構築手順を扱います。特に EC2 の導入は初めてといった方に向けて、EC2 環境に特有のポイントをいくつかピックアップしていきたいと思います。
EC2 を使ってサーバを構築する作業は、以下のようになります。
なお、本稿では AWS アカウントは取得済みとします。アカウントの取得手続きについては、第1回(リンク)をご覧ください。
実際には、この手順の後でサーバに環境設定を行い、必要なミドルウェアやアプリケーションを組み込むことになります。
(本稿では、こちらは割愛させていただきます)
* 参考リンク
まずは、インスタンスを作成します。
(「インスタンス」という用語が出てきていますが、ここでは「仮想マシン」とざっくり読み替えてしまってもよいでしょう)
まずは、お手持ちの AWS アカウントでマネジメントコンソールにサインインしましょう。今回は EC2 を使いますので、ログイン直後のメニュー項目から "EC2" をクリックします。
すると、EC2 ダッシュボードが表示されます。リソース状況や運用情報等が、各リージョンごとにまとめられています。
他のリージョンの状況を確認するには、画面右上のメニューでリージョンを切り替える必要があります。もし、作成したはずのインスタンスが見つからない場合には、目的のリージョンを正しく選択しているかを確認してみましょう。(本稿では、Asia Pacific (Tokyo) リージョンを使用しています)
新しくインスタンスを作成するには、"Create Instance" の項目にある [Launch Instance] ボタンを押下します。
前項の操作を行いますと、インスタンス作成に使う AMI を選択する画面が表示されます。
ここで登場した AMI ("Amazon Machine Imgge") とは、仮想マシンのディスクイメージに似た内容を持つデータです。AMI には、用途に応じて、様々な種類があります。本稿では無償の AMI を取り扱いますが、有償のものもあります。一方のインスタンスは、ストレージに AMI のデータを書き込んだ仮想マシンとして、実際に起動できる存在です。
つまり、AMI は、インスタンスに対するテンプレートのような位置付けとなります。EC2 は、このしくみで柔軟な運用を実現しています。たとえば同じ構成のインスタンスを複数作成したい場合には、既存の AMI を使ってインスタンスを作成し、そのインスタンスに対して環境構築を実施し、そこからカスタマイズ AMI を作成する方法が考えられます。
無償の AMI には、"Free tier eligible." の表示があります。画面左側の "Free tier only" にチェックを入れると、絞り込みも可能です。ここでは、"Amazon Linux AMI" を選択してみます。チェックを入れ、[Select] ボタンを押下しましょう。
なお、AMI の名称に "(HVM)" または "(PV)" と書かれている場合、それは仮想化方式の違いを指します。新しく EC2 を導入するケースでは、特別な事情がなければ HVM(完全仮想化、"Hardware-assisted Virtual Machine")の選択しておくとよいでしょう。
* 参考リンク
前項のように AMI の選択を行いますと、次はインスタンスの選択に進みます。ここでは、無料利用枠の対象となっている "t2.micro" を選択します。チェックを入れて、[Next: Configure Instance Details] ボタンを押下します。
インスタンスには、処理能力やストレージ容量に応じた様々な種類(インスタンスタイプ)があります。実際のハードウェアを選ぶ際に用途を考慮するのと同様に、ここでもインスタンスの目的に沿って選択します。
もちろん、運用の過程でより適切なインスタンスに変更することも可能です。最初はマイクロインスタンス(t2.micro など)で構築し、後でより高いパフォーマンスを持つインスタンスを採用するのもよいでしょう。逆に、インスタンスがオーバースペックになった場合にインスタンスを変更することで、課金金額を減らすこともできます。
* 参考リンク
ここまでの作業で、AMI をもとにインスタンスを選択できました。
起動する前に、インスタンスに対して最低限の設定を加えておきましょう。
前節の作業を完了した段階で、"Step3: Configure Instance Details" という詳細設定を行う画面が表示されます。本来ですと用途に応じて設定を加えるところではございますが、本稿ではこのままで [Next: Add Storage] ボタンを押下し、ストレージの追加画面に進みます。
最初から表示されているボリュームは、「ルートデバイスボリューム」に分類されます。種類は AMI によって決まります。
さらに追加したいボリュームがあれば、 [Add New Volume] ボタンを押下して追加できます。その際に、"Type" の項目でストレージの種類を選択できます。"EBS" は、Amazon EBS (Amazon Elastic Block Store) を意味します。こちらはスナップショットに対応、非揮発性といったメリットを持ち、通常の利用に適しています。
またインスタンスタイプによっては、もうひとつ "Instance Store" も選べます。(下図は、別のインスタンスタイプで表示しています)
こちらは、そのインスタンスが動作する物理筐体に備え付けられているストレージで、通常のハードウェアにおけるローカルディスクに似た性質を持ちます。具体的には、以下のような特徴があります。用途としては、まさにキャッシュファイル、一時ファイル等の保存場所に適しているといえるでしょう。
ストレージの設定が終わりましたら、[Next: Tag Instance] を押下して先に進みます。
この画面ではインスタンスにタグを設定できますが、本稿では省略します。[Next: Configure Security Group] ボタンを押下して、次の画面に進みます。
* 参考リンク
インスタンスに対しては、インスタンス外のファイアウォールによるアクセス制御を適用できます。「セキュリティグループ」とは、そのアクセス制御の設定データといえます。
ここでは、手元の端末のみから SSH で接続可能なセキュリティグループを作成してみます。以下の画面のように、TCP/22 に対する設定を加えます。特に明記されていませんが、この設定はインバウンド(外部→サーバの向き)に対するものです。また、アクセス元(つまりお手元の端末)のIPアドレスは、"Source" 項目で "My IP" を選択すると自動で挿入されます。
※ お手元の環境により、IPアドレスを手動で調べなければならない場合もあります。特に、グローバルIPアドレスが変化する環境の場合はご注意ください。
この設定が完了しましたら、[Review and Launch] ボタンを押下して先に進みます。
なお、セキュリティグループの詳細設定は、EC2 ダッシュボードで行えます。メニュー "NETWORK & SECURITY" から "Security Groups" を選択しますと、セキュリティグループの編集を行えます。アウトバウンド(サーバ→外部の向き)に対する設定、管理用のタグ付けなどもここで行えます。
* 参考リンク
インスタンスを起動するために必要な作業は、前節までで完了しました。次の画面 "Step7: Review Instance Launch" 画面で、設定内容の一覧を確認できます。ここで [Launch] ボタンを押して起動したいところですが、ここではあとひとつ下準備をしておきます。
起動する前に、インスタンスにログインするために秘密鍵を生成しておきます。EC2 では、SSH による接続における認証は公開鍵認証となっています。マネジメントコンソールには web ブラウザからログインできる機能もありますが、ここでは別途ターミナルクライアント(例:Putty)を用いることとして、それに用いる秘密鍵を入手しておきます。
前述の画面で [Launch] ボタンを押下しますと、設定済みのキーペアを選択するダイアログが表示されます。ここでは新しく作成しますので、以下の画面のように "Create a new key pair" を選択します。
"Key pair name" に設定する名前は自由に決めて問題ありませんが、その後に必ず [Download Key Pair] を押下して秘密鍵を入手してください。その際、この画面を離れた後で秘密鍵の再ダウンロードはできない点に注意を要します。
作業が完了しましたら、[Launch Instances] ボタンを押下してみましょう。以下の画面が表示され、いよいよインスタンスが起動します。
起動には、若干の時間がかかります。ステータスが "running" になりましたら、接続に進みましょう。
インスタンスへの接続方法は、大きく分けて2種類あります。
(Windows 環境の場合には、PuTTY 等のクライアントアプリケーションを用意します)
どの方法を用いるにしても、秘密鍵ファイルと Public DNS の設定値が必要になります。
Public DNS の値は、EC2 ダッシュボードのメニュー "INSTANCE" から "Instance" で確認できます。
この画面で [Connect] ボタンを押下しますと、接続する際の情報を得ることができます。
接続の方法に関しましては、参考リンクに詳細な手順が公開されています。なお、SSH クライアント経由で Amazon Linux が動作するインスタンスに接続する際には、ユーザー名は "ec2-user" となります。
接続が確立すれば、後は一般的な手順で環境構築を行えます。
Amazon Linux は、ディレクトリ構成やサポートするツールの面で、RHEL(および CentOS)に比較的近いディストリビューションといえます。これらのディストリビューションの扱いに慣れた方であれば、おおむね同様の手法を適用できます。
またインスタンスの動作を止める場合には、EC2 ダッシュボードのメニュー "INSTANCE" から、[Actions] ボタンでメニューを開きます。
その際には、インスタンスが動作していない状態の違いを理解しておく必要があります。
一般に「シャットダウン」の状態にあるインスタンスは、EC2 において「停止 (stopped)」の状態となります。一方、EC2 における「終了(terminated)」の状態は、いわばインスタンスが破棄された状態ともいえます。EC2 インスタンスが「終了(terminated)」の状態に移行すると、そのインスタンスは再起動できなくなります。
参考リンクに、インスタンスの状態に関して詳しくまとめられています。あわせてご覧ください。
* 参考リンク
駆け足になってしまいましたが、EC2 でインスタンスを作成し接続するまでの流れを追ってみました。
コンピュータの用途には、web アプリケーションや技術計算等、必要なリソースが短期間で大きく変動するものがあります。こういった用途にこそ、リソースを柔軟かつ迅速に調達できる EC2 のメリットが強調されることでしょう。
最後までお読みいただきまして、どうもありがとうございました。次回もどうぞよろしくお願いいたします。
ご感想、ご質問等がございましたら、下記までお寄せください。
aws-column@strawbag.co.jp
[IT研修]注目キーワード Python UiPath(RPA) 最新技術動向 Microsoft Azure Docker Kubernetes