AWS入門|「サーバー室で凍えていた私」が教える、クラウドという魔法の杖

目次

重力との戦いから、雲の上へ

もう15年くらい前の話になります。私がまだ新米のインフラエンジニアだった頃、仕事場は「巨大な冷蔵庫の中」でした。
いや、比喩じゃなくて本当の話です。データセンターと呼ばれるサーバー保管施設は、機械の熱を暴走させないために、常にキンキンに冷やされています。真夏でもダウンジャケットを着込み、耳栓をしていても鼓膜に響くファンの轟音の中で、震えながらキーボードを叩いていました。

一番辛かったのは「ラッキング」という作業です。鉄の塊のような重たいサーバー機器を、ラック(棚)の高い位置に持ち上げてネジ止めする。腰は悲鳴を上げ、指先は冷たさとかじかみで感覚がなくなる。ケーブルの配線が一本でも間違っていれば、すべてやり直し。
「インフラエンジニアって、知的な仕事だと思ってたけど、半分は肉体労働じゃないか…」
そんなことを思いながら、深夜のデータセンターの休憩室で、温い缶コーヒーを啜っていたのを覚えています。

それから数年後、AWS(Amazon Web Services) という黒船がやってきました。

最初は半信半疑でした。「ブラウザでポチポチするだけでサーバーが立つ? そんな馬鹿な」と。
でも、実際に試してみて、顎が外れそうになりました。
画面上の「Launch Instance」というボタンを押して数分待つだけで、目の前に(といっても画面の中ですが)Linuxサーバーが立ち上がったんです。
重たい鉄の塊を運ぶ必要も、配線に悩む必要も、寒さに震える必要もない。
まるで魔法でした。重力から解放されたような、不思議な全能感がありました。

今、この記事を読んでいるあなたは、プログラミングを学び始めたばかりか、あるいは副業でWeb制作などを始めて、「インフラ」や「サーバー」という見えない壁にぶつかっているのかもしれません。
「AWSって難しそう」「設定を間違えると高額請求が来るって聞くし怖い」「専門用語が宇宙語に見える」
その気持ち、痛いほどわかります。AWSのサービス数は今や200を超え、プロでも全てを把握するのは不可能です。私だって未だに知らないサービスがたくさんあります。

でも、安心してください。
私たちが普段作るWebアプリやサービスを動かすために必要な知識は、実は全体のほんの一部です。
かつて物理サーバーと格闘し、今はAWSで飯を食っている私が、この「魔法の杖」の使い方を、専門用語をなるべく使わずに、実体験と数々の失敗談を交えて解説します。

これを読み終える頃には、「インフラって、ちょっと面白いかも」と思ってもらえるはずです。
さあ、厚手のジャケットを脱いで、雲(クラウド)の上の世界へ一緒に登ってみましょう。

真冬のデータセンターで、ダウンジャケットを着てサーバーラックに向かい、寒さと重さに耐えながら作業している過去のエンジニアの線画イラスト

AWSって結局なに?「巨大なレンタルPC屋さん」の話

「クラウド」という言葉、ふわっとしていて掴みどころがないですよね。
AWS(Amazon Web Services)は、Amazonが提供しているクラウドコンピューティングサービスの総称です。
もっと平たく、誤解を恐れずに言うと、「Amazonが持っている超高性能な巨大コンピューターを、インターネット経由で時間貸ししてくれるサービス」のことです。

土地も建物もいらない、必要なのはアイデアだけ

昔、Webサービスを作ろうと思ったら本当に大変でした。
サーバーを買ってきて(数十万円)、設置場所を借りて(月数万円)、電気を通して、インターネット回線を引いて…。初期投資だけで中古車が買えるくらいの金額が必要でした。失敗したら、ただの鉄屑と借金が残るだけです。これでは、個人が気軽に「サービスを作ろう」なんて思えませんよね。

AWSなら、初期費用はゼロです。
「今日からWebサービスを始めたい」と思ったら、5分後にはサーバーが手に入ります。
「やっぱりやめた」と思ったら、すぐに解約(削除)できます。かかった時間の分だけ、数百円とか数十円を払えばいい。
この「手軽さ」「リスクの低さ」こそが、クラウドがもたらした最大の革命です。アイデアさえあれば、学生でも主婦でも、世界中に向けたサービスを一瞬で公開できる時代になったのです。

