【サービスを作ろう】はじめてのサーバ 〜AWS導入編〜

こんにちは!ドイです。
先週まで、PHPの配列操作の関数について勉強していました。今回から少し趣向を変えまして、今後数回に渡ってある目標に向かって勉強していきたいと思います。PHPの配列操作の関数については、また頃合いをみて更新できればと思います。

さて、ある目標と先ほど書きましたが、こちらです。
自分でサーバを立てて、サービスを作る
個人的な話ですが、技術者として学んできましたが、実はコードを書く以外の経験値が全くと言っていいほどないです。基本情報程度の勉強をして知識としてありますが、経験値として持っているかと言われるとNOです。技術者として成長していくためにも、今後数回に渡って、目標に向かって勉強していきたいと思いますので、よろしくお願いします٩( ᐛ )و

サーバについて

サーバルームが社内にあるような会社さんでは、サーバルームの近くにいると冷房が効いて寒い!!という経験をした方もいるかもしれません。物理サーバを設置し、運用する形態を「オンプレミス」と言い、その対照としてクラウド上で運用する形態を「オフプレミス」と言います。目標に「サーバを立てて」とありますが、今回はクラウドサービス世界シェア一位であるAWS、その中のEC2を使ってサーバを立てていきたいと思います。

AWSアカウント作成

AWSを始めるにあたって、AWSアカウントを作成していきます。必要なものは、メールアドレス、電話番号、クレジットカード情報などです。
アカウント作成の流れが詳しく書いてあるので、こちらを参考に作成します。
AWS アカウント作成の流れ | AWS

コンソール

アカウントが作成できたら、マネジメントコンソールにアクセスします。マネジメントコンソールからは、AWSの提供するサービスを管理することができます。[すべてのサービス]を見ると、AWSが提供するサービスが表示されていますね。(コンソール画面は、カスタマイズ可能だそうですが、画像はデフォルトの状態です。) 例えば、EC2をクリックすると、EC2を立ち上げるための画面が表示されます。こちらの話は次回以降に触れていきたいと思います。
話が脱線しますが、実はAWSについて勉強するのを少し渋っていました。と言いますのも、AWSを利用していたら過剰請求が来た!なんて話を聞いたことがありまして、なんて恐ろしいサービスだと思っていたのです。マネジメントコンソールから様々なサービスの設定が可能となると、自分以外の人間に過剰なスペックのサーバを立ち上げられたらどうしようと少し不安になりますಠ_ಠ
そこで、AWSを利用していく上で大切な「IAM(アイアム)」という概念を学びたいと思います。

IAM

IAMとは何かを説明する前に、少し過去の経験からイメージをしてほしいと思います。
学生時代、某ファミレスでバイトをしていました。各自に振られたバーコードを、PCに繋いだバーコードリーダーで読み取り勤怠管理をしていました。PCに入り「始業」や「終業」と言った簡単な操作をする必要があり、そのためには画面にログインしなくてはなりません。私はバイトでしたので、その他の、例えば材料の管理のような操作はすることができませんし、画面にも表示されません。しかし、上の立場の店長といった人は、勤怠以外の業務に関わるような操作ができます。なぜなら、店長の持つIDやパスワードでログインすると、勤怠以外の操作が可能な画面が表示されるからです。

何の話?とお思いでしょうか。実は、上記には画面を見るための二つの仕組みが存在します。「認証」と「認可」です。字面が似ていますし、「認証」は英語で「Authenticate」、「認可」は英語で「Authorization」でどちらも「Auth」なので余計に分かりにくいですね。
先ほどの例の中で、画面を見るためにログインするという動作がありましたが、これが「認証」です。そして、バイトと店長では見られる画面が異なる、これが「認可」です。つまり、ログインしていいですよ、という許可を与えるのが「認証」。権限によって見られる画面を制御する、これが「認可」です。

AWSアカウントを作成しましたよね。この時作成したユーザーが、ルートユーザーと言い、最高権限を持つユーザーとなります。マネジメントコンソールから見たように、様々なサービスを管理できますが、先ほど触れた通り、高額なサービスも利用することができてしまう側面を持ちます。 そこで、「認証」と「認可」でユーザーごとに触れられるサービスや役割を限定して、権限を与えることができるのです。現在は、最初に作成したルートユーザーしかない状態なので、次回IAMを作成していきたいと思います。

まとめ

今回はAWSの導入について触れました。何が難しいというより、知らない概念が多いため、まずは用語を理解しなくてはなりません。動画サイトや、AWS公式でも説明がありますので、焦らず、コツコツと学んでいきたいと思います。