AWSとはなんですか?
AWSとは
AWS(Amazon Web Services)は、Amazonが提供するクラウドコンピューティングサービスの総称です。企業や個人がインターネットを通じて、サーバー、データベース、ストレージ、ネットワーキングなどのITリソースを必要に応じて利用できるようにします。
これによって物理的なサーバーの購入や維持の必要がなくなり、コスト削減やスケーラビリティが向上します。今やAWSは世界中で使われており、Webアプリケーションのホスティング、データ解析、AI/機械学習の開発などさまざまな用途で利用されています。
次は仮想サーバーを提供するサービスEC2について解説します。
EC2とは
EC2(Elastic Compute Cloud)は、クラウド上で仮想サーバーを簡単に利用できるサービスです。通常の物理サーバーを購入・設置する代わりに、AWSのデータセンター内にある仮想サーバー(インスタンス)をインターネットを通じて使うことができます。
おもな特徴は以下の通りです
必要な時間だけインスタンスを立ち上げて使用し、不要になれば停止・削除できるので、無駄なコストを抑えることができます。
インスタンスの種類(CPU、メモリ、ストレージなど)を自由に選ぶことができ、用途に合わせたパフォーマンスを確保できます。小規模なウェブサイトから大規模なビッグデータ処理まで幅広く対応。
突然のトラフィック増加に応じて、インスタンスを自動で増やしたり減らしたりできるオートスケーリング機能も備えています。
AWSは世界中にデータセンターがあるため、ユーザーに最も近い場所でインスタンスを立ち上げ、遅延を最小限にすることができます。
EC2はウェブサイトのホスティング、アプリケーション開発、データ分析など、様々な用途に使用されるクラウドコンピューティングの中心的なサービスです。
準備がたいへんそうですね。
早ければ5分くらいでできてしまいますよ。まずは設定をどんどんすすめていきましょう。
アカウントの作成
AWSを利用するにはアカウントが必要です。下記URLをクリックして登録をすすめましょう。
Amazon Web Services – ホーム(amazon.com)
まず、「サインアップ」をクリック!
必要事項を入力していきます。
プランを選択します。最初はベーシックサポートを選択します。
コンソール画面に移動します。
ルートユーザーでログインします。
これでアカウント作成が終了しましたので、いよいよEC2の準備をしましょう!
EC2の設定
「サービス」を選択します。
「コンピューティング」の「EC2」を選択します。
キーペアの作成
AWS EC2のキーペア(Key Pair)は、SSH(Secure Shell)プロトコルを利用してEC2インスタンスに安全にアクセスするための認証情報です。キーペアは「公開鍵」と「秘密鍵」のペアで構成されており、これによってパスワードを使わずに暗号化されたセキュアなリモートログインを実現します。
サーバー(EC2インスタンス)に保存され、誰でも見ることができます。AWSがこの公開鍵をEC2インスタンスに設定します。
あなたのローカルマシンに保存され、アクセスする際に必要です。公開鍵と秘密鍵はセットで機能し、秘密鍵がないとインスタンスにアクセスできません。
「キーペア」をクリック!
「キーペアを作成」をクリック!
「名前」を入力して、「キーペアのタイプ」、「ファイル形式」を選択、キーペアを作成します。
「キーペアを作成」をクリックするとpemファイルがダウンロードされます。あとで使用するのでダウンロードできているか確認しておきましょう。
キーペアが作成できました!
RSAとED25519
RSAとED25519はどちらも暗号化で使われる鍵の方式ですが、RSAは古くから使われているため互換性が高く、幅広いシステムでサポートされていますが、2048ビット以上の鍵が必要で処理が重くなりがちです。一方ED25519は新しい技術によって256ビットの鍵でも高いセキュリティを提供し、処理も高速ですが一部の古いシステムではサポートされていないことがあります。
プライベートキーの管理
プライベートキー(.pemファイル)は、セキュリティ上非常に重要なファイルです。下記で紹介するように他人からのアクセスを制限して漏洩防止に十分注意する必要があります。
またプライベートキーは作成時に一度しかダウンロードできないため、紛失すると既存の方法でのインスタンスへのアクセス手段を失います。新しいキーペアでの再設定などが必要になりますので誤って削除したりしないよう注意して下さい。
EC2のインスタンスを作成する
EC2のインスタンスを作成する前にダウンロードしたpemファイルを以下のディレクトリに移動しておきます。YourUsername にはあなたのパソコンのユーザー名が入ります。
- Windows C:\Users\YourUsername\.ssh
- Mac /Users/YourUsername/.ssh
.sshディレクトリがない場合は作成しておいてください。
パーミッションを変更する
パーミッションとはファイルやディレクトリに対してどのユーザーがどのような操作を行えるかを決定するアクセス権限で、MacなどのUNIX系システムでは、秘密鍵ファイルのパーミッションを厳格に設定することで他のユーザーからの不正アクセスを防ぐ必要があります。
一方Windowsでは、Windowsのセキュリティ機能により、他のユーザーがファイルやフォルダにアクセスすることは基本的に制限されているためchmodコマンドを使ってパーミッションを変更する必要はありません。
chmod 400 ~/.ssh/my_key.pem
パーミッション400: ファイルのオーナーが読み取りのみ可能で、グループやその他のユーザーはアクセスできない。
インスタンスを起動する
「インスタンスの起動」をクリック!
「名前」には作成するインスタンスの名前を入力、続いてインスタンス作成する際のOSとマシンイメージを選択します。
Amazon Machine Image (AMI)
AMI (Amazon Machine Image) とは、Amazon Web Services (AWS) において、EC2インスタンスを起動するための仮想マシンのテンプレートです。
AMIには、オペレーティングシステム (OS) やWebサーバー(Apache、NGINX)、データベース(MySQL、PostgreSQL)などのアプリケーション設定、ソフトウェア、そして必要なストレージ設定が含まれていて、ユーザーはAMIを使用して効率的にインスタンスを起動でき、クイックスタート以外にも様々な種類のAMIを選択することができます。
さらにインスタンスタイプとは、AWSで仮想サーバー(インスタンス)の性能や使えるリソース(CPU、メモリ、ストレージなど)をどれくらい必要かを決める分類です。
インスタンスタイプに無料利用枠の t2.micro を選択し、キーペアを設定します。
HTTPとHTTPSトラフィックを許可にチェックを入れ、「インスタンスを起動」をクリックします。
これでインスタンスを起動させることができました!
続いてインスタンスの一覧を表示させます。
インスタンスの状態が実行中になりましたね。
AWSの料金設定とインスタンスの停止、削除について
AWSの料金体系は主に「従量課金制」で使用した分だけ料金が発生します。例えば、EC2サーバーを1時間稼働させればその1時間分の料金が、S3に1GBのデータを1ヶ月保存すれば1GB・1ヶ月分の料金がかかります。
またAWSは新規ユーザー向けに「無料利用枠」を提供しており、入会後12ヶ月以内に一定の範囲内でサービスを無料で試すことができます。ただし、無料利用枠はサービスごとに異なり、例えば仮想マシンには無料利用枠があってもストレージにはない場合もありますので注意が必要です。
インスタンスを停止すると、インスタンスは動作を中断し、CPUやメモリのリソースは解放されますが、インスタンス内のデータ(EBSボリューム)は保持されます。
停止中のインスタンスには料金は発生しませんが、EBSボリュームなどのストレージ料金は引き続き請求されるため、ストレージの料金を抑えたい場合は不要なボリュームを削除することを検討しましょう。インスタンスを使用しないときは必ず停止して、無駄なリソースの消費を防ぐことが重要です。
インスタンスを終了すると、そのインスタンスは完全に削除され、関連するデータや設定も消去されます。AWSのストレージサービスであるEBSボリュームが削除された場合、インスタンス内のデータは復元できなくなりますので注意が必要です。終了後はインスタンスや削除されたリソースの料金も発生しなくなります。
今度は作成したインスタンスに接続してみましょう。
SSH接続
EC2のインスタンスにアクセスしてサーバー内を操作、設定するためにはSSHを用いて通信を行う必要があります。SSH(Secure Shell)とは、ネットワーク上で安全に他のコンピュータに接続するためのプロトコルで、主にリモートサーバー管理や安全なデータ通信に利用されます。SSHはデータを暗号化し、第三者による盗聴や改ざんを防ぎます。
また、パスワードや公開鍵を使った認証により、不正アクセスを防止します。リモートコマンド実行やファイル転送(SCPやSFTP)、ポートフォワーディングを通じて安全な通信経路を確保します。
SSHはUNIX系オペレーティングシステムで標準的に利用され、多くのサーバー管理者や開発者にとって重要なツールです。使いやすく、強力なセキュリティを提供するため、リモート管理やネットワークセキュリティの分野で広く採用されています。
以前にXserverの記事でSSHについて詳しく書いてあるのでそちらも参考にしてください。
「接続」をクリックします。
「SSHクライアント」をクリックします。
「ここ!」の部分をクリックするとSSH接続するコマンドをコピーすることができます。
コピーしたコマンドをWindowsの人はコマンドプロンプトかPowerShell、Macの場合はターミナルに貼り付けます。下記のコマンドは例ですのでパスなどを実際のものと置き換えてください。
ssh -i "/path/to/private-key.pem" username@your-ec2-instance-public-dns
-i オプションはSSHで使用するプライベートキーを指定するためのもので、/path/to/private-key.pemはEC2インスタンスの作成時にダウンロードしたプライベートキーとパスを表しています。
SSHコマンドの実行は、.sshのディレクトリに移動してから実行するか、パスを正しく設定してから実行して下さい。また、SSH接続を実行する場合はこのコマンドを使ってどのターミナルでも実行できますが、WindowsとMacなどではファイルパスの形式が異なりますので注意が必要です。
usernameは接続するユーザー名(例:ubuntu、ec2-userなど。ここではデフォルトのubuntu)を表し、your-ec2-instance-public-dnsの部分は接続先のEC2インスタンスのパブリックDNSまたはIPアドレスを指定します。デフォルトではパブリックDNSが自動で設定されます。
SSH接続するコマンドを簡略化する
サーバー内を操作する際、毎回SSH接続をするたびに長いコマンドを入力したり、コピペしたりするにも手間がかかるので、環境変数を利用したり、configファイルを作成したりしてコマンドを簡略化して接続を容易にすることができます。
SSHのconfigファイルを「.ssh」ディレクトリ内に作成することで、接続先サーバーに関する設定を簡素化し、コマンドを短くすることができます。
Host awsserver
HostName your-ec2-instance-public-dns
User username
IdentityFile /path/to/private-key.pem
もし、ここでの例のようにホスト名を awsserver としたら下記のコマンドでSSH接続することができます。
ssh awsserver
ただ注意点として、コマンドを実行するコマンドラインツールに合わせてパスを設定しないとエラーになりますのでconfigファイルもそれに合わせたパスの形式で記載して下さい。
また、もしエラーが出てSSH接続ができない場合、原因究明のため下記のコマンドを打つことによって、どのステップで問題が起きているかのデバック情報をターミナルに表示させることができます。
ssh -vvv awsserver
また、一度インスタンスを停止するとパブリックDNSまたはIPアドレスが変更されてしまいますのでせっかく設定したconfigファイルが使えなくなってしまいます。これを回避するのにはAWSで使用する静的なIPアドレスである Elastic IP を活用します。
Elastic IPの取得
ダッシュボードから入って「Elastic IP」を選択します。
「 Elastic IP アドレスを割り当てる」をクリック!
そのまま「割り当て」をクリックします。
「Elastic IP アドレスの関連付け」をクリックします。
インスタンス、インスタンスID、プライベートIPアドレスを確認して、「関連付ける」をクリック!
Elastic IP が取得できました!
Elastic IP を削除する場合
もし、Elastic IP を削除したい場合は、ダッシュボードから「Elastic IP」➡「アクション」のドロップダウンリストから「Elastic IPアドレスの関連付けの解除」➡「Elastic IPアドレスの解放」で削除することができます。
Elastic IPの料金
Elastic IP を取得すると使用条件によっては料金が掛かってしまいます。無駄に Elastic IP を作成したり、使わないのに保持したりしないよう適切に使用することが重要です。
- Elastic IP アドレスがEC2インスタンスに関連付けされていない。
- Elastic IP アドレスが関連付けされているインスタンスが停止している。
- EC2インスタンスに複数の Elastic IP アドレスが関連付けされている。
Elastic IP が取得できればインスタンスを停止してから再起動してもconfigファイルを使って簡単なコマンドでSSH接続できるようになります。
やり方はconfigファイルの HostName の部分に Elastic IPアドレスを貼り付けるだけです。
PowerShellでSSH接続できました!
ちなみにコードエディタの VSCode や Cursor でSSH接続してファイルを編集できるようにするにはconfigファイルの作成ができていれば簡単に接続することができます。
拡張機能の Remote-SSH をインストールして下記のボタンをクリックします。それから、ホストに接続して作成したconfigファイルのホスト名を選択するだけです。
おわりに
今回は、クラウドサーバーの利用を始めるための基本的な手順として、アカウント作成からインスタンスの起動、そしてSSH接続までを確認しました。サーバーの構築はこれからになりますが、最初の重要なステップであるSSH接続を成功することができましたね。次は実際のサーバー構築に進み、さらに一歩前進していきましょう。
最後までご覧頂きありがとうございました。