なぜ世界中でAWSが選ばれるのか

クラウドサービスには、MicrosoftのAzureやGoogleのGoogle Cloudなどもあります。どれも素晴らしいサービスですが、なぜ初心者にAWSをおすすめするかというと、理由は単純。「みんなが使っているから」です。

シェアNo.1ということは、それだけ情報が多いということです。
エラーが出たとき、設定方法がわからないとき、Googleで検索すれば、先人たちが残してくれた解決策(QiitaやZennの記事など)が山のように出てきます。これは学習コストを下げる上で最強の武器になります。
また、副業や転職市場においても、「AWSが触れます」というスキルの需要は圧倒的です。Webアプリを作れるエンジニアは多いですが、「そのアプリを乗せるインフラまで一人で作れるエンジニア」は、まだまだ希少価値が高いんです。

初心者が最初に覚えるべき「四天王」サービス

AWSには200以上のサービスがありますが、初心者が最初に覚えるべきはたったの4つです。これさえ使えれば、基本的なWebシステムは作れます。
私はこれを勝手に「AWS四天王」と呼んでいます。

1. EC2 (Amazon Elastic Compute Cloud)

「仮想サーバー」です。
AWSの中で最も基本的かつ重要なサービス。要は、クラウド上にある「空っぽのパソコン」です。
OS(WindowsやLinux)を選んで起動すれば、あなただけの専用PCが手に入ります。ここにWebサーバーソフト(ApacheやNginx)を入れたり、PHPやPythonのプログラムを置いたりして使います。
「Elastic(伸縮性のある)」という名前の通り、性能を後から自由に変えられるのが特徴です。アクセスが増えてきたらメモリを増やしたり、CPUを強くしたりが数クリックでできます。物理サーバー時代には考えられなかった便利さです。

2. S3 (Amazon Simple Storage Service)

「無限の倉庫」です。
画像、動画、テキストファイルなど、あらゆるデータを保存しておけるストレージサービスです。
GoogleドライブやDropboxのようなものですが、最大の特徴は「Webサーバーとしても使える」こと。
HTMLやCSS、画像ファイルをS3に置いて設定するだけで、静的なWebサイトとして公開できてしまいます。しかも爆速で、サーバーが落ちることがほぼありません。
私のポートフォリオサイトも、実はS3で動かしています。維持費は月数十円です。安すぎて申し訳なくなるレベルです。

3. RDS (Amazon Relational Database Service)

「データベース専用マシン」です。
MySQLやPostgreSQLといったデータベースを、AWSが管理してくれるサービスです。
自分でEC2の中にデータベースをインストールすることもできますが、バックアップを取ったり、OSのアップデートをしたりするのは結構面倒くさい作業です。RDSは、そういう面倒な「運用作業」をAmazonが肩代わりしてくれます。
「データベースが壊れてデータが消えた!」なんていう悪夢を見たくないなら、迷わずRDSを使いましょう。

4. VPC (Amazon Virtual Private Cloud)

「プライベートなネットワーク空間」です。
これは少し概念が難しいのですが、AWSという広大なインターネットの中に、「自分専用の柵で囲った土地」を作るイメージです。
この柵(VPC)の中に、EC2やRDSを配置します。
「このサーバーはインターネットからアクセスしてOK」「こっちのデータベースは外部から見えないようにする」といった、セキュリティの要となる設定を行う場所です。
初心者が一番つまずきやすいのがここですが、ここを理解すると「インフラわかってる感」が一気に出ます。

机の上に、EC2(パソコン)、S3(倉庫)、RDS(データベース)、VPC(ネットワークの柵)のミニチュア模型を並べて、それぞれの役割を確認しているエンジニアの線画イラスト

【実践】実際にEC2を立ててWebサーバーにしてみよう

理屈ばかりでは眠くなるので、実際に手を動かしてみましょう。
ここでは、AWSのアカウントを作成し、EC2インスタンス(仮想サーバー)を立ち上げて、世界中に「Hello World」を表示するまでの流れを追体験してもらいます。

ステップ1:AWSアカウントの作成(最初の関門)

