【Windows利用者向け】今すぐ無料で簡単にできるAWSでのLinux環境構築

IT

インフラエンジニアに影響されAWSでLinuxサーバーを構築してみた

先日インフラエンジニアの方の仕事ぶりを見ることがあったのですが、その方に影響を受けて、勉強がてらAWSでLinuxサーバーをたてて、コマンドを打ってみるということを試してみました。とても簡単にできたので、その内容を共有したいと思います。AWS触ったことないけど興味あるという方は参考にしてみて、心理的なハードルを下げてもらえればと思います。

ずっとWindows畑で育ってきた私にとっては、その方がAWSでLinuxサーバーをたててViエディタなどを使ってデバッグしていく作業を見るのが新鮮でとても勉強になりました。

なおこれらの内容は2022年7月の執筆時点のものになります。クラウドサービスは画面や内容がしょっちゅうマイナーチェンジするのですが、大まかな操作の流れは変わらないと思いますので、そこをご了承の上参考にしてもらえればと思います。

アマゾン ウェブ サービス(AWS クラウド)- ホーム
Amazon Web Services は、信頼性と拡張性に優れたクラウドコンピューティングサービスを低料金で提供します。アカウント作成は無料。料金はご利用分だけです。

AWSは無料で使い続けることもできる

AWSを使うと利用料がかかってしまうという心配を持ってらっしゃる方も多いと思うので、まず初めに触れておきます。結論から言うと以下のことをするだけで、ほぼ利用料がかからない範囲でAWSの様々なサービスを使って勉強や検証などをすることができます。

  • 新しくアカウントを作った際についてくる12ヵ月の無料利用枠の利用
  • AWS summit Onlineに参加してクーポンを入手
  • サービスは使う時だけ起動し、使い終わったら停止 or 終了

まず、新しくアカウントを作った際にはある程度のサービスには12ヵ月の無料利用枠が設定されておりまして、まずはそれを使うことができます。

そして年1回のAWS summitに参加して、いずれかのセミナーを受講し、その後のアンケートに答えると、25$(3000円)分くらいの利用クレジットのクーポンをもらえるようなので、12ヶ月の無料利用枠が終わっても、そのクレジット内なら無料で利用し続けることができます。

そして、サービスは使う時だけ立ち上げて、それ以外の時には停止しておくことが重要です。AWSはサービスの利用時間に応じて課金されることも多いですが、勉強や検証であれば常にサービス稼働している必要はないので、停止しておくことで利用料を最小限に抑えることができます。

最後に記載しているインフラエンジニアの方がやっていたような、簡単な検証のために環境をつくる範囲であれば2~3日試しても100円行くか行かないかとかのレベルとのことですので、月1〜2回それくらい使うくらいであれば、毎年のクレジットで十分無料の範囲内で使用できることになります。

AWSでLinux環境を作ってみる

それでは実際にAWSでLinux環境を作る手順をご紹介します。やることは2つだけです。

  • AWSアカウントを作る
  • EC2インスタンスの作成を行う

簡単ですよね?

EC2というのはAWS上で仮想サーバを提供しているサービスです。

アカウントの作成は指示されたとおりに入力していくだけなので、割愛します。

EC2インスタンスの作成ですが、こちらも基本的には指定された項目を入力していくだけですが、いくつか補足をしておきます。

こちらがEC2インスタンスのサービス画面です。

ここでは右上のリージョン(環境が作成される実際のデータセンター)の場所を変えておきます。ネットワークの速度に影響が出るので、日本国内からであれば東京もしくは大阪の近いほうを選択すればよいです。

その後、新しい環境を作成するには「インスタンスの起動」をクリックします。

そうすると、インスタンスの設定画面に移ります。各入力項目を補足していきます。

名前については適当に好きなものをつけてもらえればよいです。

AMIの選択です。AMIとはAWSが標準で提供しているEC2のテンプレートです。テンプレートから選ぶことで、細かい内容を気にせずに簡単にOSを選ぶ程度で環境を作ることができます。今回はLinux環境を作るので「Amazon Linux」を選択しました。

インスタンスのタイプです。12ヵ月の無料枠内で使える「t2.micro」を選択します。勉強や検証程度であれば十分かと思います。無料期間が終わったら下位の「t2.nano」など、より利用料金がかからないものを利用してもよいと思います。

キーペアの設定では安全にアクセスするためのキーを設定します。初回は「新しいキーペアの作成」を選択してください。

