ホエールテック株式会社 ホエールテック株式会社

  • ブログ

最小構成で始めるEC2デプロイ〜前編:AWS EC2インスタンスを起動するまで〜

はじめに

こんにちは、Webエンジニアのsimonです。

今年も終わりが近づいていますね。
Webエンジニアのみなさん、良い一年を送れましたでしょうか?

「まだ技術的に勉強内容に不足を感じる……」
あるいは
「まだまだ学び足りない!」

と感じているそこのあなた!!

今年最後に、基本的なAWSのデプロイについて学んでみるのはいかがでしょうか?🦊

ということで、やや強引な導入ではありますが、
今回は AWS(EC2)を使用したWebアプリのデプロイ について書いていこうと思います。



流れとしては大きく分けて、

①AWSでEC2インスタンスを起動する
②起動したEC2インスタンスへSSH接続〜Nginx構築〜デプロイ

といった形に分かれます。

※長くなるため、本記事では①までを解説させていただきます。
(②は次の記事での解説となるため、少し先の更新となると思います‥スミマセン🙇‍♂️)

さて、エンジニアの方であれば「AWS」という言葉自体は馴染み深いと思いますが、

・なんとなく怖い
・設定が多そう
・RDSとかIAMとかよく分からない‥

と感じて、手を出せていない方も多いのではないでしょうか。

今回・次回と合わせて、
「とりあえず一度AWSでのデプロイを完走する」
ことを目的に、できるだけシンプルな構成で進めていきます。

そもそもAWSとは?

AWS(Amazon Web Services)は、
Amazonが提供している クラウドインフラサービス です。

ざっくり言うと、
・サーバーを借りる
・ネットワークを設定する
・ストレージやDBを用意する

といったことが、ブラウザ上のAWSのコンソール管理画面で設定できるサービスです。

オンプレミスについて

クラウドに対して、オンプレミスという対になる概念があります。
これは自前で用意する物理的なサーバー環境のことを指します。


サーバー用の高価なPCを自前で購入したり、ちょうどスペックが合うPCを用意するのは大変です。
クラウドサービスはこれらに対して気軽に用意したり柔軟にサーバーマシンの性能を選んだりでき、大変に便利なため現在の主流となっています。



話はAWSに戻りますが、今回の記事ではAWSでも最も基本となる

EC2(仮想サーバー)

だけを使います。


💡あれ、AWSってもっと色々なサービスがなかったっけ?🤔

と思ったそこのあなた!
確かにAWSにはデプロイに関係するサービスでもデータベースサービスに関わるRDS、負荷分散をするALB、AutoScaling、ECS、etc.と様々なサービスがあります。

しかし、「AWS=全部使いこなす必要がある」というわけではありません。

まずは EC2 を使えるようになればOK です。

AWSアカウントの作り方

AWSを使うには、まずアカウント作成が必要です。

流れとしては、

1.AWS公式サイトにアクセス
2.メールアドレス・クレジットカード登録
3.電話番号認証
4.ルートアカウント作成

という一般的な流れです。

公式ページにアクセスし、右上の「アカウントの作成」からメールアドレス等を入力していきます。

個人情報等の都合で一部割愛しますが、この後は登録完了し
「AWSコンソールにログインできる状態」
になっていればOKです。
AWS公式ページのガイドはとてもわかりやすいため、こちらをぜひ参照してください。

ログイン後


以下のような画面になっていると思います。
ここで、画像右上にあるリージョンというものを選択し、私たちが住んでいるアジアパシフィック(東京)に変更しましょう。


ログイン完了し、リージョンを変更して準備ができたら、早速EC2インスタンスを起動する準備に入っていきます!



EC2を立ち上げよう

いよいよAWS側の作業に入ります。
まずはEC2というものを起動させるところから始めます。
そこで、簡単な解説から入りたいと思います。

🖥 EC2とは何か?

これはAWSが提供している「仮想サーバーを貸してくれるサービス」になります。

(Elastic Compute Cloudの略で、Cが2つあるからEC2となります)

EC2を使うと、次のようなことができます。

・Webアプリケーションを公開する
・Laravel / Rails / Node.js などのバックエンドを動かす
・Nginx や Apache を使ってWebサーバーを構築する
・APIサーバーを立てる

「自分のPCの代わりに、24時間動き続けるPCをAWS上に置く」

というイメージが近いです。

「仮想サーバー」ってどういう意味?

EC2は 物理的なサーバーを丸ごと1台もらうわけではありません。

AWSの巨大なデータセンターにある物理マシンを、
ソフトウェア的に分割して使います。

これを 仮想サーバーと呼びます。

📦 EC2インスタンスとは?

AWSでは、起動した1台1台の仮想サーバーを
「EC2インスタンス」と呼びます。

EC2インスタンスには以下のような要素があります。

要素意味
OSサーバーを動かす基本ソフト(Amazon Linux / Ubuntu など)
CPUサーバーの処理を司る箇所
メモリCPUが処理を行える領域(作業場デスクのイメージ)
ストレージデータの保存場所
IPアドレスインターネット上の住所

→インスタンス =「OS入りのクラウド上PC」と考えると理解しやすいです。


それでは実際に進めていきましょう!

まずはEC2の画面まで移動します。
画像の検索欄にEC2と入力し、表示される「EC2」のリンクをクリックしましょう。(一度アクセスすると最近アクセスしたサービスからすぐに飛べますが、最初は表示されていないと思います)



以下のようなEC2の画面に遷移できたら、画像の中の「インスタンスを起動」をクリックしてください。




すると、以下のようなEC2インスタンスの設定画面に遷移すると思います。