まず公式サイトから「AWSアカウントを今すぐ無料で作成」をクリックします。
ここでクレジットカード情報の入力が必須になります。「無料枠があるんじゃないの?」と思うかもしれませんが、本人確認の意味も兼ねているので入力が必要です。
ちなみに、新規アカウント作成から12ヶ月間は「無料利用枠」というボーナスタイムがあります。EC2の特定のスペック(t2.microやt3.micro)などが、月750時間まで無料で使えます。つまり、1台なら24時間つけっぱなしでもタダです。

ステップ2:コンソールにログインと「リージョン」の罠

アカウントができたら、マネジメントコンソールにログインします。
ここで一つ、初心者が必ずハマる罠があります。「リージョン(地域)」の選択です。
画面の右上に「オハイオ」とか「バージニア北部」とか書かれていませんか?
ここをクリックして、必ず「東京(ap-northeast-1)」を選んでください。
「昨日作ったはずのサーバーがない!」と大騒ぎして探したら、実はオハイオに作っていた…というのは、AWSあるあるランキング不動の1位です。海外リージョンだと通信速度も遅くなるので、基本は東京を使いましょう。

ステップ3:EC2インスタンスの起動

検索窓に「EC2」と入力し、EC2のダッシュボードへ。
オレンジ色の「インスタンスを起動」ボタンを押します。
ここからが設定のオンパレードですが、最低限見るべきは以下のポイントです。

  1. 名前: わかりやすい名前をつけます(例:MyWeb-Server)。
  2. AMI(OS): 「Amazon Linux 2023」がデフォルトで選ばれているはずです。そのままでOK。
  3. インスタンスタイプ: マシンのスペックです。「t2.micro」または「t3.micro」を選びましょう。「無料利用枠の対象」というラベルがついているはずです。間違って高いスペックを選ぶと課金されるので注意。
  4. キーペア: サーバーにログインするための「鍵」です。「新しいキーペアの作成」をクリックし、名前をつけてダウンロードします(.pemファイル)。このファイルは再発行できないので、絶対に無くさないでください。
  5. ネットワーク設定: 「インターネットからのHTTPトラフィックを許可」にチェックを入れます。これを忘れると、Webサーバーを作ってもブラウザから見れません。

最後に「インスタンスを起動」をクリック。
「成功しました」と表示されたら、AWSのデータセンターのどこかで、あなた専用のサーバーが産声を上げました。この間、わずか数分です。

ステップ4:Webサーバーソフトのインストール

起動したインスタンスに接続します。
Macならターミナル、WindowsならTera TermやPowerShellを使ってSSH接続…というのが本来の手順ですが、今はもっと簡単な方法があります。
コンソール上でインスタンスを選択し、「接続」ボタン → 「EC2 Instance Connect」タブの「接続」をクリックするだけ。
ブラウザ上で黒い画面(ターミナル)が開きます。これでサーバーの中に入り込めました。

ここで、以下の呪文(コマンド)を打ち込んでいきます。Webサーバーソフト(Apache)をインストールする命令です。

sudo yum update -y
sudo yum install -y httpd
sudo systemctl start httpd
sudo systemctl enable httpd

エラーが出ずに完了したら、簡単なHTMLファイルを作ってみましょう。

echo "<h1>Hello World from AWS!</h1>" | sudo tee /var/www/html/index.html

ステップ5:感動の瞬間

さあ、準備は整いました。
EC2のダッシュボードに戻り、インスタンスの「パブリックIPv4アドレス」という数字の羅列(例:54.123.45.67)をコピーします。
ブラウザの新しいタブを開き、その数字を貼り付けてEnterキーを叩いてみてください。

画面に大きく「Hello World from AWS!」と表示されましたか?

おめでとうございます!
あなたは今、世界中のどこからでもアクセスできるWebサーバーを構築しました。
たったこれだけのこと? と思うかもしれませんが、自分のPCではない、どこか遠くにあるコンピューターを操り、情報を発信できたこの瞬間。
私が初めてこれを成功させた時、なんとも言えない万能感に震えました。
これが、インフラエンジニアへの第一歩です。

自宅のPC画面に、黒いターミナル画面と「Hello World from AWS!」と表示されたブラウザ画面が並んでおり、エンジニアが手を叩いて喜んでいる様子の線画イラスト

現場で泣かないための「お金」と「セキュリティ」の話

