VPC・EC2の構築からサーバー接続までをマネジメントコンソールでやってみる
本記事の目的と背景
AWSにはさまざまなサービスがありますがEC2は比較的AWS初心者にも扱いやすい部分かと思います。
理由としてはEC2はレンタルサーバーのようなサービスであり、サーバー用OSの操作に慣れていれば、EC2を構築した後は既存の知識である程度自分の要望を叶えることができるためです。
ただ、シンプルで機能不足なサービスというわけではありません。VPCおよびEC2は他サービスとの連携など大きな可能性があるサービスだと考えています。
まずはEC2を触ってみる足掛かりとして本記事を書かせていただきました。
作成するもの
本記事ではVPCおよびEC2の構築を行います。
今回はマネジメントコンソールを利用し構築を行なっていきます。
VPC(Virtual Private Cloud)はAWS上に構築する仮想的なプライベートネットワークです。IPアドレス範囲やサブネット、セキュリティ設定などを行うことが可能です。このVPC上で後述のEC2といったサーバーが動くことになります
EC2(Elastic Compute Cloud)はAWS上で利用できる仮想サーバーサービスです。必要な時に必要なスペックのサーバーを起動でき、CPU・メモリ・ストレージを自由に選択して利用できます。
VPCの構築
まずはEC2を動かすネットワークであるVPCの作成を行なっていきます
マネジメントコンソールへアクセス後、画面上部の検索バーに「VPC」と入力します
サービスに「VPC」が出てくると思いますのでそちらをクリックします
VPCのダッシュボードから「VPCを作成」をクリックします
VPC単体の作成も可能ですが、今回は他のリソースも合わせて作っていくので「VPCなど」を選択します。
今回はデフォルトの設定で構築を進めていきます。
今回作成するネットワークの完成系としては以下のような形です
いくつか分かりにくそうな項目があるので下記のテーブルに簡易的にまとめておきます
設定項目 | 説明 |
---|---|
名前タグの自動生成 | 作成する仮想ネットワークや関連リソースに付ける名前を設定します |
IPv4 CIDR ブロック | 仮想ネットワーク内で使用するIPアドレスの範囲を決めます。別のネットワークと接続する場合は重複しないように気をつけてください。また、インターネットに接続する場合はプライベートIPとして予約された範囲を指定した方が良いです。 |
IPv6 CIDR ブロック | IPv6アドレス(新しいIPアドレス形式)を使用するかどうかを選択します。使用する場合はAmazonが払い出したIPv6のアドレスが割り当てられます。 |
テナンシー | サーバーを他の利用者と共有するか、専用にするかを選択します。特殊な要件がなければデフォルトで問題ありません。 |
アベイラビリティゾーンの数 | 異なるデータセンター拠点にリソースを分散配置する数を選択します(障害対策のため2つ以上推奨) |
パブリックサブネットの数 | インターネットからアクセス可能なネットワーク区画の数を設定します(Webサイトなどに使用) |
プライベートサブネットの数 | インターネットから隔離された安全なネットワーク区画の数を設定します(データベースなどに使用) |
NAT ゲートウェイ | プライベートサブネットからインターネットへの接続を可能にする中継装置の設置数を選択します。プライベートサブネットからインターネットへのアクセスが不要であれば必要ありません。 |
VPC エンドポイント | Amazon S3(ファイル保存サービス)への接続先をVPC内に作成します。先述のNAT Gatewayを利用しかつS3へ接続を行う場合は利用費の節約になったりします。 |
DNS オプション(DNS ホスト名を有効化) | パブリックIPを持つインスタンスにAWSがパブリックDNSホスト名を自動割り当てするオプションです。 |
DNS オプション(DNS 解決を有効化) | VPC内でAmazonのDNSサーバーを利用し名前解決を行うかのオプションです。 |
「VPCを作成」を押すと構築が開始します。
全ての項目について「成功」となっていれば問題ありません。
以下は今までで作成したAWS上のリソースの一覧です。
リソース名 | 説明 | 身近な例え |
---|---|---|
VPC (Virtual Private Cloud) |
AWS上に作る自分専用のネットワーク空間 | オフィスビル全体 他の会社とは完全に分離された、あなた専用の建物 |
サブネット | VPC内をさらに細かく区切ったネットワーク領域 | オフィスの各フロア 3階は開発部、4階は営業部のように用途別に分けた空間 |
インターネットゲートウェイ | VPCとインターネットを繋ぐ出入口 | ビルの正面玄関 外部の人が建物に入る時、社員が外に出る時に通る門 |
ルートテーブル | ネットワーク通信の道筋を決める設定表 | 建物内の案内板 「営業部に行くなら4階へ」「外に出るなら1階玄関へ」の案内 |
VPCエンドポイント | インターネットを経由せずAWSサービスに直接アクセスする専用通路 | 地下直結通路 雨に濡れずに隣のビル(AWSサービス)に行ける専用通路 |
EC2の構築
今までの工程でアプリケーション等のサーバーであるEC2を動かすためのネットワークであるVPCの構築が完了したので次はEC2の構築に入ります。
まずはマネジメントコンソールの検索バーに「EC2」と打ち込み、EC2のページに移動します。
ダッシュボードのEC2を起動をクリックします
設定項目が少し多いのでセクションごとに説明していきます
名前とタグ
EC2インスタンスにつける名前です。
その他にもインスタンスの管理に便利なタグをここで設定することも可能です
アプリケーションおよび OS イメージ (Amazon マシンイメージ)
使いたいOSを選択してください。一部(Windowsなど)はマシンイメージの利用料が追加で派生するので注意してください。
今回は無料のAmazon Linux 2023を利用します。
アーキテクチャはx86とArmの二つから選べます。
使用するアプリケーションが対応しているかどうか確認し選択してください。
また、単にOSだけでなくGPUのドライバや深層学習向けのパッケージが事前にインストールされれいるマシンイメージもあったりします。
ユースケースに合わせて適切なものを選ぶと初期設定の手間を抑えられるかもしれません。
インスタンスタイプ
使用するサーバーのハードウェアの構成を選びます。
EC2ではAmazonが用意されたインスタンスタイプと呼ばれる決まったハードウェア構成の中からそれを選んで使用します。
vCPUの数やメモリサイズ、GPUの有無などもここで選べます。
インスタンスタイプを検討する際は以下の記事が参考になるかと思います
注意点としてマシンイメージのアーキテクチャとインスタンスタイプのアーキテクチャが一致している必要があります。
x86のイメージをArmで動かすことはできないといった感じです。
キーペア (ログイン)
SSHやRDPでサーバーにアクセスする際に利用するキーペアです。
「新しいキーペアの作成」を押すとこのままキーペアを作成することが可能です。
もしすでにキーペアがあり、それを再利用したい場合は一覧からそれを選んでください。
今回は新しく作成します。
「キーペアを作成」をクリックすると秘密鍵のダウンロードが始まります。
適切に保管し無くさないようにしましょう。再ダウンロードはできません。
ネットワーク設定
どのサブネットにEC2を配置するかやセキュリティグループ(ファイアウォールのようなもの)の設定をここで行います
右上の編集を押すとより詳細に設定可能です。
今回は自分で設定していきます。
- VPC: VPCは前回作成したものを利用します
- サブネット: パブリックサブネットを利用します。パブリックサブネットはインターネットへの経路があるのでSSHでそのまま接続することができます。
- パブリック IP の自動割り当て: 有効化するとパブリックIPが自動で割り当てます。無効化した場合は自分でIPアドレス(EIP)を取得し割り当てる必要があります。インスタンス終了時に解放されてしまうので(起動中は解放されません)、もしIPアドレスを固定したい場合は無効化して別途IPアドレスを割り当てましょう。
- セキュリティグループ: EC2へのアクセス制御を行う部分です。OS側でも制御可能ですが、セキュリティグリープを使った方が便利だと思います。今回はSSHとTCPの3000番のポートを開けてあります。必要に応じて調整してください。また、アクセス元の制限ができるので可能であれば自社のIPアドレスなどに限定した方がセキュリティ上安全です。
ストレージを設定
ストレージサイズとストレージタイプをここで設定可能です。
ストレージは後からでも拡張可能ではあります。
ストレージタイプはいくつかありますが特殊な要件がなければgp3が良いと思います。
ストレージはインスタンスが起動しているかどうかに関わらず、費用が発生するので気をつけましょう。
インスタンスの起動
全ての設定が終わったあと、画面右側の「インスタンスの起動」をクリックするとインスタンスが立ち上がります。
EC2インスタンスへの接続
EC2インスタンスへ接続してみましょう
インスタンスの一覧画面から該当のインスタンスにチェックを入れ、「接続」ボタンを押します。
表示される手順に従って、接続します。
sshでの接続時に下記のようなエラーが発生する場合は、秘密鍵の権限が広すぎるためです。
ssh -i "キーペアのファイル名" ec2-user@ec2-xxx-xxx-xxx-xxx.ap-northeast-1.compute.amazonaws.com
> Permissions 0644 for 'キーペアのファイル名' are too open.
> It is required that your private key files are NOT accessible by others.
> This private key will be ignored.
> Load key "キーペアのファイル名": bad permissions
ページに書かれているように、権限を修正します。
chmod 400 "キーペアのファイル名"
Amazon Linux 2023の場合、接続に成功すれば下記のようなテキストが表示されるはずです。
ssh -i "キーペアのファイル名" ec2-user@ec2-xxx-xxx-xxx-xxx.ap-northeast-1.compute.amazonaws.com
, #_
~\_ ####_ Amazon Linux 2023
~~ \_#####\
~~ \###|
~~ \#/ ___ https://aws.amazon.com/linux/amazon-linux-2023
~~ V~' '->
~~~ /
~~._. _/
_/ _/
_/m/'
インスタンスの停止・終了
インスタンスを使用していない期間は停止・終了しておくと利用費を抑えることができます。
インスタンスの一覧画面から操作を行いたいインスタンスにチェックを入れて、「インスタンスの状態」をクリックすると、メニューが出てきます。
「インスタンスを停止」を押すと、サーバーは停止しますが、一覧画面には残り続け再度起動が可能です。また利用する場合はこちらを選びましょう。
「インスタンスの終了(削除)」を押すと、サーバーが停止し、しばらくしたあと一覧画面からも消えます。この場合は再起動もできません。もう利用することがない場合はこちらです。
終わりに
以上でVPCおよびEC2の構築は終わりになります。
VPC上で動作するロードバランサであるALBやRDBの運用に便利なRDSなど他にも色々と便利なサービスもあります。
また、発展的な内容としてはマネジメントコンソールではなく、コードベースでインフラを管理するIaCなどといった分野もあったりします。
この記事がAWSを触るきっかけになれば幸いです。