2回目以降新たにEC2インスタンスを作る場合は、作成済みのキーを使えるので、使用したいキーの名前を選択することもできます。

キーペアの作成ですが、今回はTeraTermというソフトで接続する場合を紹介します。キーペア名は適当でよいです。キーペアのタイプは「RSA」でファイル形式は「.pem」を選択して、キーペアの作成をしてください。

そうすると拡張子「pem」のファイルのダウンロード画面になりますが、そのファイルがLinux環境への接続時のキーになるので、自分のPCのどこかに保存しておきます。

ネットワーク設定についても初回は「セキュリティグループを作成する」を選択してください。名前はデフォルトで勝手につきますが(画面の例だと「launch-wizard-1」)右上の編集ボタンから変更もできます。

2回目以降新たにEC2インスタンスを作る場合は、作成済みのセキュリティグループを選べます。

ストレージ設定は特に容量にこだわらなければ、デフォルトのままでよいと思います。

ここまで入力したら最後に「インスタンスを起動」というボタンを押します。これで、EC2の環境が作成されます。

作成が完了したら次のようなEC2ダッシュボードに遷移できます。インスタンスの状態が「実行中」になっていたら成功です。

最後にEC2インスタンスの停止と終了について補足しておきます。「インスタンスの状態」から変更できます。

「停止」はサーバーの電源オフに該当します。停止をしている間は利用料がかかりません。「終了」はインスタンス自体の削除に該当します。

なので、先程、使用していない間は利用料節約のために「停止」を推奨していましたが、もう使わない環境は「終了」で構いません。ただその際には環境自体が削除されてしまうので、実行する際はその違いにご注意下さい。

「停止」するとインスタンスの状態が「停止済み」に変更になっているのが確認できます。使用が終わったら「停止」または「終了」するのを忘れないようにしてください。

Linux環境に接続して使ってみる

実際にEC2 インスタンスが起動できたら、Linux環境に接続して使用することが出来ます。

使用方法も簡単です。やることは2つだけです。

  • TeraTermのインストールしてダウンロード
  • pemを使って接続

接続する方法はいくつかあるのですが、今回はTeraTermでの接続方法をご紹介します。以下からTeraTermをダウンロードしてインストールして起動します。

https://ja.osdn.net/projects/ttssh2/

起動して、新しい接続を選択すると次の画面が立ち上がります。

IPアドレスの表示場所

ここのホスト名には先ほど作成したEC2インスタンスのパブリックIPアドレスを入力します。サービスにはSSH接続が選択されていれば問題ないので、OKで進みます。

セキュリティ警告が出ても正しいIPアドレスが入力されていれば問題ないので続行を押します。

SSH認証の画面ではユーザーには「ec2-user」を入力します。これは「Amazon Linux」を選択した場合に使えるデフォルトのユーザーです。

Linux インスタンスのシステムユーザーを管理する - Amazon Elastic Compute Cloud
Linux インスタンスで、ユーザーを追加または削除します。

認証方式には先ほどEC2環境作成時に作ったキーを使いますので、「RSA鍵を使う」を選択して「秘密鍵」のところにダウンロード済みのキー(pemファイル)を指定してOKを押します。

無事に接続できた場合にはこのような画面になります。あとはここからコマンドを打ってLinux環境を使用することができます。使用が終わったら忘れずに「停止」しておきましょう。

みなさんも試してみてください!

以上です!一番ハードルが高いのはAWSのアカウント作成かもしれませんね。是非興味がある方は試してみてください。

ちなみにそのインフラエンジニアの方がその時やっていたのは、業務アプリで使う外部APIの呼び出しの実装というインフラの領域とは言い難い作業でした。そのAPIでは指定されたロジックで署名を生成して送る必要があったのですが、その署名生成のサンプルプログラムがPHPで提供されていたので、Shellでの実装に置き換えようとしていました。Shellで実装したプログラムの結果を検証するために、AWSにLinuxサーバーをたててPHPのプログラムを実行して値を出すということをやっていました。

その値が一致していなかったので、少し客観的に見てどこが悪いかわかれば教えてほしいということで私が呼ばれたのですが、分からないなりにペアプログラミングのような形で見てたら、ほぼ自己解決されていました。結局問題になっていた部分は、署名生成時の途中にあった処理hmacでのハッシュ化する際に、PHPのサンプルプログラムではバイナリの結果を取得してましたが、Shellのプログラムでは16進数で結果を取得していた違いによるものだったようです。

コメント

タイトルとURLをコピーしました