さて、感動した直後で申し訳ないのですが、ここから少し怖い話をします。
AWSは便利な反面、使い方を間違えるととんでもない請求が来たり、情報漏洩を起こしたりする「諸刃の剣」でもあります。
私や同僚が実際にやらかした失敗談を元に、絶対にやっておくべき設定をお伝えします。

クラウド破産の恐怖

「クラウド破産」という言葉をご存知でしょうか。
AWSの設定ミスや不正利用で、個人に数百万円の請求が来てしまった…という都市伝説のような、しかし実在する話です。

よくあるのが「インスタンスの消し忘れ」です。
以前、GPUを搭載したハイスペックなインスタンス(1時間数百円)を検証のために立ち上げたことがありました。検証が終わって満足し、そのまま「停止」するのを忘れて週末を過ごしてしまったんです。
月曜日に気づいて青ざめました。数万円の請求で済みましたが、もしこれが1ヶ月放置されていたら…。想像するだけでゾッとします。
あと、意外な落とし穴が「データ転送料」です。Webサイトがバズって大量のアクセスがあると、従量課金で通信費が跳ね上がることがあります。

対策:

  1. AWS Budgets(予算)の設定: 「月1000円を超えそうになったらメールで通知する」という設定ができます。これはアカウントを作ったら一番最初にやってください。必須です。
  2. こまめな確認: 毎日とは言いませんが、ログインして「請求ダッシュボード」を見る癖をつけましょう。

IAM(アイアム)で権限を縛る

アカウント作成時に使ったメールアドレスとパスワードでログインするユーザーを「ルートユーザー」と呼びます。これは神の権限を持っています。
もしこのパスワードが漏れたら、攻撃者はあなたのクレジットカードでビットコインのマイニングサーバーを立て放題です。実際にそういう被害に遭った人を知っています。

対策:
IAM (Identity and Access Management) という機能を使って、普段使い用の「作業用ユーザー」を作成してください。
そして、ルートユーザーにはMFA(多要素認証・スマホアプリでの2段階認証)を設定し、普段は封印します。金庫の奥深くにしまっておくイメージです。
作業用ユーザーにもMFAを設定するのは言うまでもありません。

S3の公開設定ミス

数年前、ある企業の顧客情報が流出した事件がありました。原因はAWSのS3バケットの設定ミスでした。
S3は簡単にファイルを公開できるのがメリットですが、設定を間違えると「誰でも中のファイルを見放題」になってしまいます。
「関係者外秘」の資料を置いているバケットを、「Public」設定にしてしまっていた…。笑い話のようですが、現場では頻繁に起こるヒヤリハットです。

対策:
S3を作成するとき、「パブリックアクセスをすべてブロック」というチェックボックスがデフォルトでONになっています。Webサイトとして公開する用途以外では、このチェックを絶対に外さないようにしましょう。

真剣な眼差しでPCに向かう横顔。横には飲みかけのコーヒー

脱・初心者への学習ロードマップ

「EC2でWebサーバーは立てられた。次は何をすればいい?」
AWSの世界は広大です。迷子にならないための学習ロードマップを示します。

資格試験をマイルストーンにする

AWSには認定資格があります。一番簡単な「AWS認定 クラウドプラクティショナー (CLF)」、その次の中級レベル「AWS認定 ソリューションアーキテクト アソシエイト (SAA)」
「資格なんて実務じゃ役に立たない」と言う人もいますが、私は初心者には強くおすすめしています。
なぜなら、AWSのサービスは多すぎて、体系的に学ばないと「何がわからないのかわからない」状態になるからです。
資格の勉強をすることで、「へぇ、こんなサービスもあるんだ」という地図が頭の中に出来上がります。まずはクラウドプラクティショナーの取得を目指してみてください。

ハンズオン(手を動かす)しか勝たん

資格の勉強と並行して、必ず手を動かしてください。
知識だけで「EC2とは仮想サーバーである」と知っていても、実際にコンソールのどこをクリックすればいいか知らなければ、現場では役に立ちません。
QiitaやZenn、クラスメソッド社のDevelopersIOなどの技術ブログには、「AWSで〇〇をやってみた」という記事が山ほどあります。それらを片っ端から真似してみる(写経する)のが一番の近道です。