この中で、実際にOSやインスタンスタイプなどを設定していきます。
今回は以下のようなコンパクトな設定にします。

・OS:Amazon Linux 2023
・インスタンスタイプ:t3.micro
・キーペア:新規作成(pem)
・ストレージ:8GB

💡インスタンスタイプ
→CPU、メモリ、ネットワーク性能、CPUチップの世代など、全体としてのサーバーマシンの構成タイプ
(計算処理に優れた構成やグラフィック性能の高い構成など、様々なものがあります)

順に設定していきましょう。

※結論から言えばキーペア以外はデフォルトの設定で問題ありませんが、どんな選択肢があるのかそれぞれのプルダウンをクリックして見てみてください

キーペアの作成(重要)

キーペアとは、EC2サーバーにログインするときに必要なデジタルな鍵のようなものです。
公開鍵と秘密鍵のペアからなり、公開鍵をEC2サーバーにおき、そこに秘密鍵を利用して自分の端末からアクセスします。

両者がマッチすれば無事に接続できるという仕組みです。
※公開鍵と秘密鍵は重要なキーワードのため、ぜひ調べてみてください

キーペアは最初は何も登録されていないので、自分で作る必要があります。
画像のようにキーペア名を入力したら、「キーペアを作成」をクリックします。
タイプはRSA、ファイル形式はpemで構いません。


すると左のキーペア選択から今作成したものが選べるようになるため、こちらを選択します。

ネットワーク設定(重要)

VPC、サブネット、アベイラビリティゾーン、パブリックIPの自動割り当ては初期設定のままで構いません。

🔒 SSHは自分のIP限定 にしましょう(後述)

以下の画像のように、「セキュリティグループを作成」を選択したのち、「インバウンドセキュリティグループのルール」の箇所でSSH、HTTP、HTTPSの3つを以下の表のように選択しましょう


SSHの設定ができたら、続いて「セキュリティグループルールを追加」をクリックし、同じやり方でタイプがHTTP、HTTPSの場合も設定していってください
画像のようになれば設定はOKです!

なお、その後のストレージ・高度な詳細の箇所はデフォルトのままで構いません。

SSH、HTTP、HTTPS、キーペア等の設定について

ここでの設定の意味を確認しましょう。


結論から言えば、以下のようなことを設定しています。


・管理のためにサーバー内部にアクセスできるアドレス:自分のIP
・サーバーに一般にアクセスできるアドレス:すべてのアドレス

※ここでのIPはグローバルIPアドレス(インターネット全体で一意、ルーターの外に渡されるIPアドレス)を指しています。
ローカルIPアドレス(ルーターの中、会社・自宅内で使われるIPアドレス(例:192.168.xxx.xxx))とは異なりますので、意識してみてください


SSH(Secure Shell)は遠隔地にあるサーバーを、安全に・直接操作するための暗号化された通信プロトコルです。

サーバー内部にアクセスし、管理者としてプログラムの実行や停止、ファイルの削除等ができるためその認証は安全性が高いものである必要があります。このためにキーペアを作成し、これを認証で用います。

HTTP、HTTPSはお馴染みの不特定多数へのWebページ表示のプロトコルのため、アクセスできるアドレスには制限を設けません(0.0.0.0/0)


インスタンスの起動


これでひととおりの設定が完了したため、右側にある「インスタンスを起動」をクリックします。


起動できたら、実際にインスタンスの状態を「すべてのインスタンスを表示」から確認しましょう


自分の作成したインスタンス名・インスタンスIDを確認し、インスタンスの状態が実行中となっていれば成功です。

これで、デプロイをするにあたってのAWS側の準備はできました!

EC2インスタンスの停止・終了

ここで一緒に、EC2インスタンスを停止・終了する方法も確認しましょう。

起動したインスタンスの「インスタンスID」をクリックすると、インスタンスの概要のページに飛ぶことができます。

右上の「インスタンスの状態」をクリックし、今回はプルダウンメニューから「インスタンスを停止」を選択します。


停止の場合は削除せず、作成した設定のインスタンスが残ります。
停止中のインスタンスは再度起動することができます。

不要となった場合は「インスタンスを終了」を選択して削除することができるので、覚えておきましょう。

⚠️注意!

AWSは有料サービスです。
従量課金制であり、利用する仮想サーバーのマシンスペックと利用時間によって料金が変わってきます。
今回は無料枠を利用しているためお金はかかりませんが、それでも長く使えば無料枠を多く消費します。


さらに怖いのは、うっかりインスタンスを起動したままにして長期間忘れてしまうことです。
放置したまま、高額な請求が来てから気づいた、といった事例も・・・
使い終わったインスタンスは必ず停止または終了をして、起動したままにすることがないようにしましょう!









今回はここまでです!

次回はEC2インスタンスにSSHで接続し、Nginxをインストール→デプロイまでを解説します。
すぐにEC2インスタンスを起動できるよう、ぜひ復習しておいてくださいね!

それではみなさん、良いお年をお迎えください!🎍



参考サイト

AWS (アマゾン ウェブ サービス) とは?【AWS公式】

SSHとは?初心者にもわかる仕組みや認証方法、メリットを徹底解説!

アクセス情報【使用中のIPアドレス確認】

simon
simon
GPTをこよなく愛するWebエンジニア
初級Webエンジニアsimonです。

生成AIが大好き。休日もChatGPT、Gemini、Grokたちと戯れています。

最近GPTに助言をもらいながら2ヶ月で6kgのダイエットに成功。

以前の趣味は読書で、昨年末に銀河英雄伝説の文庫本を購入し綺麗に部屋に飾っています。
いつになったら読むのか。。。
採用情報
お問い合わせ