インフラのコード化 (IaC) への挑戦

最初はコンソール画面でポチポチ設定するのが楽しいですが、慣れてくると「また同じ設定するの面倒だな」と思うようになります。
そこで登場するのが、IaC (Infrastructure as Code) です。
TerraformやAWS CloudFormationといったツールを使って、インフラ構成をコード(プログラム)として記述します。
コードを実行すると、自動的にAWS上にサーバーやネットワークが構築される。
これを覚えると、エンジニアとしての市場価値が跳ね上がります。副業案件でも「Terraform書けます」と言うと、単価交渉で有利になることが多いです。

よくある質問(FAQ)

メンターとして活動していると、初学者からよく受ける質問があります。ここでまとめて回答しておきます。

Q. AWSの無料枠って本当に無料ですか?
A. 条件付きで無料です。例えばEC2なら「t2.microかt3.micro」で「月750時間まで」などの制限があります。それを超えたり、無料枠対象外のサービスを使ったりすると課金されます。「完全に0円」と思い込まず、必ず条件を確認する癖をつけてください。

Q. 数学やネットワークの深い知識は必要ですか?
A. 「あった方がいいけど、なくても始められる」が答えです。
IPアドレスやサブネットマスクなど、ネットワークの基礎知識は避けて通れませんが、高校数学のような計算が必要になることは稀です。AWSを触りながら、「CIDRって何だ?」と疑問に思ったタイミングで都度調べるスタイルで十分間に合います。走りながら学びましょう。

Q. 未経験からインフラエンジニアになれますか?
A. なれます。むしろ今はチャンスです。
開発(プログラミング)ができる人は多いですが、インフラ(AWS)もわかる人はまだまだ不足しています。
ポートフォリオとして、AWS上に自分で構築したWebアプリを公開し、その構成図(アーキテクチャ図)を面接で見せれば、「お、この人はデプロイまで一人でできるんだな」と高く評価されます。

インフラを知れば、世界はもっと広がる

昔、サーバー室で寒さに震えていた頃の自分に、今のAWSの画面を見せたら腰を抜かすと思います。
「こんなに簡単に、世界中にサーバーを立てられるのか!」と。

アプリ開発において、インフラは「土台」です。
どんなに素晴らしい建物(アプリ)も、土台がグラグラでは安心して住めません。逆に、土台さえしっかりしていれば、その上にどんな夢でも描くことができます。

AWSを学ぶということは、単にサーバーの立て方を覚えるだけではありません。
「自分のアイデアを、自分の力だけで、世界中の人に届ける力」を手に入れるということです。

「こんなサービスがあったらいいな」と思いついたとき、誰かに頼まなくても、自分でサクッと環境を作って公開できる。
この全能感こそが、フルスタックエンジニアの醍醐味であり、AWSを学ぶ最大のメリットだと私は思います。

最初の一歩は怖いです。画面は英語だし、設定項目は多いし、お金がかかるかもしれない。
でも、まずは無料枠で、小さなWebサーバーを一つ立てることから始めてみてください。
その小さなサーバーが、あなたのエンジニアとしての未来を、大きく広げてくれるはずです。

さあ、AWSのコンソールを開きましょう。
雲の上の世界は、あなたが来るのを待っています。

PCの画面に表示された高額な請求書を見て、顔面蒼白になり頭を抱えているエンジニアの線画イラスト

今日、あなたが立てたそのサーバーは、まだ誰も知らない小さな存在かもしれません。
でも、そこには無限の可能性があります。
自分の手でインフラを構築し、サービスを世に出した経験は、これからのエンジニア人生において、何物にも代えがたい自信になります。

エラーが出ても、課金に怯えても、それを乗り越えた先には、自由な創造の世界が広がっています。
まずはアカウントを作るところから。そして、最初の一台を起動するところから。
あなたの手で、新しい世界への扉を開いてください。

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

この記事を書いたエンジニア

玉城 悠斗のアバター 玉城 悠斗 サーバーサイドエンジニア

サーバーサイドに精通したエンジニアで、特にPHP・Goでの開発経験が豊富。設計力に優れ、堅牢で拡張性のある構築が得意。話しやすい雰囲気でチームからの信頼が厚い。釣りとキャンプが趣味で、自然の中でアイデアを練ることもある。

目次